Index: /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Data.Views/3.3/StringConvertibleMatrixView.Designer.cs	(revision 3632)
@@ -165,11 +165,11 @@
     #endregion
 
-    private System.Windows.Forms.Label rowsLabel;
-    private System.Windows.Forms.TextBox rowsTextBox;
-    private System.Windows.Forms.ErrorProvider errorProvider;
-    private System.Windows.Forms.TextBox columnsTextBox;
-    private System.Windows.Forms.Label columnsLabel;
-    private System.Windows.Forms.ContextMenuStrip contextMenu;
-    private System.Windows.Forms.ToolStripMenuItem ShowHideColumns;
+    protected System.Windows.Forms.Label rowsLabel;
+    protected System.Windows.Forms.TextBox rowsTextBox;
+    protected System.Windows.Forms.ErrorProvider errorProvider;
+    protected System.Windows.Forms.TextBox columnsTextBox;
+    protected System.Windows.Forms.Label columnsLabel;
+    protected System.Windows.Forms.ContextMenuStrip contextMenu;
+    protected System.Windows.Forms.ToolStripMenuItem ShowHideColumns;
     protected System.Windows.Forms.DataGridView dataGridView;
 
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.Designer.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.Designer.cs	(revision 3632)
@@ -34,9 +34,11 @@
       this.txtConstraintData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
+      this.errorProvider.SetIconAlignment(this.txtConstraintData, System.Windows.Forms.ErrorIconAlignment.MiddleLeft);
+      this.errorProvider.SetIconPadding(this.txtConstraintData, 2);
       this.txtConstraintData.Location = new System.Drawing.Point(127, 56);
       this.txtConstraintData.Name = "txtConstraintData";
       this.txtConstraintData.Size = new System.Drawing.Size(246, 20);
       this.txtConstraintData.TabIndex = 9;
-      this.txtConstraintData.TextChanged += new System.EventHandler(this.txtConstraintData_TextChanged);
+      this.txtConstraintData.Validated += new System.EventHandler(this.txtConstraintData_Validated);
       this.txtConstraintData.Validating += new System.ComponentModel.CancelEventHandler(this.txtConstraintData_Validating);
       // 
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.cs	(revision 3632)
@@ -36,5 +36,5 @@
 
     protected override void DeregisterContentEvents() {
-      base.RegisterContentEvents();
+      base.DeregisterContentEvents();
       Content.ConstraintDataChanged -= new EventHandler(Content_ConstraintDataChanged);
     }
@@ -52,6 +52,11 @@
           }
         }
-        if (Content.ConstraintColumn >= 0)
+        if (Content.ConstraintColumn >= 0) {
           this.cmbConstraintColumn.SelectedItem = (matrix.ColumnNames.ElementAt(Content.ConstraintColumn));
+          if (Content.ConstraintData != null)
+            txtConstraintData.Text = Content.ConstraintData.GetValue();
+          else
+            this.Content_ConstraintColumnChanged(cmbConstraintColumn, EventArgs.Empty);
+        }
       }
     }
@@ -74,10 +79,12 @@
     }
 
-    private void txtConstraintData_TextChanged(object sender, EventArgs e) {
-      Content.ConstraintData.SetValue(txtConstraintData.Text);
+    private void txtConstraintData_Validated(object sender, EventArgs e) {
+      IStringConvertibleValue value = (IStringConvertibleValue)Activator.CreateInstance(Content.ConstrainedValue.GetDataType(cmbConstraintColumn.SelectedItem.ToString()).First());
+      value.SetValue(txtConstraintData.Text);
+      Content.ConstraintData = value;
     }
 
     private void txtConstraintData_Validating(object sender, CancelEventArgs e) {
-      string errorMessage;
+      string errorMessage = string.Empty;
       if (!Content.ConstraintData.Validate(txtConstraintData.Text, out errorMessage)) {
         errorProvider.SetError(txtConstraintData, errorMessage);
Index: unk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectioComparisonConstraintView.resx	(revision 3631)
+++ 	(revision )
@@ -1,123 +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>
-  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs	(revision 3632)
@@ -120,6 +120,10 @@
     }
     private void run_Changed(object sender, EventArgs e) {
-      IRun run = (IRun)sender;
-      UpdateRun(run);
+      if (InvokeRequired)
+        this.Invoke(new EventHandler(run_Changed), sender, e);
+      else {
+        IRun run = (IRun)sender;
+        UpdateRun(run);
+      }
     }
 
@@ -144,5 +148,5 @@
       UpdateComboBoxes();
       UpdateDataPoints();
-      foreach(IRun run in Content) 
+      foreach (IRun run in Content)
         UpdateRun(run);
     }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintCollectionView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintCollectionView.Designer.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintCollectionView.Designer.cs	(revision 3632)
@@ -12,5 +12,4 @@
     protected override void Dispose(bool disposing) {
       if (disposing) {
-        if (createParameterDialog != null) createParameterDialog.Dispose();
         if (components != null) components.Dispose();
       }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintCollectionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintCollectionView.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintCollectionView.cs	(revision 3632)
@@ -32,5 +32,4 @@
   [Content(typeof(IItemCollection<IRunCollectionConstraint>), false)]
   public partial class RunCollectionConstraintCollectionView : ItemCollectionView<IRunCollectionConstraint> {
-    protected CreateParameterDialog createParameterDialog;
     /// <summary>
     /// Initializes a new instance of <see cref="VariablesScopeView"/> with caption "Variables Scope View".
@@ -64,27 +63,35 @@
       base.RegisterContentEvents();
       foreach (IRunCollectionConstraint constraint in Content)
-        constraint.ActiveChanged += new EventHandler(constraint_ActiveChanged);
+        RegisterConstraintEvents(constraint);
     }
     protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
       foreach (IRunCollectionConstraint constraint in Content)
-        constraint.ActiveChanged -= new EventHandler(constraint_ActiveChanged);
+        DeregisterConstraintEvents(constraint);
     }
     protected override void Content_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IRunCollectionConstraint> e) {
       base.Content_ItemsAdded(sender, e);
       foreach (IRunCollectionConstraint constraint in e.Items)
-        constraint.ActiveChanged += new EventHandler(constraint_ActiveChanged);
+        RegisterConstraintEvents(constraint);
     }
     protected override void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IRunCollectionConstraint> e) {
       base.Content_ItemsRemoved(sender, e);
       foreach (IRunCollectionConstraint constraint in e.Items)
-        constraint.ActiveChanged -= new EventHandler(constraint_ActiveChanged);
+        DeregisterConstraintEvents(constraint);
     }
     protected override void Content_CollectionReset(object sender, CollectionItemsChangedEventArgs<IRunCollectionConstraint> e) {
       base.Content_CollectionReset(sender, e);
       foreach (IRunCollectionConstraint constraint in e.OldItems)
-        constraint.ActiveChanged -= new EventHandler(constraint_ActiveChanged);
+        RegisterConstraintEvents(constraint);
       foreach (IRunCollectionConstraint constraint in e.Items)
-        constraint.ActiveChanged += new EventHandler(constraint_ActiveChanged);
+        DeregisterConstraintEvents(constraint);
+    }
+
+    protected virtual void RegisterConstraintEvents(IRunCollectionConstraint constraint) {
+      constraint.ActiveChanged += new EventHandler(constraint_ActiveChanged);
+    }
+
+    protected virtual void DeregisterConstraintEvents(IRunCollectionConstraint constraint) {
+      constraint.ActiveChanged -= new EventHandler(constraint_ActiveChanged);
     }
 
@@ -99,7 +106,6 @@
         }
       }
+      this.AdjustListViewColumnSizes();
     }
-
-
   }
 }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionTabularView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionTabularView.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionTabularView.cs	(revision 3632)
@@ -95,6 +95,10 @@
     }
     private void run_Changed(object sender, EventArgs e) {
-      IRun run = (IRun)sender;
-      UpdateRun(run);
+      if (InvokeRequired)
+        this.Invoke(new EventHandler(run_Changed), sender, e);
+      else {
+        IRun run = (IRun)sender;
+        UpdateRun(run);
+      }
     }
 
@@ -104,4 +108,5 @@
       this.dataGridView.Rows[rowIndex].Visible = run.Visible;
       this.dataGridView.Rows[rowIndex].DefaultCellStyle.ForeColor = run.Color;
+      this.rowsTextBox.Text = this.Content.Count(r => r.Visible).ToString();
     }
 
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionView.cs	(revision 3632)
@@ -335,6 +335,10 @@
     }
     protected virtual void Run_Changed(object sender, EventArgs e) {
-      IRun run = (IRun)sender;
-      UpdateRun(run);
+      if (InvokeRequired)
+        this.Invoke(new EventHandler(Run_Changed), sender, e);
+      else {
+        IRun run = (IRun)sender;
+        UpdateRun(run);
+      }
     }
 
Index: /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/RunCollection.cs	(revision 3632)
@@ -84,4 +84,5 @@
         OnColumnNamesChanged();
       OnRowNamesChanged();
+      this.UpdateFiltering(false);
     }
     protected override void OnItemsRemoved(IEnumerable<IRun> items) {
@@ -160,10 +161,9 @@
     public override IDeepCloneable Clone(Cloner cloner) {
       RunCollection clone = (RunCollection)base.Clone(cloner);
-      clone.resultNames = this.resultNames;
-      clone.parameterNames = this.parameterNames;
+      clone.resultNames = new List<string>(this.resultNames);
+      clone.parameterNames = new List<string>(this.parameterNames);
       clone.dataTypes = new Dictionary<string, HashSet<Type>>();
       foreach (string s in this.dataTypes.Keys)
         clone.dataTypes[s] = new HashSet<Type>(this.dataTypes[s]);
-
       return clone;
     }
@@ -252,6 +252,7 @@
 
     #region filtering
-    private void UpdateFiltering() {
-      list.ForEach(r => r.Visible = true);
+    private void UpdateFiltering(bool reset) {
+      if (reset)
+        list.ForEach(r => r.Visible = true);
       foreach (IRunCollectionConstraint constraint in this.constraints)
         constraint.Check();
@@ -278,5 +279,5 @@
       DeregisterConstraintEvents(e.OldItems);
       RegisterConstraintEvents(e.Items);
-      this.UpdateFiltering();
+      this.UpdateFiltering(true);
     }
     protected virtual void Constraints_ItemsAdded(object sender, CollectionItemsChangedEventArgs<IRunCollectionConstraint> e) {
@@ -284,12 +285,13 @@
       foreach (IRunCollectionConstraint constraint in e.Items)
         constraint.ConstrainedValue = this;
-      this.UpdateFiltering();
+      this.UpdateFiltering(false);
     }
     protected virtual void Constraints_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IRunCollectionConstraint> e) {
       DeregisterConstraintEvents(e.Items);
-      this.UpdateFiltering();
+      this.UpdateFiltering(true);
     }
     protected virtual void Constraint_ActiveChanged(object sender, EventArgs e) {
-      this.UpdateFiltering();
+      IRunCollectionConstraint constraint = (IRunCollectionConstraint)sender;
+      this.UpdateFiltering(!constraint.Active);
     }
     protected virtual void Constraint_ConstrainedValueChanged(object sender, EventArgs e) {
@@ -297,8 +299,12 @@
     }
     protected virtual void Constraint_ConstraintOperationChanged(object sender, EventArgs e) {
-      this.UpdateFiltering();
+      IRunCollectionConstraint constraint = (IRunCollectionConstraint)sender;
+      if (constraint.Active)
+        this.UpdateFiltering(true);
     }
     protected virtual void Constraint_ConstraintDataChanged(object sender, EventArgs e) {
-      this.UpdateFiltering();
+      IRunCollectionConstraint constraint = (IRunCollectionConstraint)sender;
+      if (constraint.Active)
+        this.UpdateFiltering(true);
     }
     #endregion
Index: /trunk/sources/HeuristicLab.Optimization/3.3/RunCollectionConstraints/RunCollectionComparisonConstraint.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/RunCollectionConstraints/RunCollectionComparisonConstraint.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/RunCollectionConstraints/RunCollectionComparisonConstraint.cs	(revision 3632)
@@ -70,4 +70,5 @@
           constraintColumn = value;
           this.OnConstraintColumnChanged();
+          this.OnToStringChanged();
         }
       }
Index: /trunk/sources/HeuristicLab.Optimization/3.3/RunCollectionConstraints/RunCollectionTypeCompatiblityConstraint.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization/3.3/RunCollectionConstraints/RunCollectionTypeCompatiblityConstraint.cs	(revision 3631)
+++ /trunk/sources/HeuristicLab.Optimization/3.3/RunCollectionConstraints/RunCollectionTypeCompatiblityConstraint.cs	(revision 3632)
@@ -60,4 +60,5 @@
           constraintColumn = value;
           this.OnConstraintColumnChanged();
+          this.OnToStringChanged();
         }
       }
