Index: trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.Designer.cs	(revision 2974)
+++ 	(revision )
@@ -1,79 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Data.Views {
-  partial class BoolDataView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing) {
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.valueCheckBox = new System.Windows.Forms.CheckBox();
-      this.SuspendLayout();
-      // 
-      // valueCheckBox
-      // 
-      this.valueCheckBox.AutoSize = true;
-      this.valueCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
-      this.valueCheckBox.Location = new System.Drawing.Point(3, 0);
-      this.valueCheckBox.Name = "valueCheckBox";
-      this.valueCheckBox.Size = new System.Drawing.Size(56, 17);
-      this.valueCheckBox.TabIndex = 0;
-      this.valueCheckBox.Text = "&Value:";
-      this.valueCheckBox.UseVisualStyleBackColor = true;
-      this.valueCheckBox.CheckedChanged += new System.EventHandler(this.valueCheckBox_CheckedChanged);
-      // 
-      // BoolDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.valueCheckBox);
-      this.Name = "BoolDataView";
-      this.Size = new System.Drawing.Size(71, 27);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.CheckBox valueCheckBox;
-
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.cs	(revision 2974)
+++ 	(revision )
@@ -1,79 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data.Views {
-  [View("BoolData View")]
-  [Content(typeof(BoolData), true)]
-  public partial class BoolDataView : ItemView {
-    public new BoolData Content {
-      get { return (BoolData)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public BoolDataView() {
-      InitializeComponent();
-      Caption = "BoolData View";
-    }
-    public BoolDataView(BoolData content)
-      : this() {
-      Content = content;
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
-      base.DeregisterContentEvents();
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.ValueChanged += new EventHandler(Content_ValueChanged);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        Caption = "BoolData View";
-        valueCheckBox.Checked = false;
-        valueCheckBox.Enabled = false;
-      } else {
-        Caption = Content.ToString() + " (" + Content.GetType().Name + ")";
-        valueCheckBox.Checked = Content.Value;
-        valueCheckBox.Enabled = true;
-      }
-    }
-
-    private void Content_ValueChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ValueChanged), sender, e);
-      else
-        valueCheckBox.Checked = Content.Value;
-    }
-
-    private void valueCheckBox_CheckedChanged(object sender, EventArgs e) {
-      Content.Value = valueCheckBox.Checked;
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/BoolValueView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/BoolValueView.Designer.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/BoolValueView.Designer.cs	(revision 3047)
@@ -0,0 +1,79 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Data.Views {
+  partial class BoolDataView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.valueCheckBox = new System.Windows.Forms.CheckBox();
+      this.SuspendLayout();
+      // 
+      // valueCheckBox
+      // 
+      this.valueCheckBox.AutoSize = true;
+      this.valueCheckBox.CheckAlign = System.Drawing.ContentAlignment.MiddleRight;
+      this.valueCheckBox.Location = new System.Drawing.Point(3, 0);
+      this.valueCheckBox.Name = "valueCheckBox";
+      this.valueCheckBox.Size = new System.Drawing.Size(56, 17);
+      this.valueCheckBox.TabIndex = 0;
+      this.valueCheckBox.Text = "&Value:";
+      this.valueCheckBox.UseVisualStyleBackColor = true;
+      this.valueCheckBox.CheckedChanged += new System.EventHandler(this.valueCheckBox_CheckedChanged);
+      // 
+      // BoolDataView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.valueCheckBox);
+      this.Name = "BoolDataView";
+      this.Size = new System.Drawing.Size(71, 27);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.CheckBox valueCheckBox;
+
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/BoolValueView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/BoolValueView.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/BoolValueView.cs	(revision 3047)
@@ -0,0 +1,79 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Data.Views {
+  [View("BoolData View")]
+  [Content(typeof(BoolData), true)]
+  public partial class BoolDataView : ItemView {
+    public new BoolData Content {
+      get { return (BoolData)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public BoolDataView() {
+      InitializeComponent();
+      Caption = "BoolData View";
+    }
+    public BoolDataView(BoolData content)
+      : this() {
+      Content = content;
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
+      base.DeregisterContentEvents();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ValueChanged += new EventHandler(Content_ValueChanged);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        Caption = "BoolData View";
+        valueCheckBox.Checked = false;
+        valueCheckBox.Enabled = false;
+      } else {
+        Caption = Content.ToString() + " (" + Content.GetType().Name + ")";
+        valueCheckBox.Checked = Content.Value;
+        valueCheckBox.Enabled = true;
+      }
+    }
+
+    private void Content_ValueChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ValueChanged), sender, e);
+      else
+        valueCheckBox.Checked = Content.Value;
+    }
+
+    private void valueCheckBox_CheckedChanged(object sender, EventArgs e) {
+      Content.Value = valueCheckBox.Checked;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonDataView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonDataView.Designer.cs	(revision 2974)
+++ 	(revision )
@@ -1,92 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Data.Views {
-  partial class ComparisonDataView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing) {
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.valueLabel = new System.Windows.Forms.Label();
-      this.valueComboBox = new System.Windows.Forms.ComboBox();
-      this.SuspendLayout();
-      // 
-      // valueLabel
-      // 
-      this.valueLabel.AutoSize = true;
-      this.valueLabel.Location = new System.Drawing.Point(3, 3);
-      this.valueLabel.Name = "valueLabel";
-      this.valueLabel.Size = new System.Drawing.Size(37, 13);
-      this.valueLabel.TabIndex = 0;
-      this.valueLabel.Text = "&Value:";
-      // 
-      // valueComboBox
-      // 
-      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
-      this.valueComboBox.Enabled = false;
-      this.valueComboBox.FormattingEnabled = true;
-      this.valueComboBox.Location = new System.Drawing.Point(46, 0);
-      this.valueComboBox.Name = "valueComboBox";
-      this.valueComboBox.Size = new System.Drawing.Size(219, 21);
-      this.valueComboBox.TabIndex = 1;
-      this.valueComboBox.SelectedIndexChanged += new System.EventHandler(this.valueComboBox_SelectedIndexChanged);
-      // 
-      // ComparisonDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.valueComboBox);
-      this.Controls.Add(this.valueLabel);
-      this.Name = "ComparisonDataView";
-      this.Size = new System.Drawing.Size(265, 29);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Label valueLabel;
-    private System.Windows.Forms.ComboBox valueComboBox;
-
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonDataView.cs	(revision 2974)
+++ 	(revision )
@@ -1,79 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data.Views {
-  [View("ComparisonData View")]
-  [Content(typeof(ComparisonData), true)]
-  public partial class ComparisonDataView : ItemView {
-    public new ComparisonData Content {
-      get { return (ComparisonData)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public ComparisonDataView() {
-      InitializeComponent();
-      Caption = "ComparisonData View";
-      valueComboBox.DataSource = Enum.GetValues(typeof(Comparison));
-    }
-    public ComparisonDataView(ComparisonData content)
-      : this() {
-      Content = content;
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
-      base.DeregisterContentEvents();
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.ValueChanged += new EventHandler(Content_ValueChanged);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        Caption = "ComparisonData View";
-        valueComboBox.Enabled = false;
-      } else {
-        Caption = Content.ToString() + " (" + Content.GetType().Name + ")";
-        valueComboBox.SelectedItem = Content.Value;
-        valueComboBox.Enabled = true;
-      }
-    }
-
-    private void Content_ValueChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ValueChanged), sender, e);
-      else
-        valueComboBox.SelectedItem = Content.Value;
-    }
-
-    private void valueComboBox_SelectedIndexChanged(object sender, EventArgs e) {
-      if (Content != null) Content.Value = (Comparison)valueComboBox.SelectedItem;
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonView.Designer.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonView.Designer.cs	(revision 3047)
@@ -0,0 +1,92 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Data.Views {
+  partial class ComparisonDataView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.valueLabel = new System.Windows.Forms.Label();
+      this.valueComboBox = new System.Windows.Forms.ComboBox();
+      this.SuspendLayout();
+      // 
+      // valueLabel
+      // 
+      this.valueLabel.AutoSize = true;
+      this.valueLabel.Location = new System.Drawing.Point(3, 3);
+      this.valueLabel.Name = "valueLabel";
+      this.valueLabel.Size = new System.Drawing.Size(37, 13);
+      this.valueLabel.TabIndex = 0;
+      this.valueLabel.Text = "&Value:";
+      // 
+      // valueComboBox
+      // 
+      this.valueComboBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
+      this.valueComboBox.Enabled = false;
+      this.valueComboBox.FormattingEnabled = true;
+      this.valueComboBox.Location = new System.Drawing.Point(46, 0);
+      this.valueComboBox.Name = "valueComboBox";
+      this.valueComboBox.Size = new System.Drawing.Size(219, 21);
+      this.valueComboBox.TabIndex = 1;
+      this.valueComboBox.SelectedIndexChanged += new System.EventHandler(this.valueComboBox_SelectedIndexChanged);
+      // 
+      // ComparisonDataView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.valueComboBox);
+      this.Controls.Add(this.valueLabel);
+      this.Name = "ComparisonDataView";
+      this.Size = new System.Drawing.Size(265, 29);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label valueLabel;
+    private System.Windows.Forms.ComboBox valueComboBox;
+
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonView.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/ComparisonView.cs	(revision 3047)
@@ -0,0 +1,79 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Data.Views {
+  [View("ComparisonData View")]
+  [Content(typeof(ComparisonData), true)]
+  public partial class ComparisonDataView : ItemView {
+    public new ComparisonData Content {
+      get { return (ComparisonData)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public ComparisonDataView() {
+      InitializeComponent();
+      Caption = "ComparisonData View";
+      valueComboBox.DataSource = Enum.GetValues(typeof(Comparison));
+    }
+    public ComparisonDataView(ComparisonData content)
+      : this() {
+      Content = content;
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
+      base.DeregisterContentEvents();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ValueChanged += new EventHandler(Content_ValueChanged);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        Caption = "ComparisonData View";
+        valueComboBox.Enabled = false;
+      } else {
+        Caption = Content.ToString() + " (" + Content.GetType().Name + ")";
+        valueComboBox.SelectedItem = Content.Value;
+        valueComboBox.Enabled = true;
+      }
+    }
+
+    private void Content_ValueChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ValueChanged), sender, e);
+      else
+        valueComboBox.SelectedItem = Content.Value;
+    }
+
+    private void valueComboBox_SelectedIndexChanged(object sender, EventArgs e) {
+      if (Content != null) Content.Value = (Comparison)valueComboBox.SelectedItem;
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 2974)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 3047)
@@ -85,36 +85,36 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="BoolDataView.cs">
+    <None Include="HeuristicLabDataViewsPlugin.cs.frame" />
+    <Compile Include="BoolValueView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="BoolDataView.Designer.cs">
-      <DependentUpon>BoolDataView.cs</DependentUpon>
+    <Compile Include="BoolValueView.Designer.cs">
+      <DependentUpon>BoolValueView.cs</DependentUpon>
     </Compile>
-    <None Include="HeuristicLabDataViewsPlugin.cs.frame" />
-    <Compile Include="ComparisonDataView.cs">
+    <Compile Include="ComparisonView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ComparisonDataView.Designer.cs">
-      <DependentUpon>ComparisonDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="StringConvertibleArrayDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="StringConvertibleArrayDataView.Designer.cs">
-      <DependentUpon>StringConvertibleArrayDataView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="StringConvertibleDataView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="StringConvertibleDataView.Designer.cs">
-      <DependentUpon>StringConvertibleDataView.cs</DependentUpon>
+    <Compile Include="ComparisonView.Designer.cs">
+      <DependentUpon>ComparisonView.cs</DependentUpon>
     </Compile>
     <Compile Include="HeuristicLabDataViewsPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
-    <Compile Include="StringConvertibleMatrixDataView.cs">
+    <Compile Include="StringConvertibleArrayView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="StringConvertibleMatrixDataView.Designer.cs">
-      <DependentUpon>StringConvertibleMatrixDataView.cs</DependentUpon>
+    <Compile Include="StringConvertibleArrayView.Designer.cs">
+      <DependentUpon>StringConvertibleArrayView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="StringConvertibleMatrixView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="StringConvertibleMatrixView.Designer.cs">
+      <DependentUpon>StringConvertibleMatrixView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="StringConvertibleValueView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="StringConvertibleValueView.Designer.cs">
+      <DependentUpon>StringConvertibleValueView.cs</DependentUpon>
     </Compile>
   </ItemGroup>
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayDataView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayDataView.Designer.cs	(revision 2974)
+++ 	(revision )
@@ -1,124 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Data.Views {
-  partial class StringConvertibleArrayDataView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing) {
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.lengthLabel = new System.Windows.Forms.Label();
-      this.lengthTextBox = new System.Windows.Forms.TextBox();
-      this.dataGridView = new System.Windows.Forms.DataGridView();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // lengthLabel
-      // 
-      this.lengthLabel.AutoSize = true;
-      this.lengthLabel.Location = new System.Drawing.Point(3, 3);
-      this.lengthLabel.Name = "lengthLabel";
-      this.lengthLabel.Size = new System.Drawing.Size(43, 13);
-      this.lengthLabel.TabIndex = 0;
-      this.lengthLabel.Text = "&Length:";
-      // 
-      // lengthTextBox
-      // 
-      this.lengthTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.lengthTextBox.Location = new System.Drawing.Point(52, 0);
-      this.lengthTextBox.Name = "lengthTextBox";
-      this.lengthTextBox.Size = new System.Drawing.Size(372, 20);
-      this.lengthTextBox.TabIndex = 1;
-      this.lengthTextBox.Validated += new System.EventHandler(this.lengthTextBox_Validated);
-      this.lengthTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lengthTextBox_KeyDown);
-      this.lengthTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.lengthTextBox_Validating);
-      // 
-      // dataGridView
-      // 
-      this.dataGridView.AllowUserToAddRows = false;
-      this.dataGridView.AllowUserToDeleteRows = false;
-      this.dataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataGridView.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
-      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-      this.dataGridView.ColumnHeadersVisible = false;
-      this.dataGridView.Location = new System.Drawing.Point(0, 26);
-      this.dataGridView.Name = "dataGridView";
-      this.dataGridView.Size = new System.Drawing.Size(424, 378);
-      this.dataGridView.TabIndex = 2;
-      this.dataGridView.CellParsing += new System.Windows.Forms.DataGridViewCellParsingEventHandler(this.dataGridView_CellParsing);
-      this.dataGridView.CellValidating += new System.Windows.Forms.DataGridViewCellValidatingEventHandler(this.dataGridView_CellValidating);
-      this.dataGridView.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellEndEdit);
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
-      // 
-      // StringConvertibleArrayDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataGridView);
-      this.Controls.Add(this.lengthTextBox);
-      this.Controls.Add(this.lengthLabel);
-      this.Name = "StringConvertibleArrayDataView";
-      this.Size = new System.Drawing.Size(424, 404);
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Label lengthLabel;
-    private System.Windows.Forms.TextBox lengthTextBox;
-    private System.Windows.Forms.DataGridView dataGridView;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayDataView.cs	(revision 2974)
+++ 	(revision )
@@ -1,152 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms;
-using HeuristicLab.Common;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Data.Views {
-  [View("StringConvertibleArrayData View")]
-  [Content(typeof(IStringConvertibleArrayData), true)]
-  public partial class StringConvertibleArrayDataView : ContentView {
-    public new IStringConvertibleArrayData Content {
-      get { return (IStringConvertibleArrayData)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public StringConvertibleArrayDataView() {
-      InitializeComponent();
-      Caption = "StringConvertibleArrayData View";
-      errorProvider.SetIconAlignment(lengthTextBox, ErrorIconAlignment.MiddleLeft);
-      errorProvider.SetIconPadding(lengthTextBox, 2);
-    }
-    public StringConvertibleArrayDataView(IStringConvertibleArrayData content)
-      : this() {
-      Content = content;
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.ItemChanged -= new EventHandler<EventArgs<int>>(Content_ItemChanged);
-      Content.Reset -= new EventHandler(Content_Reset);
-      base.DeregisterContentEvents();
-    }
-
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.ItemChanged += new EventHandler<EventArgs<int>>(Content_ItemChanged);
-      Content.Reset += new EventHandler(Content_Reset);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        Caption = "StringConvertibleArrayData View";
-        lengthTextBox.Text = "";
-        lengthTextBox.Enabled = false;
-        dataGridView.Rows.Clear();
-        dataGridView.Columns.Clear();
-        dataGridView.Enabled = false;
-      } else {
-        Caption = "StringConvertibleArrayData (" + Content.GetType().Name + ")";
-        UpdateData();
-      }
-    }
-
-    private void UpdateData() {
-      lengthTextBox.Text = Content.Length.ToString();
-      lengthTextBox.Enabled = true;
-      dataGridView.Rows.Clear();
-      dataGridView.Columns.Clear();
-      if (Content.Length > 0) {
-        dataGridView.ColumnCount++;
-        dataGridView.Columns[0].FillWeight = float.Epsilon;  // sum of all fill weights must not be larger than 65535
-        dataGridView.RowCount = Content.Length;
-        for (int i = 0; i < Content.Length; i++) {
-          dataGridView.Rows[i].Cells[0].Value = Content.GetValue(i);
-        }
-        dataGridView.Columns[0].Width = dataGridView.Columns[0].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);
-      }
-      dataGridView.Enabled = true;
-    }
-
-    private void Content_ItemChanged(object sender, EventArgs<int> e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler<EventArgs<int>>(Content_ItemChanged), sender, e);
-      else {
-        dataGridView.Rows[e.Value].Cells[0].Value = Content.GetValue(e.Value);
-        Size size = dataGridView.Rows[e.Value].Cells[0].PreferredSize;
-        dataGridView.Columns[0].Width = Math.Max(dataGridView.Columns[0].Width, size.Width);
-      }
-    }
-    private void Content_Reset(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_Reset), sender, e);
-      else
-        UpdateData();
-    }
-
-    #region TextBox Events
-    private void lengthTextBox_Validating(object sender, CancelEventArgs e) {
-      int i = 0;
-      if (!int.TryParse(lengthTextBox.Text, out i) || (i < 0)) {
-        e.Cancel = true;
-        errorProvider.SetError(lengthTextBox, "Invalid Array Length (Valid Values: Positive Integers Larger or Equal to 0)");
-        lengthTextBox.SelectAll();
-      }
-    }
-    private void lengthTextBox_Validated(object sender, EventArgs e) {
-      Content.Length = int.Parse(lengthTextBox.Text);
-      errorProvider.SetError(lengthTextBox, string.Empty);
-    }
-    private void lengthTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
-        lengthLabel.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        lengthTextBox.Text = Content.Length.ToString();
-        lengthLabel.Focus();  // set focus on label to validate data
-      }
-    }
-    #endregion
-
-    #region DataGridView Events
-    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
-      string errorMessage;
-      if (!Content.Validate(e.FormattedValue.ToString(), out errorMessage)) {
-        e.Cancel = true;
-        dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
-      }
-    }
-    private void dataGridView_CellParsing(object sender, DataGridViewCellParsingEventArgs e) {
-      string value = e.Value.ToString();
-      e.ParsingApplied = Content.SetValue(value, e.RowIndex);
-      if (e.ParsingApplied) e.Value = Content.GetValue(e.RowIndex);
-    }
-    private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
-      dataGridView.Rows[e.RowIndex].ErrorText = string.Empty;
-    }
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.Designer.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.Designer.cs	(revision 3047)
@@ -0,0 +1,124 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Data.Views {
+  partial class StringConvertibleArrayDataView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.lengthLabel = new System.Windows.Forms.Label();
+      this.lengthTextBox = new System.Windows.Forms.TextBox();
+      this.dataGridView = new System.Windows.Forms.DataGridView();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // lengthLabel
+      // 
+      this.lengthLabel.AutoSize = true;
+      this.lengthLabel.Location = new System.Drawing.Point(3, 3);
+      this.lengthLabel.Name = "lengthLabel";
+      this.lengthLabel.Size = new System.Drawing.Size(43, 13);
+      this.lengthLabel.TabIndex = 0;
+      this.lengthLabel.Text = "&Length:";
+      // 
+      // lengthTextBox
+      // 
+      this.lengthTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.lengthTextBox.Location = new System.Drawing.Point(52, 0);
+      this.lengthTextBox.Name = "lengthTextBox";
+      this.lengthTextBox.Size = new System.Drawing.Size(372, 20);
+      this.lengthTextBox.TabIndex = 1;
+      this.lengthTextBox.Validated += new System.EventHandler(this.lengthTextBox_Validated);
+      this.lengthTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lengthTextBox_KeyDown);
+      this.lengthTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.lengthTextBox_Validating);
+      // 
+      // dataGridView
+      // 
+      this.dataGridView.AllowUserToAddRows = false;
+      this.dataGridView.AllowUserToDeleteRows = false;
+      this.dataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.dataGridView.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
+      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+      this.dataGridView.ColumnHeadersVisible = false;
+      this.dataGridView.Location = new System.Drawing.Point(0, 26);
+      this.dataGridView.Name = "dataGridView";
+      this.dataGridView.Size = new System.Drawing.Size(424, 378);
+      this.dataGridView.TabIndex = 2;
+      this.dataGridView.CellParsing += new System.Windows.Forms.DataGridViewCellParsingEventHandler(this.dataGridView_CellParsing);
+      this.dataGridView.CellValidating += new System.Windows.Forms.DataGridViewCellValidatingEventHandler(this.dataGridView_CellValidating);
+      this.dataGridView.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellEndEdit);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // StringConvertibleArrayDataView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.dataGridView);
+      this.Controls.Add(this.lengthTextBox);
+      this.Controls.Add(this.lengthLabel);
+      this.Name = "StringConvertibleArrayDataView";
+      this.Size = new System.Drawing.Size(424, 404);
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label lengthLabel;
+    private System.Windows.Forms.TextBox lengthTextBox;
+    private System.Windows.Forms.DataGridView dataGridView;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleArrayView.cs	(revision 3047)
@@ -0,0 +1,152 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+using HeuristicLab.Common;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Data.Views {
+  [View("StringConvertibleArrayData View")]
+  [Content(typeof(IStringConvertibleArrayData), true)]
+  public partial class StringConvertibleArrayDataView : ContentView {
+    public new IStringConvertibleArrayData Content {
+      get { return (IStringConvertibleArrayData)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public StringConvertibleArrayDataView() {
+      InitializeComponent();
+      Caption = "StringConvertibleArrayData View";
+      errorProvider.SetIconAlignment(lengthTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(lengthTextBox, 2);
+    }
+    public StringConvertibleArrayDataView(IStringConvertibleArrayData content)
+      : this() {
+      Content = content;
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.ItemChanged -= new EventHandler<EventArgs<int>>(Content_ItemChanged);
+      Content.Reset -= new EventHandler(Content_Reset);
+      base.DeregisterContentEvents();
+    }
+
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ItemChanged += new EventHandler<EventArgs<int>>(Content_ItemChanged);
+      Content.Reset += new EventHandler(Content_Reset);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        Caption = "StringConvertibleArrayData View";
+        lengthTextBox.Text = "";
+        lengthTextBox.Enabled = false;
+        dataGridView.Rows.Clear();
+        dataGridView.Columns.Clear();
+        dataGridView.Enabled = false;
+      } else {
+        Caption = "StringConvertibleArrayData (" + Content.GetType().Name + ")";
+        UpdateData();
+      }
+    }
+
+    private void UpdateData() {
+      lengthTextBox.Text = Content.Length.ToString();
+      lengthTextBox.Enabled = true;
+      dataGridView.Rows.Clear();
+      dataGridView.Columns.Clear();
+      if (Content.Length > 0) {
+        dataGridView.ColumnCount++;
+        dataGridView.Columns[0].FillWeight = float.Epsilon;  // sum of all fill weights must not be larger than 65535
+        dataGridView.RowCount = Content.Length;
+        for (int i = 0; i < Content.Length; i++) {
+          dataGridView.Rows[i].Cells[0].Value = Content.GetValue(i);
+        }
+        dataGridView.Columns[0].Width = dataGridView.Columns[0].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);
+      }
+      dataGridView.Enabled = true;
+    }
+
+    private void Content_ItemChanged(object sender, EventArgs<int> e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler<EventArgs<int>>(Content_ItemChanged), sender, e);
+      else {
+        dataGridView.Rows[e.Value].Cells[0].Value = Content.GetValue(e.Value);
+        Size size = dataGridView.Rows[e.Value].Cells[0].PreferredSize;
+        dataGridView.Columns[0].Width = Math.Max(dataGridView.Columns[0].Width, size.Width);
+      }
+    }
+    private void Content_Reset(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Reset), sender, e);
+      else
+        UpdateData();
+    }
+
+    #region TextBox Events
+    private void lengthTextBox_Validating(object sender, CancelEventArgs e) {
+      int i = 0;
+      if (!int.TryParse(lengthTextBox.Text, out i) || (i < 0)) {
+        e.Cancel = true;
+        errorProvider.SetError(lengthTextBox, "Invalid Array Length (Valid Values: Positive Integers Larger or Equal to 0)");
+        lengthTextBox.SelectAll();
+      }
+    }
+    private void lengthTextBox_Validated(object sender, EventArgs e) {
+      Content.Length = int.Parse(lengthTextBox.Text);
+      errorProvider.SetError(lengthTextBox, string.Empty);
+    }
+    private void lengthTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
+        lengthLabel.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        lengthTextBox.Text = Content.Length.ToString();
+        lengthLabel.Focus();  // set focus on label to validate data
+      }
+    }
+    #endregion
+
+    #region DataGridView Events
+    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
+      string errorMessage;
+      if (!Content.Validate(e.FormattedValue.ToString(), out errorMessage)) {
+        e.Cancel = true;
+        dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
+      }
+    }
+    private void dataGridView_CellParsing(object sender, DataGridViewCellParsingEventArgs e) {
+      string value = e.Value.ToString();
+      e.ParsingApplied = Content.SetValue(value, e.RowIndex);
+      if (e.ParsingApplied) e.Value = Content.GetValue(e.RowIndex);
+    }
+    private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
+      dataGridView.Rows[e.RowIndex].ErrorText = string.Empty;
+    }
+    #endregion
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.Designer.cs	(revision 2974)
+++ 	(revision )
@@ -1,100 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Data.Views {
-  partial class StringConvertibleDataView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing) {
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.valueTextBox = new System.Windows.Forms.TextBox();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.valueLabel = new System.Windows.Forms.Label();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // valueTextBox
-      // 
-      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.valueTextBox.Location = new System.Drawing.Point(56, 0);
-      this.valueTextBox.Name = "valueTextBox";
-      this.valueTextBox.Size = new System.Drawing.Size(194, 20);
-      this.valueTextBox.TabIndex = 1;
-      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
-      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
-      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
-      // 
-      // valueLabel
-      // 
-      this.valueLabel.AutoSize = true;
-      this.valueLabel.Location = new System.Drawing.Point(3, 3);
-      this.valueLabel.Name = "valueLabel";
-      this.valueLabel.Size = new System.Drawing.Size(37, 13);
-      this.valueLabel.TabIndex = 0;
-      this.valueLabel.Text = "&Value:";
-      // 
-      // StringConvertibleDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.valueLabel);
-      this.Controls.Add(this.valueTextBox);
-      this.Name = "StringConvertibleDataView";
-      this.Size = new System.Drawing.Size(250, 38);
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox valueTextBox;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.Label valueLabel;
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs	(revision 2974)
+++ 	(revision )
@@ -1,99 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.ComponentModel;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Data.Views {
-  [View("StringConvertibleData View")]
-  [Content(typeof(IStringConvertibleData), true)]
-  public partial class StringConvertibleDataView : ContentView {
-    public new IStringConvertibleData Content {
-      get { return (IStringConvertibleData)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public StringConvertibleDataView() {
-      InitializeComponent();
-      Caption = "StringConvertibleData View";
-      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
-      errorProvider.SetIconPadding(valueTextBox, 2);
-    }
-    public StringConvertibleDataView(IStringConvertibleData content)
-      : this() {
-      Content = content;
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
-      base.DeregisterContentEvents();
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.ValueChanged += new EventHandler(Content_ValueChanged);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        Caption = "StringConvertibleData View";
-        valueTextBox.Text = string.Empty;
-        valueTextBox.Enabled = false;
-      } else {
-        Caption = Content.GetValue() + " (" + Content.GetType().Name + ")";
-        valueTextBox.Text = Content.GetValue();
-        valueTextBox.Enabled = true;
-      }
-    }
-
-    private void Content_ValueChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ValueChanged), sender, e);
-      else
-        valueTextBox.Text = Content.GetValue();
-    }
-
-    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
-        valueLabel.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        valueTextBox.Text = Content.GetValue();
-        valueLabel.Focus();  // set focus on label to validate data
-      }
-    }
-    private void valueTextBox_Validating(object sender, CancelEventArgs e) {
-      string errorMessage;
-      if (!Content.Validate(valueTextBox.Text, out errorMessage)) {
-        e.Cancel = true;
-        errorProvider.SetError(valueTextBox, errorMessage);
-        valueTextBox.SelectAll();
-      }
-    }
-    private void valueTextBox_Validated(object sender, EventArgs e) {
-      Content.SetValue(valueTextBox.Text);
-      errorProvider.SetError(valueTextBox, string.Empty);
-    }
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixDataView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixDataView.Designer.cs	(revision 2974)
+++ 	(revision )
@@ -1,151 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Data.Views {
-  partial class StringConvertibleMatrixDataView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing) {
-        if (components != null) components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.rowsLabel = new System.Windows.Forms.Label();
-      this.rowsTextBox = new System.Windows.Forms.TextBox();
-      this.dataGridView = new System.Windows.Forms.DataGridView();
-      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
-      this.columnsTextBox = new System.Windows.Forms.TextBox();
-      this.columnsLabel = new System.Windows.Forms.Label();
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // rowsLabel
-      // 
-      this.rowsLabel.AutoSize = true;
-      this.rowsLabel.Location = new System.Drawing.Point(3, 3);
-      this.rowsLabel.Name = "rowsLabel";
-      this.rowsLabel.Size = new System.Drawing.Size(37, 13);
-      this.rowsLabel.TabIndex = 0;
-      this.rowsLabel.Text = "&Rows:";
-      // 
-      // rowsTextBox
-      // 
-      this.rowsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.rowsTextBox.Location = new System.Drawing.Point(69, 0);
-      this.rowsTextBox.Name = "rowsTextBox";
-      this.rowsTextBox.Size = new System.Drawing.Size(355, 20);
-      this.rowsTextBox.TabIndex = 1;
-      this.rowsTextBox.Validated += new System.EventHandler(this.rowsTextBox_Validated);
-      this.rowsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.rowsTextBox_KeyDown);
-      this.rowsTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.rowsTextBox_Validating);
-      // 
-      // dataGridView
-      // 
-      this.dataGridView.AllowUserToAddRows = false;
-      this.dataGridView.AllowUserToDeleteRows = false;
-      this.dataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataGridView.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
-      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
-      this.dataGridView.ColumnHeadersVisible = false;
-      this.dataGridView.Location = new System.Drawing.Point(0, 52);
-      this.dataGridView.Name = "dataGridView";
-      this.dataGridView.Size = new System.Drawing.Size(424, 352);
-      this.dataGridView.TabIndex = 4;
-      this.dataGridView.CellParsing += new System.Windows.Forms.DataGridViewCellParsingEventHandler(this.dataGridView_CellParsing);
-      this.dataGridView.CellValidating += new System.Windows.Forms.DataGridViewCellValidatingEventHandler(this.dataGridView_CellValidating);
-      this.dataGridView.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellEndEdit);
-      // 
-      // errorProvider
-      // 
-      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
-      this.errorProvider.ContainerControl = this;
-      // 
-      // columnsTextBox
-      // 
-      this.columnsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.columnsTextBox.Location = new System.Drawing.Point(69, 26);
-      this.columnsTextBox.Name = "columnsTextBox";
-      this.columnsTextBox.Size = new System.Drawing.Size(355, 20);
-      this.columnsTextBox.TabIndex = 3;
-      this.columnsTextBox.Validated += new System.EventHandler(this.columnsTextBox_Validated);
-      this.columnsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.columnsTextBox_KeyDown);
-      this.columnsTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.columnsTextBox_Validating);
-      // 
-      // columnsLabel
-      // 
-      this.columnsLabel.AutoSize = true;
-      this.columnsLabel.Location = new System.Drawing.Point(3, 29);
-      this.columnsLabel.Name = "columnsLabel";
-      this.columnsLabel.Size = new System.Drawing.Size(50, 13);
-      this.columnsLabel.TabIndex = 2;
-      this.columnsLabel.Text = "&Columns:";
-      // 
-      // StringConvertibleMatrixDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataGridView);
-      this.Controls.Add(this.columnsTextBox);
-      this.Controls.Add(this.rowsTextBox);
-      this.Controls.Add(this.columnsLabel);
-      this.Controls.Add(this.rowsLabel);
-      this.Name = "StringConvertibleMatrixDataView";
-      this.Size = new System.Drawing.Size(424, 404);
-      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
-      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Label rowsLabel;
-    private System.Windows.Forms.TextBox rowsTextBox;
-    private System.Windows.Forms.DataGridView dataGridView;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.TextBox columnsTextBox;
-    private System.Windows.Forms.Label columnsLabel;
-
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixDataView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixDataView.cs	(revision 2974)
+++ 	(revision )
@@ -1,182 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.ComponentModel;
-using System.Drawing;
-using System.Windows.Forms;
-using HeuristicLab.Common;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-
-namespace HeuristicLab.Data.Views {
-  [View("StringConvertibleMatrixData View")]
-  [Content(typeof(IStringConvertibleMatrixData), true)]
-  public partial class StringConvertibleMatrixDataView : ContentView {
-    public new IStringConvertibleMatrixData Content {
-      get { return (IStringConvertibleMatrixData)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public StringConvertibleMatrixDataView() {
-      InitializeComponent();
-      Caption = "StringConvertibleMatrixData View";
-      errorProvider.SetIconAlignment(rowsTextBox, ErrorIconAlignment.MiddleLeft);
-      errorProvider.SetIconPadding(rowsTextBox, 2);
-      errorProvider.SetIconAlignment(columnsTextBox, ErrorIconAlignment.MiddleLeft);
-      errorProvider.SetIconPadding(columnsTextBox, 2);
-    }
-    public StringConvertibleMatrixDataView(IStringConvertibleMatrixData content)
-      : this() {
-      Content = content;
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.ItemChanged -= new EventHandler<EventArgs<int, int>>(Content_ItemChanged);
-      Content.Reset -= new EventHandler(Content_Reset);
-      base.DeregisterContentEvents();
-    }
-
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.ItemChanged += new EventHandler<EventArgs<int, int>>(Content_ItemChanged);
-      Content.Reset += new EventHandler(Content_Reset);
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-      if (Content == null) {
-        Caption = "StringConvertibleMatrixData View";
-        rowsTextBox.Text = "";
-        rowsTextBox.Enabled = false;
-        columnsTextBox.Text = "";
-        columnsTextBox.Enabled = false;
-        dataGridView.Rows.Clear();
-        dataGridView.Columns.Clear();
-        dataGridView.Enabled = false;
-      } else {
-        Caption = "StringConvertibleMatrixData (" + Content.GetType().Name + ")";
-        UpdateData();
-      }
-    }
-
-    private void UpdateData() {
-      rowsTextBox.Text = Content.Rows.ToString();
-      rowsTextBox.Enabled = true;
-      columnsTextBox.Text = Content.Columns.ToString();
-      columnsTextBox.Enabled = true;
-      dataGridView.Rows.Clear();
-      dataGridView.Columns.Clear();
-      if ((Content.Rows > 0) && (Content.Columns > 0)) {
-        for (int i = 0; i < Content.Columns; i++) {
-          dataGridView.ColumnCount++;
-          dataGridView.Columns[dataGridView.ColumnCount - 1].FillWeight = float.Epsilon;  // sum of all fill weights must not be larger than 65535
-        }
-        dataGridView.RowCount = Content.Rows;
-        for (int i = 0; i < Content.Rows; i++) {
-          for (int j = 0; j < Content.Columns; j++)
-            dataGridView.Rows[i].Cells[j].Value = Content.GetValue(i, j);
-        }
-        for (int i = 0; i < Content.Columns; i++)
-          dataGridView.Columns[i].Width = dataGridView.Columns[i].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);
-      }
-      dataGridView.Enabled = true;
-    }
-
-    private void Content_ItemChanged(object sender, EventArgs<int, int> e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler<EventArgs<int, int>>(Content_ItemChanged), sender, e);
-      else {
-        dataGridView.Rows[e.Value].Cells[e.Value2].Value = Content.GetValue(e.Value, e.Value2);
-        Size size = dataGridView.Rows[e.Value].Cells[e.Value2].PreferredSize;
-        dataGridView.Columns[e.Value2].Width = Math.Max(dataGridView.Columns[e.Value2].Width, size.Width);
-      }
-    }
-    private void Content_Reset(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_Reset), sender, e);
-      else
-        UpdateData();
-    }
-
-    #region TextBox Events
-    private void rowsTextBox_Validating(object sender, CancelEventArgs e) {
-      int i = 0;
-      if (!int.TryParse(rowsTextBox.Text, out i) || (i < 0)) {
-        e.Cancel = true;
-        errorProvider.SetError(rowsTextBox, "Invalid Number of Rows (Valid Values: Positive Integers Larger or Equal to 0)");
-        rowsTextBox.SelectAll();
-      }
-    }
-    private void rowsTextBox_Validated(object sender, EventArgs e) {
-      Content.Rows = int.Parse(rowsTextBox.Text);
-      errorProvider.SetError(rowsTextBox, string.Empty);
-    }
-    private void rowsTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
-        rowsLabel.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        rowsTextBox.Text = Content.Rows.ToString();
-        rowsLabel.Focus();  // set focus on label to validate data
-      }
-    }
-    private void columnsTextBox_Validating(object sender, CancelEventArgs e) {
-      int i = 0;
-      if (!int.TryParse(columnsTextBox.Text, out i) || (i < 0)) {
-        e.Cancel = true;
-        errorProvider.SetError(columnsTextBox, "Invalid Number of Columns (Valid Values: Positive Integers Larger or Equal to 0)");
-        columnsTextBox.SelectAll();
-      }
-    }
-    private void columnsTextBox_Validated(object sender, EventArgs e) {
-      Content.Columns = int.Parse(columnsTextBox.Text);
-      errorProvider.SetError(columnsTextBox, string.Empty);
-    }
-    private void columnsTextBox_KeyDown(object sender, KeyEventArgs e) {
-      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
-        columnsLabel.Focus();  // set focus on label to validate data
-      if (e.KeyCode == Keys.Escape) {
-        columnsTextBox.Text = Content.Columns.ToString();
-        columnsLabel.Focus();  // set focus on label to validate data
-      }
-    }
-    #endregion
-
-    #region DataGridView Events
-    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
-      string errorMessage;
-      if (!Content.Validate(e.FormattedValue.ToString(), out errorMessage)) {
-        e.Cancel = true;
-        dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
-      }
-    }
-    private void dataGridView_CellParsing(object sender, DataGridViewCellParsingEventArgs e) {
-      string value = e.Value.ToString();
-      e.ParsingApplied = Content.SetValue(value, e.RowIndex, e.ColumnIndex);
-      if (e.ParsingApplied) e.Value = Content.GetValue(e.RowIndex, e.ColumnIndex);
-    }
-    private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
-      dataGridView.Rows[e.RowIndex].ErrorText = string.Empty;
-    }
-    #endregion
-  }
-}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs	(revision 3047)
@@ -0,0 +1,151 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Data.Views {
+  partial class StringConvertibleMatrixDataView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.rowsLabel = new System.Windows.Forms.Label();
+      this.rowsTextBox = new System.Windows.Forms.TextBox();
+      this.dataGridView = new System.Windows.Forms.DataGridView();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      this.columnsTextBox = new System.Windows.Forms.TextBox();
+      this.columnsLabel = new System.Windows.Forms.Label();
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // rowsLabel
+      // 
+      this.rowsLabel.AutoSize = true;
+      this.rowsLabel.Location = new System.Drawing.Point(3, 3);
+      this.rowsLabel.Name = "rowsLabel";
+      this.rowsLabel.Size = new System.Drawing.Size(37, 13);
+      this.rowsLabel.TabIndex = 0;
+      this.rowsLabel.Text = "&Rows:";
+      // 
+      // rowsTextBox
+      // 
+      this.rowsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.rowsTextBox.Location = new System.Drawing.Point(69, 0);
+      this.rowsTextBox.Name = "rowsTextBox";
+      this.rowsTextBox.Size = new System.Drawing.Size(355, 20);
+      this.rowsTextBox.TabIndex = 1;
+      this.rowsTextBox.Validated += new System.EventHandler(this.rowsTextBox_Validated);
+      this.rowsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.rowsTextBox_KeyDown);
+      this.rowsTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.rowsTextBox_Validating);
+      // 
+      // dataGridView
+      // 
+      this.dataGridView.AllowUserToAddRows = false;
+      this.dataGridView.AllowUserToDeleteRows = false;
+      this.dataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.dataGridView.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText;
+      this.dataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
+      this.dataGridView.ColumnHeadersVisible = false;
+      this.dataGridView.Location = new System.Drawing.Point(0, 52);
+      this.dataGridView.Name = "dataGridView";
+      this.dataGridView.Size = new System.Drawing.Size(424, 352);
+      this.dataGridView.TabIndex = 4;
+      this.dataGridView.CellParsing += new System.Windows.Forms.DataGridViewCellParsingEventHandler(this.dataGridView_CellParsing);
+      this.dataGridView.CellValidating += new System.Windows.Forms.DataGridViewCellValidatingEventHandler(this.dataGridView_CellValidating);
+      this.dataGridView.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.dataGridView_CellEndEdit);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // columnsTextBox
+      // 
+      this.columnsTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.columnsTextBox.Location = new System.Drawing.Point(69, 26);
+      this.columnsTextBox.Name = "columnsTextBox";
+      this.columnsTextBox.Size = new System.Drawing.Size(355, 20);
+      this.columnsTextBox.TabIndex = 3;
+      this.columnsTextBox.Validated += new System.EventHandler(this.columnsTextBox_Validated);
+      this.columnsTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.columnsTextBox_KeyDown);
+      this.columnsTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.columnsTextBox_Validating);
+      // 
+      // columnsLabel
+      // 
+      this.columnsLabel.AutoSize = true;
+      this.columnsLabel.Location = new System.Drawing.Point(3, 29);
+      this.columnsLabel.Name = "columnsLabel";
+      this.columnsLabel.Size = new System.Drawing.Size(50, 13);
+      this.columnsLabel.TabIndex = 2;
+      this.columnsLabel.Text = "&Columns:";
+      // 
+      // StringConvertibleMatrixDataView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.dataGridView);
+      this.Controls.Add(this.columnsTextBox);
+      this.Controls.Add(this.rowsTextBox);
+      this.Controls.Add(this.columnsLabel);
+      this.Controls.Add(this.rowsLabel);
+      this.Name = "StringConvertibleMatrixDataView";
+      this.Size = new System.Drawing.Size(424, 404);
+      ((System.ComponentModel.ISupportInitialize)(this.dataGridView)).EndInit();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label rowsLabel;
+    private System.Windows.Forms.TextBox rowsTextBox;
+    private System.Windows.Forms.DataGridView dataGridView;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+    private System.Windows.Forms.TextBox columnsTextBox;
+    private System.Windows.Forms.Label columnsLabel;
+
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.cs	(revision 3047)
@@ -0,0 +1,182 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.ComponentModel;
+using System.Drawing;
+using System.Windows.Forms;
+using HeuristicLab.Common;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Data.Views {
+  [View("StringConvertibleMatrixData View")]
+  [Content(typeof(IStringConvertibleMatrixData), true)]
+  public partial class StringConvertibleMatrixDataView : ContentView {
+    public new IStringConvertibleMatrixData Content {
+      get { return (IStringConvertibleMatrixData)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public StringConvertibleMatrixDataView() {
+      InitializeComponent();
+      Caption = "StringConvertibleMatrixData View";
+      errorProvider.SetIconAlignment(rowsTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(rowsTextBox, 2);
+      errorProvider.SetIconAlignment(columnsTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(columnsTextBox, 2);
+    }
+    public StringConvertibleMatrixDataView(IStringConvertibleMatrixData content)
+      : this() {
+      Content = content;
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.ItemChanged -= new EventHandler<EventArgs<int, int>>(Content_ItemChanged);
+      Content.Reset -= new EventHandler(Content_Reset);
+      base.DeregisterContentEvents();
+    }
+
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ItemChanged += new EventHandler<EventArgs<int, int>>(Content_ItemChanged);
+      Content.Reset += new EventHandler(Content_Reset);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        Caption = "StringConvertibleMatrixData View";
+        rowsTextBox.Text = "";
+        rowsTextBox.Enabled = false;
+        columnsTextBox.Text = "";
+        columnsTextBox.Enabled = false;
+        dataGridView.Rows.Clear();
+        dataGridView.Columns.Clear();
+        dataGridView.Enabled = false;
+      } else {
+        Caption = "StringConvertibleMatrixData (" + Content.GetType().Name + ")";
+        UpdateData();
+      }
+    }
+
+    private void UpdateData() {
+      rowsTextBox.Text = Content.Rows.ToString();
+      rowsTextBox.Enabled = true;
+      columnsTextBox.Text = Content.Columns.ToString();
+      columnsTextBox.Enabled = true;
+      dataGridView.Rows.Clear();
+      dataGridView.Columns.Clear();
+      if ((Content.Rows > 0) && (Content.Columns > 0)) {
+        for (int i = 0; i < Content.Columns; i++) {
+          dataGridView.ColumnCount++;
+          dataGridView.Columns[dataGridView.ColumnCount - 1].FillWeight = float.Epsilon;  // sum of all fill weights must not be larger than 65535
+        }
+        dataGridView.RowCount = Content.Rows;
+        for (int i = 0; i < Content.Rows; i++) {
+          for (int j = 0; j < Content.Columns; j++)
+            dataGridView.Rows[i].Cells[j].Value = Content.GetValue(i, j);
+        }
+        for (int i = 0; i < Content.Columns; i++)
+          dataGridView.Columns[i].Width = dataGridView.Columns[i].GetPreferredWidth(DataGridViewAutoSizeColumnMode.AllCells, true);
+      }
+      dataGridView.Enabled = true;
+    }
+
+    private void Content_ItemChanged(object sender, EventArgs<int, int> e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler<EventArgs<int, int>>(Content_ItemChanged), sender, e);
+      else {
+        dataGridView.Rows[e.Value].Cells[e.Value2].Value = Content.GetValue(e.Value, e.Value2);
+        Size size = dataGridView.Rows[e.Value].Cells[e.Value2].PreferredSize;
+        dataGridView.Columns[e.Value2].Width = Math.Max(dataGridView.Columns[e.Value2].Width, size.Width);
+      }
+    }
+    private void Content_Reset(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Reset), sender, e);
+      else
+        UpdateData();
+    }
+
+    #region TextBox Events
+    private void rowsTextBox_Validating(object sender, CancelEventArgs e) {
+      int i = 0;
+      if (!int.TryParse(rowsTextBox.Text, out i) || (i < 0)) {
+        e.Cancel = true;
+        errorProvider.SetError(rowsTextBox, "Invalid Number of Rows (Valid Values: Positive Integers Larger or Equal to 0)");
+        rowsTextBox.SelectAll();
+      }
+    }
+    private void rowsTextBox_Validated(object sender, EventArgs e) {
+      Content.Rows = int.Parse(rowsTextBox.Text);
+      errorProvider.SetError(rowsTextBox, string.Empty);
+    }
+    private void rowsTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
+        rowsLabel.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        rowsTextBox.Text = Content.Rows.ToString();
+        rowsLabel.Focus();  // set focus on label to validate data
+      }
+    }
+    private void columnsTextBox_Validating(object sender, CancelEventArgs e) {
+      int i = 0;
+      if (!int.TryParse(columnsTextBox.Text, out i) || (i < 0)) {
+        e.Cancel = true;
+        errorProvider.SetError(columnsTextBox, "Invalid Number of Columns (Valid Values: Positive Integers Larger or Equal to 0)");
+        columnsTextBox.SelectAll();
+      }
+    }
+    private void columnsTextBox_Validated(object sender, EventArgs e) {
+      Content.Columns = int.Parse(columnsTextBox.Text);
+      errorProvider.SetError(columnsTextBox, string.Empty);
+    }
+    private void columnsTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if (e.KeyCode == Keys.Enter || e.KeyCode == Keys.Return)
+        columnsLabel.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        columnsTextBox.Text = Content.Columns.ToString();
+        columnsLabel.Focus();  // set focus on label to validate data
+      }
+    }
+    #endregion
+
+    #region DataGridView Events
+    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
+      string errorMessage;
+      if (!Content.Validate(e.FormattedValue.ToString(), out errorMessage)) {
+        e.Cancel = true;
+        dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
+      }
+    }
+    private void dataGridView_CellParsing(object sender, DataGridViewCellParsingEventArgs e) {
+      string value = e.Value.ToString();
+      e.ParsingApplied = Content.SetValue(value, e.RowIndex, e.ColumnIndex);
+      if (e.ParsingApplied) e.Value = Content.GetValue(e.RowIndex, e.ColumnIndex);
+    }
+    private void dataGridView_CellEndEdit(object sender, DataGridViewCellEventArgs e) {
+      dataGridView.Rows[e.RowIndex].ErrorText = string.Empty;
+    }
+    #endregion
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleValueView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleValueView.Designer.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleValueView.Designer.cs	(revision 3047)
@@ -0,0 +1,100 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Data.Views {
+  partial class StringConvertibleDataView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing) {
+        if (components != null) components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.valueTextBox = new System.Windows.Forms.TextBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      this.valueLabel = new System.Windows.Forms.Label();
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // valueTextBox
+      // 
+      this.valueTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.valueTextBox.Location = new System.Drawing.Point(56, 0);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(194, 20);
+      this.valueTextBox.TabIndex = 1;
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      this.valueTextBox.KeyDown += new System.Windows.Forms.KeyEventHandler(this.valueTextBox_KeyDown);
+      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.BlinkStyle = System.Windows.Forms.ErrorBlinkStyle.NeverBlink;
+      this.errorProvider.ContainerControl = this;
+      // 
+      // valueLabel
+      // 
+      this.valueLabel.AutoSize = true;
+      this.valueLabel.Location = new System.Drawing.Point(3, 3);
+      this.valueLabel.Name = "valueLabel";
+      this.valueLabel.Size = new System.Drawing.Size(37, 13);
+      this.valueLabel.TabIndex = 0;
+      this.valueLabel.Text = "&Value:";
+      // 
+      // StringConvertibleDataView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.valueLabel);
+      this.Controls.Add(this.valueTextBox);
+      this.Name = "StringConvertibleDataView";
+      this.Size = new System.Drawing.Size(250, 38);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+    private System.Windows.Forms.ErrorProvider errorProvider;
+    private System.Windows.Forms.Label valueLabel;
+  }
+}
Index: trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleValueView.cs
===================================================================
--- trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleValueView.cs	(revision 3047)
+++ trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleValueView.cs	(revision 3047)
@@ -0,0 +1,99 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.ComponentModel;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Data.Views {
+  [View("StringConvertibleData View")]
+  [Content(typeof(IStringConvertibleData), true)]
+  public partial class StringConvertibleDataView : ContentView {
+    public new IStringConvertibleData Content {
+      get { return (IStringConvertibleData)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public StringConvertibleDataView() {
+      InitializeComponent();
+      Caption = "StringConvertibleData View";
+      errorProvider.SetIconAlignment(valueTextBox, ErrorIconAlignment.MiddleLeft);
+      errorProvider.SetIconPadding(valueTextBox, 2);
+    }
+    public StringConvertibleDataView(IStringConvertibleData content)
+      : this() {
+      Content = content;
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.ValueChanged -= new EventHandler(Content_ValueChanged);
+      base.DeregisterContentEvents();
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ValueChanged += new EventHandler(Content_ValueChanged);
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        Caption = "StringConvertibleData View";
+        valueTextBox.Text = string.Empty;
+        valueTextBox.Enabled = false;
+      } else {
+        Caption = Content.GetValue() + " (" + Content.GetType().Name + ")";
+        valueTextBox.Text = Content.GetValue();
+        valueTextBox.Enabled = true;
+      }
+    }
+
+    private void Content_ValueChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ValueChanged), sender, e);
+      else
+        valueTextBox.Text = Content.GetValue();
+    }
+
+    private void valueTextBox_KeyDown(object sender, KeyEventArgs e) {
+      if ((e.KeyCode == Keys.Enter) || (e.KeyCode == Keys.Return))
+        valueLabel.Focus();  // set focus on label to validate data
+      if (e.KeyCode == Keys.Escape) {
+        valueTextBox.Text = Content.GetValue();
+        valueLabel.Focus();  // set focus on label to validate data
+      }
+    }
+    private void valueTextBox_Validating(object sender, CancelEventArgs e) {
+      string errorMessage;
+      if (!Content.Validate(valueTextBox.Text, out errorMessage)) {
+        e.Cancel = true;
+        errorProvider.SetError(valueTextBox, errorMessage);
+        valueTextBox.SelectAll();
+      }
+    }
+    private void valueTextBox_Validated(object sender, EventArgs e) {
+      Content.SetValue(valueTextBox.Text);
+      errorProvider.SetError(valueTextBox, string.Empty);
+    }
+  }
+}
