Index: unk/sources/HeuristicLab.Core.Views/3.3/DefaultItemView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/DefaultItemView.Designer.cs	(revision 2664)
+++ 	(revision )
@@ -1,76 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Core.Views {
-  partial class DefaultItemView {
-    /// <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.messageLabel = new System.Windows.Forms.Label();
-      this.SuspendLayout();
-      // 
-      // messageLabel
-      // 
-      this.messageLabel.Anchor = System.Windows.Forms.AnchorStyles.Top;
-      this.messageLabel.AutoSize = true;
-      this.messageLabel.Location = new System.Drawing.Point(55, 0);
-      this.messageLabel.Name = "messageLabel";
-      this.messageLabel.Size = new System.Drawing.Size(91, 13);
-      this.messageLabel.TabIndex = 0;
-      this.messageLabel.Text = "No view available";
-      // 
-      // DataBaseView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.messageLabel);
-      this.Name = "DataBaseView";
-      this.Size = new System.Drawing.Size(201, 46);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Label messageLabel;
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/DefaultItemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/DefaultItemView.cs	(revision 2664)
+++ 	(revision )
@@ -1,52 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Core.Views { 
-  /// <summary>
-  /// The base class for visual representations of items.
-  /// </summary>
-  [Content(typeof(Item), true)]
-  public partial class DefaultItemView : ItemView {
-    /// <summary>
-    /// Initializes a new instance of <see cref="ItemBaseView"/>.
-    /// </summary>
-    public DefaultItemView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Intializes a new instance of <see cref="ItemBaseView"/> with the given <paramref name="item"/>.
-    /// </summary>
-    /// <param name="item">The item that should be displayed.</param>
-    public DefaultItemView(Item item)
-      : this() {
-      Item = item;
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2664)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2665)
@@ -59,10 +59,4 @@
     </Compile>
     <Compile Include="Auxiliary.cs" />
-    <Compile Include="DefaultItemView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="DefaultItemView.Designer.cs">
-      <DependentUpon>DefaultItemView.cs</DependentUpon>
-    </Compile>
     <Compile Include="EngineView.cs">
       <SubType>UserControl</SubType>
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterView.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ParameterView.cs	(revision 2665)
@@ -33,5 +33,5 @@
   /// The visual representation of a <see cref="Parameter"/>.
   /// </summary>
-  [Content(typeof(IParameter), true)]
+  [Content(typeof(Parameter), true)]
   public partial class ParameterView : NamedItemView {
     /// <summary>
@@ -40,6 +40,6 @@
     /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="ViewBase"/>.
     /// No own data storage present.</remarks>
-    public IParameter Parameter {
-      get { return (IParameter)Item; }
+    public Parameter Parameter {
+      get { return (Parameter)Item; }
       set { base.Item = value; }
     }
@@ -57,5 +57,5 @@
     /// <remarks>Calls <see cref="VariableView()"/>.</remarks>
     /// <param name="variable">The variable to represent visually.</param>
-    public ParameterView(IParameter parameter)
+    public ParameterView(Parameter parameter)
       : this() {
       Parameter = parameter;
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs	(revision 2665)
@@ -46,4 +46,5 @@
     private void InitializeComponent() {
       this.viewPanel = new System.Windows.Forms.Panel();
+      this.messageLabel = new System.Windows.Forms.Label();
       this.viewLabel = new System.Windows.Forms.Label();
       this.viewComboBox = new System.Windows.Forms.ComboBox();
@@ -59,4 +60,15 @@
       this.viewPanel.Size = new System.Drawing.Size(227, 157);
       this.viewPanel.TabIndex = 2;
+      // 
+      // messageLabel
+      // 
+      this.messageLabel.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.messageLabel.Location = new System.Drawing.Point(3, 24);
+      this.messageLabel.Name = "messageLabel";
+      this.messageLabel.Size = new System.Drawing.Size(221, 20);
+      this.messageLabel.TabIndex = 0;
+      this.messageLabel.Text = "No view available.";
+      this.messageLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
       // 
       // viewLabel
@@ -85,4 +97,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.messageLabel);
       this.Controls.Add(this.viewComboBox);
       this.Controls.Add(this.viewLabel);
@@ -100,4 +113,5 @@
     private System.Windows.Forms.Label viewLabel;
     private System.Windows.Forms.ComboBox viewComboBox;
+    private System.Windows.Forms.Label messageLabel;
 
   }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.cs	(revision 2665)
@@ -53,4 +53,5 @@
       viewComboBox.Enabled = false;
       viewComboBox.Visible = false;
+      messageLabel.Visible = false;
       if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose();
       viewPanel.Controls.Clear();
@@ -63,8 +64,11 @@
         foreach (Type viewType in viewTypes)
           viewComboBox.Items.Add(viewType);
-        if (viewComboBox.Items.Count > 0) {
+        if (viewComboBox.Items.Count == 0) {
+          messageLabel.Visible = true;
+        } else {
           viewLabel.Visible = true;
           viewComboBox.Enabled = true;
           viewComboBox.Visible = true;
+          messageLabel.Visible = false;
         }
 
Index: /trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.Designer.cs	(revision 2665)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.Designer.cs	(revision 2665)
@@ -0,0 +1,77 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Location = new System.Drawing.Point(3, 3);
+      this.valueCheckBox.Name = "valueCheckBox";
+      this.valueCheckBox.Size = new System.Drawing.Size(15, 14);
+      this.valueCheckBox.TabIndex = 0;
+      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(30, 32);
+      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 2665)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/BoolDataView.cs	(revision 2665)
@@ -0,0 +1,83 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Data.Views {
+  [Content(typeof(BoolData), true)]
+  public partial class BoolDataView : ItemView {
+    public BoolData BoolData {
+      get { return (BoolData)Item; }
+      set { base.Item = value; }
+    }
+
+    public BoolDataView() {
+      InitializeComponent();
+      Caption = "BoolData View";
+    }
+    public BoolDataView(BoolData boolData)
+      : this() {
+      BoolData = boolData;
+    }
+
+    protected override void DeregisterObjectEvents() {
+      BoolData.ValueChanged -= new EventHandler(BoolData_ValueChanged);
+      base.DeregisterObjectEvents();
+    }
+
+    protected override void RegisterObjectEvents() {
+      base.RegisterObjectEvents();
+      BoolData.ValueChanged += new EventHandler(BoolData_ValueChanged);
+    }
+
+    protected override void OnObjectChanged() {
+      base.OnObjectChanged();
+      if (BoolData == null) {
+        Caption = "BoolData View";
+        valueCheckBox.Checked = false;
+        valueCheckBox.Enabled = false;
+      } else {
+        Caption = BoolData.ToString() + " (" + BoolData.GetType().Name + ")";
+        valueCheckBox.Checked = BoolData.Value;
+        valueCheckBox.Enabled = true;
+      }
+    }
+
+    private void BoolData_ValueChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(BoolData_ValueChanged), sender, e);
+      else
+        valueCheckBox.Checked = BoolData.Value;
+    }
+
+    private void valueCheckBox_CheckedChanged(object sender, EventArgs e) {
+      BoolData.Value = valueCheckBox.Checked;
+    }
+  }
+}
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 2664)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/HeuristicLab.Data.Views-3.3.csproj	(revision 2665)
@@ -51,11 +51,17 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="HeuristicLabDataViewsPlugin.cs" />
-    <Compile Include="IntDataView.cs">
+    <Compile Include="BoolDataView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="IntDataView.Designer.cs">
-      <DependentUpon>IntDataView.cs</DependentUpon>
+    <Compile Include="BoolDataView.Designer.cs">
+      <DependentUpon>BoolDataView.cs</DependentUpon>
     </Compile>
+    <Compile Include="StringConvertibleDataView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="StringConvertibleDataView.Designer.cs">
+      <DependentUpon>StringConvertibleDataView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HeuristicLabDataViewsPlugin.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
Index: unk/sources/HeuristicLab.Data.Views/3.3/IntDataView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/IntDataView.Designer.cs	(revision 2664)
+++ 	(revision )
@@ -1,89 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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 IntDataView {
-    /// <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.valueTextBox = new System.Windows.Forms.TextBox();
-      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:";
-      // 
-      // 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(46, 0);
-      this.valueTextBox.Name = "valueTextBox";
-      this.valueTextBox.Size = new System.Drawing.Size(204, 20);
-      this.valueTextBox.TabIndex = 1;
-      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
-      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
-      // 
-      // IntDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.valueTextBox);
-      this.Controls.Add(this.valueLabel);
-      this.Name = "IntDataView";
-      this.Size = new System.Drawing.Size(250, 50);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Label valueLabel;
-    private System.Windows.Forms.TextBox valueTextBox;
-  }
-}
Index: unk/sources/HeuristicLab.Data.Views/3.3/IntDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/IntDataView.cs	(revision 2664)
+++ 	(revision )
@@ -1,97 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data.Views {
-  /// <summary>
-  /// The visual representation of a <see cref="Variable"/>.
-  /// </summary>
-  [Content(typeof(IntData), true)]
-  public partial class IntDataView : ItemView {
-    public IntData IntData {
-      get { return (IntData)Item; }
-      set { base.Item = value; }
-    }
-
-    public IntDataView() {
-      InitializeComponent();
-      Caption = "IntData";
-    }
-    public IntDataView(IntData intData)
-      : this() {
-      IntData = intData;
-    }
-
-    protected override void DeregisterObjectEvents() {
-      IntData.ValueChanged -= new EventHandler(IntData_ValueChanged);
-      base.DeregisterObjectEvents();
-    }
-
-    protected override void RegisterObjectEvents() {
-      base.RegisterObjectEvents();
-      IntData.ValueChanged += new EventHandler(IntData_ValueChanged);
-    }
-
-    protected override void OnObjectChanged() {
-      base.OnObjectChanged();
-      if (IntData == null) {
-        Caption = "IntData";
-        valueTextBox.Text = "-";
-        valueTextBox.Enabled = false;
-      } else {
-        Caption = IntData.Value.ToString() + " (" + IntData.GetType().Name + ")";
-        valueTextBox.Text = IntData.Value.ToString();
-        valueTextBox.Enabled = true;
-      }
-    }
-
-    private void IntData_ValueChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(IntData_ValueChanged), sender, e);
-      else
-        valueTextBox.Text = IntData.Value.ToString();
-    }
-
-    private void valueTextBox_Validating(object sender, CancelEventArgs e) {
-      int oldValue = IntData.Value;
-      int value;
-      e.Cancel = !int.TryParse(valueTextBox.Text, out value);
-      if (e.Cancel) {
-        MessageBox.Show(this, "\"" + valueTextBox.Text + "\" is not a valid integer value.", "Invalid Value", MessageBoxButtons.OK, MessageBoxIcon.Error);
-        valueTextBox.Text = oldValue.ToString();
-        valueTextBox.SelectAll();
-        valueTextBox.Focus();
-      }
-    }
-    private void valueTextBox_Validated(object sender, EventArgs e) {
-      IntData.Value = int.Parse(valueTextBox.Text);
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.Designer.cs	(revision 2665)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.Designer.cs	(revision 2665)
@@ -0,0 +1,77 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.valueTextBox = new System.Windows.Forms.TextBox();
+      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(3, 0);
+      this.valueTextBox.Name = "valueTextBox";
+      this.valueTextBox.Size = new System.Drawing.Size(244, 20);
+      this.valueTextBox.TabIndex = 0;
+      this.valueTextBox.Validated += new System.EventHandler(this.valueTextBox_Validated);
+      this.valueTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.valueTextBox_Validating);
+      // 
+      // StringConvertibleDataView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.valueTextBox);
+      this.Name = "StringConvertibleDataView";
+      this.Size = new System.Drawing.Size(250, 34);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.TextBox valueTextBox;
+  }
+}
Index: /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs	(revision 2665)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleDataView.cs	(revision 2665)
@@ -0,0 +1,91 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Data.Views {
+  [Content(typeof(IStringConvertibleData), true)]
+  public partial class StringConvertibleDataView : ObjectView {
+    public IStringConvertibleData StringConvertibleData {
+      get { return (IStringConvertibleData)Object; }
+      set { base.Object = value; }
+    }
+
+    public StringConvertibleDataView() {
+      InitializeComponent();
+      Caption = "StringConvertibleData View";
+    }
+    public StringConvertibleDataView(IStringConvertibleData stringConvertibleData)
+      : this() {
+      StringConvertibleData = stringConvertibleData;
+    }
+
+    protected override void DeregisterObjectEvents() {
+      StringConvertibleData.ValueChanged -= new EventHandler(StringConvertibleData_ValueChanged);
+      base.DeregisterObjectEvents();
+    }
+
+    protected override void RegisterObjectEvents() {
+      base.RegisterObjectEvents();
+      StringConvertibleData.ValueChanged += new EventHandler(StringConvertibleData_ValueChanged);
+    }
+
+    protected override void OnObjectChanged() {
+      base.OnObjectChanged();
+      if (StringConvertibleData == null) {
+        Caption = "StringConvertibleData View";
+        valueTextBox.Text = "-";
+        valueTextBox.Enabled = false;
+      } else {
+        Caption = StringConvertibleData.GetValue() + " (" + StringConvertibleData.GetType().Name + ")";
+        valueTextBox.Text = StringConvertibleData.GetValue();
+        valueTextBox.Enabled = true;
+      }
+    }
+
+    private void StringConvertibleData_ValueChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(StringConvertibleData_ValueChanged), sender, e);
+      else
+        valueTextBox.Text = StringConvertibleData.GetValue();
+    }
+
+    private void valueTextBox_Validating(object sender, CancelEventArgs e) {
+      e.Cancel = !StringConvertibleData.SetValue(valueTextBox.Text);
+      if (e.Cancel) {
+        MessageBox.Show(this, "\"" + valueTextBox.Text + "\" is not a valid value.", "Invalid Value", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        valueTextBox.SelectAll();
+        valueTextBox.Focus();
+      }
+    }
+    private void valueTextBox_Validated(object sender, EventArgs e) {
+      valueTextBox.Text = StringConvertibleData.GetValue();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Data/3.3/BoolData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/BoolData.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Data/3.3/BoolData.cs	(revision 2665)
@@ -28,44 +28,31 @@
 
 namespace HeuristicLab.Data {
-  /// <summary>
-  /// Class to represent boolean values.
-  /// </summary>
   [EmptyStorableClass]
-  public class BoolData : ObjectData {
-    /// <summary>
-    /// Gets or sets the boolean value.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ObjectData.Data"/>
-    /// of base class <see cref="ObjectData"/>. No own data storage present.</remarks>
-    public new bool Data {
-      get { return (bool)base.Data; }
-      set { base.Data = value; }
+  [Item("Boolean", "Represents a boolean value.")]
+  [Creatable("Test")]
+  public sealed class BoolData : ValueTypeData<bool>, IStringConvertibleData {
+    public BoolData() : base() { }
+    public BoolData(bool value)
+      : base() {
+      Value = value;
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="BoolData"/> with default value <c>false</c>.
-    /// </summary>
-    public BoolData() {
-      Data = false;
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="BoolData"/> with the boolean value <paramref name="data"/>.
-    /// </summary>
-    /// <param name="data">The boolean value to assign.</param>
-    public BoolData(bool data) {
-      Data = data;
+    public override IDeepCloneable Clone(Cloner cloner) {
+      BoolData clone = new BoolData(Value);
+      cloner.RegisterClonedObject(this, clone);
+      return clone;
     }
 
-    /// <summary>
-    /// Clones the current instance.
-    /// </summary>
-    /// <remarks>The cloned instance is added to the <paramref name="dictionary"/>.</remarks>
-    /// <param name="clonedObjects">Dictionary of all already cloned objects.</param>
-    /// <returns>The cloned instance as <see cref="BoolData"/>.</returns>
-    public override IItem Clone(ICloner cloner) {
-      BoolData clone = new BoolData();
-      cloner.RegisterClonedObject(this, clone);
-      clone.Data = Data;
-      return clone;
+    string IStringConvertibleData.GetValue() {
+      return Value.ToString();
+    }
+    bool IStringConvertibleData.SetValue(string value) {
+      bool b;
+      if (bool.TryParse(value, out b)) {
+        Value = b;
+        return true;
+      } else {
+        return false;
+      }
     }
   }
Index: unk/sources/HeuristicLab.Data/3.3/BoolDataView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/BoolDataView.Designer.cs	(revision 2664)
+++ 	(revision )
@@ -1,77 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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 {
-  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 && (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.dataCheckBox = new System.Windows.Forms.CheckBox();
-      this.SuspendLayout();
-      // 
-      // dataCheckBox
-      // 
-      this.dataCheckBox.AutoSize = true;
-      this.dataCheckBox.Location = new System.Drawing.Point(0, 0);
-      this.dataCheckBox.Name = "dataCheckBox";
-      this.dataCheckBox.Size = new System.Drawing.Size(15, 14);
-      this.dataCheckBox.TabIndex = 1;
-      this.dataCheckBox.UseVisualStyleBackColor = true;
-      this.dataCheckBox.CheckedChanged += new System.EventHandler(this.dataCheckBox_CheckedChanged);
-      // 
-      // BoolDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataCheckBox);
-      this.Name = "BoolDataView";
-      this.Size = new System.Drawing.Size(19, 18);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.CheckBox dataCheckBox;
-
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/BoolDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/BoolDataView.cs	(revision 2664)
+++ 	(revision )
@@ -1,106 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The visual representation of the class <see cref="BoolData"/>, symbolizing a boolean value. 
-  /// </summary>
-  [Content(typeof(BoolData), true)]
-  public partial class BoolDataView : ItemViewBase {
-    /// <summary>
-    /// Gets or sets the boolean value to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="HeuristicLab.Core.ViewBase.Item"/> of base class <see cref="ViewBase"/>.
-    /// No own data storage present.</remarks>
-    public BoolData BoolData {
-      get { return (BoolData)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="BoolDataView"/>.
-    /// </summary>
-    public BoolDataView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="BoolDataView"/> with the given 
-    /// <paramref name="boolData"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="boolData"/> is not copied!</note>
-    /// </summary>
-    /// <param name="boolData">The boolean value to represent visually.</param>
-    public BoolDataView(BoolData boolData)
-      : this() {
-      BoolData = boolData;
-    }
-
-    /// <summary>
-    /// Removes the eventhandler from the underlying <see cref="BoolData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      BoolData.Changed -= new EventHandler(BoolData_Changed);
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds an eventhandler to the underlying <see cref="BoolData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      BoolData.Changed += new EventHandler(BoolData_Changed);
-    }
-
-    /// <summary>
-    /// Sets the <c>dataCheckBox</c> checked or unchecked according to the latest value.
-    /// </summary>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (BoolData == null) {
-        dataCheckBox.Enabled = false;
-      } else {
-        dataCheckBox.Enabled = true;
-        dataCheckBox.Checked = BoolData.Data;
-      }
-    }
-
-    private void dataCheckBox_CheckedChanged(object sender, EventArgs e) {
-      BoolData.Data = dataCheckBox.Checked;
-    }
-
-    private void BoolData_Changed(object sender, EventArgs e) {
-      Refresh();
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/BoolDataView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/BoolDataView.resx	(revision 2664)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /trunk/sources/HeuristicLab.Data/3.3/DateTimeData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/DateTimeData.cs	(revision 2665)
+++ /trunk/sources/HeuristicLab.Data/3.3/DateTimeData.cs	(revision 2665)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Collections.Generic;
+using System.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Data {
+  [EmptyStorableClass]
+  [Item("DateTime", "Represents a date and time value.")]
+  [Creatable("Test")]
+  public sealed class DateTimeData : ValueTypeData<DateTime>, IStringConvertibleData {
+    public DateTimeData() : base() { }
+    public DateTimeData(DateTime value)
+      : base() {
+      Value = value;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      DateTimeData clone = new DateTimeData(Value);
+      cloner.RegisterClonedObject(this, clone);
+      return clone;
+    }
+
+    string IStringConvertibleData.GetValue() {
+      return Value.ToString();
+    }
+    bool IStringConvertibleData.SetValue(string value) {
+      DateTime d;
+      if (DateTime.TryParse(value, out d)) {
+        Value = d;
+        return true;
+      } else {
+        return false;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Data/3.3/DoubleData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/DoubleData.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Data/3.3/DoubleData.cs	(revision 2665)
@@ -25,48 +25,34 @@
 using System.Xml;
 using HeuristicLab.Core;
-using System.Globalization;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
 
 namespace HeuristicLab.Data {
-  /// <summary>
-  /// Class to represent double values.
-  /// </summary>
   [EmptyStorableClass]
-  public class DoubleData : ObjectData {
-    /// <summary>
-    /// Gets or sets the double value.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ObjectData.Data"/> of base class <see cref="ObjectData"></see>. 
-    /// No own data storage present.</remarks>
-    public new double Data {
-      get { return (double)base.Data; }
-      set { base.Data = value; }
+  [Item("Double", "Represents a double value.")]
+  [Creatable("Test")]
+  public sealed class DoubleData : ValueTypeData<double>, IStringConvertibleData {
+    public DoubleData() : base() { }
+    public DoubleData(double value)
+      : base() {
+      Value = value;
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="DoubleData"/> with default value <c>0.0</c>.
-    /// </summary>
-    public DoubleData() {
-      Data = 0.0;
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="DoubleData"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="data"/> is not copied!</note>
-    /// </summary>
-    /// <param name="data">The double value the instance should represent.</param>
-    public DoubleData(double data) {
-      Data = data;
+    public override IDeepCloneable Clone(Cloner cloner) {
+      DoubleData clone = new DoubleData(Value);
+      cloner.RegisterClonedObject(this, clone);
+      return clone;
     }
 
-    /// <summary>
-    /// Clones the current instance and adds it to the dictionary <paramref name="clonedObjects"/>.
-    /// </summary>
-    /// <param name="clonedObjects">Dictionary of all already cloned objects.</param>
-    /// <returns>The cloned instance as <see cref="DoubleData"/>.</returns>
-    public override IItem Clone(ICloner cloner) {
-      DoubleData clone = new DoubleData();
-      cloner.RegisterClonedObject(this, clone);
-      clone.Data = Data;
-      return clone;
+    string IStringConvertibleData.GetValue() {
+      return Value.ToString();
+    }
+    bool IStringConvertibleData.SetValue(string value) {
+      double d;
+      if (double.TryParse(value, out d)) {
+        Value = d;
+        return true;
+      } else {
+        return false;
+      }
     }
   }
Index: unk/sources/HeuristicLab.Data/3.3/DoubleDataView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/DoubleDataView.Designer.cs	(revision 2664)
+++ 	(revision )
@@ -1,76 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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 {
-  partial class DoubleDataView {
-    /// <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 && (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.dataTextBox = new System.Windows.Forms.TextBox();
-      this.SuspendLayout();
-      // 
-      // dataTextBox
-      // 
-      this.dataTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTextBox.Location = new System.Drawing.Point(0, 0);
-      this.dataTextBox.Name = "dataTextBox";
-      this.dataTextBox.Size = new System.Drawing.Size(274, 20);
-      this.dataTextBox.TabIndex = 1;
-      this.dataTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.dataTextBox_Validating);
-      // 
-      // DoubleDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataTextBox);
-      this.Name = "DoubleDataView";
-      this.Size = new System.Drawing.Size(274, 26);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox dataTextBox;
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/DoubleDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/DoubleDataView.cs	(revision 2664)
+++ 	(revision )
@@ -1,113 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The visual representation of the class <see cref="DoubleData"/>, symbolizing a double value.
-  /// </summary>
-  [Content(typeof(DoubleData), true)]
-  public partial class DoubleDataView : ItemViewBase {
-    /// <summary>
-    /// Gets or sets the double value to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="HeuristicLab.Core.ViewBase.Item"/> of base class 
-    /// <see cref="ViewBase"/>. No own data storage present.</remarks>
-    public DoubleData DoubleData {
-      get { return (DoubleData)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="DoubleDataView"/>.
-    /// </summary>
-    public DoubleDataView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="DoubleDataView"/> with the given 
-    /// <paramref name="doubleData"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="doubleData"/> is not copied!</note>
-    /// </summary>
-    /// <param name="doubleData">The double value to represent visually.</param>
-    public DoubleDataView(DoubleData doubleData)
-      : this() {
-      DoubleData = doubleData;
-    }
-
-    /// <summary>
-    /// Removes the eventhandler from the underlying <see cref="DoubleData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      DoubleData.Changed -= new EventHandler(DoubleData_Changed);
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds an eventhandler to the underlying <see cref="DoubleData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      DoubleData.Changed += new EventHandler(DoubleData_Changed);
-    }
-
-    /// <summary>
-    /// Updates the controls with the latest double value.
-    /// </summary>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (DoubleData == null) {
-        dataTextBox.Enabled = false;
-      } else {
-        dataTextBox.Enabled = true;
-        dataTextBox.Text = DoubleData.Data.ToString("r");
-      }
-    }
-
-    private void dataTextBox_Validating(object sender, CancelEventArgs e) {
-      e.Cancel = false;
-      try {
-        DoubleData.Data = double.Parse(dataTextBox.Text);
-      }
-      catch (Exception) {
-        dataTextBox.SelectAll();
-        e.Cancel = true;
-      }
-    }
-
-    private void DoubleData_Changed(object sender, EventArgs e) {
-      Refresh();
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/DoubleDataView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/DoubleDataView.resx	(revision 2664)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 2664)
+++ /trunk/sources/HeuristicLab.Data/3.3/HeuristicLab.Data-3.3.csproj	(revision 2665)
@@ -100,4 +100,17 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="BoolData.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="ReferenceTypeData.cs" />
+    <Compile Include="StringData.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="TimeSpanData.cs" />
+    <Compile Include="DateTimeData.cs" />
+    <Compile Include="DoubleData.cs">
+      <SubType>Code</SubType>
+    </Compile>
+    <Compile Include="IStringConvertibleData.cs" />
     <Compile Include="ValueTypeData.cs">
       <SubType>Code</SubType>
Index: /trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleData.cs	(revision 2665)
+++ /trunk/sources/HeuristicLab.Data/3.3/IStringConvertibleData.cs	(revision 2665)
@@ -0,0 +1,34 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Collections.Generic;
+using System.Text;
+using System.Xml;
+
+namespace HeuristicLab.Data {
+  public interface IStringConvertibleData {
+    string GetValue();
+    bool SetValue(string value);
+
+    event EventHandler ValueChanged;
+  }
+}
Index: /trunk/sources/HeuristicLab.Data/3.3/IntData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/IntData.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Data/3.3/IntData.cs	(revision 2665)
@@ -29,7 +29,7 @@
 namespace HeuristicLab.Data {
   [EmptyStorableClass]
-  [Item("Int Data", "Represents an integer value.")]
+  [Item("Integer", "Represents an integer value.")]
   [Creatable("Test")]
-  public sealed class IntData : ValueTypeData<int> {
+  public sealed class IntData : ValueTypeData<int>, IStringConvertibleData {
     public IntData() : base() { }
     public IntData(int value)
@@ -43,4 +43,17 @@
       return clone;
     }
+
+    string IStringConvertibleData.GetValue() {
+      return Value.ToString();
+    }
+    bool IStringConvertibleData.SetValue(string value) {
+      int i;
+      if (int.TryParse(value, out i)) {
+        Value = i;
+        return true;
+      } else {
+        return false;
+      }
+    }
   }
 }
Index: unk/sources/HeuristicLab.Data/3.3/IntDataView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/IntDataView.Designer.cs	(revision 2664)
+++ 	(revision )
@@ -1,76 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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 {
-  partial class IntDataView {
-    /// <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 && (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.dataTextBox = new System.Windows.Forms.TextBox();
-      this.SuspendLayout();
-      // 
-      // dataTextBox
-      // 
-      this.dataTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTextBox.Location = new System.Drawing.Point(0, 0);
-      this.dataTextBox.Name = "dataTextBox";
-      this.dataTextBox.Size = new System.Drawing.Size(265, 20);
-      this.dataTextBox.TabIndex = 1;
-      this.dataTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.dataTextBox_Validating);
-      // 
-      // IntDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataTextBox);
-      this.Name = "IntDataView";
-      this.Size = new System.Drawing.Size(265, 26);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox dataTextBox;
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/IntDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/IntDataView.cs	(revision 2664)
+++ 	(revision )
@@ -1,113 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The visual representation of the class <see cref="IntData"/>, symbolizing an int value.
-  /// </summary>
-  [Content(typeof(IntData), true)]
-  public partial class IntDataView : ItemViewBase {
-    /// <summary>
-    /// Gets or set the int value to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="HeuristicLab.Core.ViewBase.Item"/> of base class <see cref="ViewBase"/>.
-    /// No own data storage present.</remarks>
-    public IntData IntData {
-      get { return (IntData)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="IntDataView"/>.
-    /// </summary>
-    public IntDataView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="IntDataView"/> with the 
-    /// given <paramref name="intData"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="intData"/> is not copied!</note>
-    /// </summary>
-    /// <param name="intData">The integer value to represent visually.</param>
-    public IntDataView(IntData intData)
-      : this() {
-      IntData = intData;
-    }
-
-    /// <summary>
-    /// Removes the eventhandler from the underlying <see cref="IntData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      IntData.Changed -= new EventHandler(IntData_Changed);
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds an eventhandler to the underlying <see cref="IntData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      IntData.Changed += new EventHandler(IntData_Changed);
-    }
-
-    /// <summary>
-    /// Updates the controls with the latest int value.
-    /// </summary>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (IntData == null) {
-        dataTextBox.Enabled = false;
-      } else {
-        dataTextBox.Enabled = true;
-        dataTextBox.Text = IntData.ToString();
-      }
-    }
-
-    private void dataTextBox_Validating(object sender, CancelEventArgs e) {
-      e.Cancel = false;
-      try {
-        IntData.Data = int.Parse(dataTextBox.Text);
-      }
-      catch (Exception) {
-        dataTextBox.SelectAll();
-        e.Cancel = true;
-      }
-    }
-
-    private void IntData_Changed(object sender, EventArgs e) {
-      Refresh();
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/IntDataView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/IntDataView.resx	(revision 2664)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /trunk/sources/HeuristicLab.Data/3.3/ReferenceTypeData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/ReferenceTypeData.cs	(revision 2665)
+++ /trunk/sources/HeuristicLab.Data/3.3/ReferenceTypeData.cs	(revision 2665)
@@ -0,0 +1,74 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Collections.Generic;
+using System.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Data {
+  [Item("ReferenceTypeData<T>", "A base class for representing reference types.")]
+  public class ReferenceTypeData<T> : Item where T : class {
+    [Storable]
+    protected T value;
+    public T Value {
+      get { return value; }
+      set {
+        if (!value.Equals(this.value)) {
+          this.value = value;
+          OnValueChanged();
+        }
+      }
+    }
+
+    public ReferenceTypeData() {
+      value = default(T);
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      ReferenceTypeData<T> clone = (ReferenceTypeData<T>)base.Clone(cloner);
+      IDeepCloneable deepCloneable = Value as IDeepCloneable;
+      if (deepCloneable != null) {
+        clone.value = (T)deepCloneable.Clone(cloner);
+        return clone;
+      }
+      ICloneable cloneable = Value as ICloneable;
+      if (cloneable != null) {
+        clone.value = (T)cloneable.Clone();
+        return clone;
+      }
+      throw new InvalidOperationException("Contained object is not cloneable.");
+    }
+
+    public override string ToString() {
+      return value == null ? "null" : value.ToString();
+    }
+
+    public event EventHandler ValueChanged;
+    protected virtual void OnValueChanged() {
+      if (ValueChanged != null)
+        ValueChanged(this, EventArgs.Empty);
+      OnChanged();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Data/3.3/StringData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringData.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Data/3.3/StringData.cs	(revision 2665)
@@ -28,53 +28,28 @@
 
 namespace HeuristicLab.Data {
-  /// <summary>
-  /// The representation of a string.
-  /// </summary>
   [EmptyStorableClass]
-  public class StringData : ObjectData {
-    /// <summary>
-    /// Gets or sets the string value.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ObjectData.Data"/> of base class <see cref="ObjectData"/>. 
-    /// No own data storage present.</remarks>
-    public new string Data {
-      get { return (string)base.Data; }
-      set { base.Data = value; }
+  [Item("String", "Represents a string.")]
+  [Creatable("Test")]
+  public sealed class StringData : ReferenceTypeData<string>, IStringConvertibleData {
+    public StringData() : base() {
+      Value = string.Empty;
+    }
+    public StringData(string value)
+      : base() {
+      Value = value;
     }
 
-    /// <summary>
-    /// Initializes a new instance of <see cref="StringData"/> 
-    /// with the name of the type of the current instance as default value.
-    /// </summary>
-    public StringData() {
-      Data = this.GetType().Name;
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="StringData"/> with the specified <paramref name="data"/>.
-    /// </summary>
-    /// <param name="data">The string value the current instance should represent.</param>
-    public StringData(string data) {
-      Data = data;
-    }
-
-    /// <summary>
-    /// Clones the current instance.
-    /// </summary>
-    /// <remarks>The current instance is added to the dictionary <paramref name="clonedObjects"/>.</remarks>
-    /// <param name="clonedObjects">A dictionary of all already cloned objects.</param>
-    /// <returns>The coned instance as <see cref="StringData"/>.</returns>
-    public override IItem Clone(ICloner cloner) {
-      StringData clone = new StringData();
+    public override IDeepCloneable Clone(Cloner cloner) {
+      StringData clone = new StringData(Value);
       cloner.RegisterClonedObject(this, clone);
-      clone.Data = Data;
       return clone;
     }
 
-    /// <summary>
-    /// The string representation of the current instance.
-    /// </summary>
-    /// <returns>The string value.</returns>
-    public override string ToString() {
-      return Data;
+    string IStringConvertibleData.GetValue() {
+      return Value;
+    }
+    bool IStringConvertibleData.SetValue(string value) {
+      Value = value != null ? value : string.Empty;
+      return true;
     }
   }
Index: unk/sources/HeuristicLab.Data/3.3/StringDataView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringDataView.Designer.cs	(revision 2664)
+++ 	(revision )
@@ -1,76 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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 {
-  partial class StringDataView {
-    /// <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 && (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.dataTextBox = new System.Windows.Forms.TextBox();
-      this.SuspendLayout();
-      // 
-      // dataTextBox
-      // 
-      this.dataTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.dataTextBox.Location = new System.Drawing.Point(0, 0);
-      this.dataTextBox.Name = "dataTextBox";
-      this.dataTextBox.Size = new System.Drawing.Size(200, 20);
-      this.dataTextBox.TabIndex = 1;
-      this.dataTextBox.Validating += new System.ComponentModel.CancelEventHandler(this.dataTextBox_Validating);
-      // 
-      // StringDataView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dataTextBox);
-      this.Name = "StringDataView";
-      this.Size = new System.Drawing.Size(200, 25);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.TextBox dataTextBox;
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/StringDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringDataView.cs	(revision 2664)
+++ 	(revision )
@@ -1,107 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 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.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Data {
-  /// <summary>
-  /// The visual representation of the class <see cref="StringData"/>, symbolizing a string value.
-  /// </summary>
-  [Content(typeof(StringData), true)]
-  public partial class StringDataView : ItemViewBase {
-    /// <summary>
-    /// Gets or sets the string value to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="HeuristicLab.Core.ViewBase.Item"/> of base class <see cref="ViewBase"/>.
-    /// No own data storage present.</remarks>
-    public StringData StringData {
-      get { return (StringData)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="StringDataView"/>.
-    /// </summary>
-    public StringDataView() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of the class <see cref="StringDataView"/> with the given
-    /// <paramref name="stringData"/>.
-    /// <note type="caution"> No CopyConstructor! <paramref name="stringData"/> is not copied!</note>
-    /// </summary>
-    /// <param name="stringData">The string value to represent visually.</param>
-    public StringDataView(StringData stringData)
-      : this() {
-      StringData = stringData;
-    }
-
-    /// <summary>
-    /// Removes the eventhandler from the underlying <see cref="StringData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      StringData.Changed -= new EventHandler(StringData_Changed);
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds an eventhandler to the underlying <see cref="StringData"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="HeuristicLab.Core.ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      StringData.Changed += new EventHandler(StringData_Changed);
-    }
-
-    /// <summary>
-    /// Update the controls with the latest string value.
-    /// </summary>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (StringData == null) {
-        dataTextBox.Enabled = false;
-      } else {
-        dataTextBox.Enabled = true;
-        dataTextBox.Text = StringData.ToString();
-      }
-    }
-
-    private void dataTextBox_Validating(object sender, CancelEventArgs e) {
-      e.Cancel = false;
-      StringData.Data = dataTextBox.Text;
-    }
-
-    private void StringData_Changed(object sender, EventArgs e) {
-      Refresh();
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Data/3.3/StringDataView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringDataView.resx	(revision 2664)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /trunk/sources/HeuristicLab.Data/3.3/TimeSpanData.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/TimeSpanData.cs	(revision 2665)
+++ /trunk/sources/HeuristicLab.Data/3.3/TimeSpanData.cs	(revision 2665)
@@ -0,0 +1,59 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 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.Collections.Generic;
+using System.Text;
+using System.Xml;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+
+namespace HeuristicLab.Data {
+  [EmptyStorableClass]
+  [Item("TimeSpan", "Represents a duration of time.")]
+  [Creatable("Test")]
+  public sealed class TimeSpanData : ValueTypeData<TimeSpan>, IStringConvertibleData {
+    public TimeSpanData() : base() { }
+    public TimeSpanData(TimeSpan value)
+      : base() {
+      Value = value;
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      TimeSpanData clone = new TimeSpanData(Value);
+      cloner.RegisterClonedObject(this, clone);
+      return clone;
+    }
+
+    string IStringConvertibleData.GetValue() {
+      return Value.ToString();
+    }
+    bool IStringConvertibleData.SetValue(string value) {
+      TimeSpan t;
+      if (TimeSpan.TryParse(value, out t)) {
+        Value = t;
+        return true;
+      } else {
+        return false;
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs	(revision 2664)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs	(revision 2665)
@@ -53,9 +53,13 @@
       if (newItemDialog.ShowDialog() == DialogResult.OK) {
         IView view = MainFormManager.CreateDefaultView(newItemDialog.Item);
-        if (view is IObjectView) {
-          view.Caption = "Item" + newDocumentsCounter.ToString() + ".hl";
-          newDocumentsCounter++;
+        if (view == null) {
+          MessageBox.Show("There is no view for the new item. It cannot be displayed. ", "No View Available", MessageBoxButtons.OK, MessageBoxIcon.Error);
+        } else {
+          if (view is IObjectView) {
+            view.Caption = "Item" + newDocumentsCounter.ToString() + ".hl";
+            newDocumentsCounter++;
+          }
+          MainFormManager.MainForm.ShowView(view);
         }
-        MainFormManager.MainForm.ShowView(view);
       }
     }
@@ -188,5 +192,7 @@
               Invoke(delegate() {
                 IObjectView view = MainFormManager.CreateDefaultView(item) as IObjectView;
-                if (view != null) {
+                if (view == null) {
+                  MessageBox.Show("There is no view for the loaded item. It cannot be displayed. ", "No View Available", MessageBoxButtons.OK, MessageBoxIcon.Error);
+                } else {
                   view.Caption = Path.GetFileName(filename);
                   files.Add(view, new FileInfo(filename));
