Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.Designer.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.Designer.cs	(revision 10946)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.Designer.cs	(revision 10947)
@@ -91,5 +91,5 @@
       this.cbAttr.Location = new System.Drawing.Point(92, 12);
       this.cbAttr.Name = "cbAttr";
-      this.cbAttr.Size = new System.Drawing.Size(247, 21);
+      this.cbAttr.Size = new System.Drawing.Size(235, 21);
       this.cbAttr.TabIndex = 3;
       this.cbAttr.SelectedIndexChanged += new System.EventHandler(this.cbAttr_SelectedIndexChanged);
@@ -103,5 +103,5 @@
       this.cbFilterOperation.Location = new System.Drawing.Point(92, 39);
       this.cbFilterOperation.Name = "cbFilterOperation";
-      this.cbFilterOperation.Size = new System.Drawing.Size(247, 21);
+      this.cbFilterOperation.Size = new System.Drawing.Size(235, 21);
       this.cbFilterOperation.TabIndex = 4;
       this.cbFilterOperation.SelectedIndexChanged += new System.EventHandler(this.cbFilterOperation_SelectedIndexChanged);
@@ -113,5 +113,5 @@
       this.tbFilterData.Location = new System.Drawing.Point(92, 67);
       this.tbFilterData.Name = "tbFilterData";
-      this.tbFilterData.Size = new System.Drawing.Size(247, 20);
+      this.tbFilterData.Size = new System.Drawing.Size(235, 20);
       this.tbFilterData.TabIndex = 5;
       this.tbFilterData.Validating += new System.ComponentModel.CancelEventHandler(this.tbFilterData_Validating);
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.cs	(revision 10946)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.cs	(revision 10947)
@@ -20,13 +20,11 @@
 #endregion
 
+using System;
 using System.Linq;
+using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
-using HeuristicLab.Core;
 using HeuristicLab.Data;
 using HeuristicLab.DataPreprocessing.Filter;
 using HeuristicLab.MainForm;
-using System.Collections;
-using System;
-using System.Collections.Generic;
 
 namespace HeuristicLab.DataPreprocessing.Views {
@@ -44,12 +42,10 @@
 
 
-    protected override void OnContentChanged()
-    {
+    protected override void OnContentChanged() {
       base.OnContentChanged();
       cbAttr.Items.Clear(); //cmbConstraintColumn.Items.Clear();
       cbFilterOperation.Items.Clear(); //cmbConstraintOperation.Items.Clear();
       tbFilterData.Text = string.Empty;
-      if (Content != null)
-      {
+      if (Content != null) {
         cbFilterOperation.Items.AddRange(Content.AllowedConstraintOperations.ToArray());
         if (Content.ConstraintOperation != null)
@@ -59,28 +55,20 @@
         UpdateColumnComboBox();
         ReadOnly = Content.Active;
-        if (Content.ConstraintData != null)
-        {
+        if (Content.ConstraintData != null) {
           tbFilterData.Text = Content.ConstraintData.GetValue();
-        }
-        else
-        {
+        } else {
           this.Content_ConstraintColumnChanged(cbAttr, EventArgs.Empty); // TODO
         }
       }
-      if (Content == null || Content.ConstraintData == null)
-      {
+      if (Content == null || Content.ConstraintData == null) {
         tbFilterData.Text = string.Empty;
-      }
-      else
-      {
+      } else {
         tbFilterData.Text = Content.ConstraintData.GetValue();
       }
     }
 
-    protected virtual void UpdateColumnComboBox()
-    {
+    protected virtual void UpdateColumnComboBox() {
       this.cbAttr.Items.Clear();
-      if (Content.ConstrainedValue != null)
-      {
+      if (Content.ConstrainedValue != null) {
         this.cbAttr.Items.AddRange(Content.ConstrainedValue.VariableNames.ToArray<string>());
         //if (!string.IsNullOrEmpty(Content.ConstraintColumn))
@@ -89,15 +77,14 @@
         //if (Content.ConstraintColumn != null)
         //{
-          cbAttr.SelectedItem = Content.ConstraintColumn;
-          if (Content.ConstraintData != null)
-            tbFilterData.Text = Content.ConstraintData.GetValue();
-          else
-            this.Content_ConstraintColumnChanged(cbAttr, EventArgs.Empty);
+        cbAttr.SelectedItem = Content.ConstraintColumn;
+        if (Content.ConstraintData != null)
+          tbFilterData.Text = Content.ConstraintData.GetValue();
+        else
+          this.Content_ConstraintColumnChanged(cbAttr, EventArgs.Empty);
         //}
       }
     }
 
-    protected override void RegisterContentEvents()
-    {
+    protected override void RegisterContentEvents() {
       base.RegisterContentEvents();
       this.Content.ActiveChanged += new EventHandler(Content_ActiveChanged);
@@ -108,6 +95,5 @@
     }
 
-    protected override void DeregisterContentEvents()
-    {
+    protected override void DeregisterContentEvents() {
       base.DeregisterContentEvents();
       this.Content.ActiveChanged -= new EventHandler(Content_ActiveChanged);
@@ -118,11 +104,9 @@
     }
 
-    protected virtual void Content_ConstrainedValueChanged(object sender, EventArgs e)
-    {
+    protected virtual void Content_ConstrainedValueChanged(object sender, EventArgs e) {
       this.UpdateColumnComboBox();
     }
 
-    private void Content_ConstrainedDataChanged(object sender, EventArgs e)
-    {
+    private void Content_ConstrainedDataChanged(object sender, EventArgs e) {
       if (Content.ConstraintData != null)
         tbFilterData.Text = Content.ConstraintData.GetValue();
@@ -131,26 +115,22 @@
     }
 
-    protected virtual void Content_ConstraintColumnChanged(object sender, EventArgs e)
-    {
-      if (Content.ConstrainedValue != null)
-      {
-        if (cbAttr.Items.IndexOf(cbAttr.SelectedItem) != Content.ConstraintColumn)
-        {
+    protected virtual void Content_ConstraintColumnChanged(object sender, EventArgs e) {
+      if (Content.ConstrainedValue != null) {
+        if (cbAttr.Items.IndexOf(cbAttr.SelectedItem) != Content.ConstraintColumn) {
           cbAttr.SelectedItem = this.cbAttr.Items[Content.ConstraintColumn];
         }
       }
-      if (Content.ConstraintData == null)
-        this.Content.ConstraintData = new StringValue();
+      if (Content.ConstraintData == null) {
+        this.Content.ConstraintData = CreateStringConvertibleValue(cbAttr.SelectedIndex);
+      }
     }
 
 
-    protected virtual void Content_ComparisonOperationChanged(object sender, EventArgs e)
-    {
+    protected virtual void Content_ComparisonOperationChanged(object sender, EventArgs e) {
       if (Content.ConstraintOperation != (ConstraintOperation)this.cbFilterOperation.SelectedItem)
         this.cbFilterOperation.SelectedItem = Content.ConstraintOperation;
     }
 
-    protected override void SetEnabledStateOfControls()
-    {
+    protected override void SetEnabledStateOfControls() {
       base.SetEnabledStateOfControls();
       /*
@@ -165,19 +145,15 @@
     }
 
-    private void cbAttr_SelectedIndexChanged(object sender, EventArgs e)
-    {
-      if (Content.ConstrainedValue != null)
-      {
+    private void cbAttr_SelectedIndexChanged(object sender, EventArgs e) {
+      if (Content.ConstrainedValue != null) {
         Content.ConstraintColumn = Content.ConstrainedValue.GetColumnIndex(cbAttr.SelectedItem.ToString());
       }
     }
 
-    private void cbFilterOperation_SelectedIndexChanged(object sender, EventArgs e)
-    {
+    private void cbFilterOperation_SelectedIndexChanged(object sender, EventArgs e) {
       Content.ConstraintOperation = (ConstraintOperation)this.cbFilterOperation.SelectedItem;
     }
 
-    protected virtual void Content_ActiveChanged(object sender, EventArgs e)
-    {
+    protected virtual void Content_ActiveChanged(object sender, EventArgs e) {
       this.ReadOnly = !Content.Active;
       SetEnabledStateOfControls();
@@ -185,21 +161,31 @@
     }
 
-    private void tbFilterData_Validated(object sender, EventArgs e)
-    {
-      IStringConvertibleValue value = new StringValue();
-        value.SetValue(tbFilterData.Text);
-        Content.ConstraintData = value;
+    private void tbFilterData_Validated(object sender, EventArgs e) {
+      IStringConvertibleValue value = CreateStringConvertibleValue(cbAttr.SelectedIndex);
+      value.SetValue(tbFilterData.Text);
+      Content.ConstraintData = value;
     }
 
-    private void tbFilterData_Validating(object sender, System.ComponentModel.CancelEventArgs e)
-    {
-        string errorMessage = string.Empty;
-        if (!Content.ConstraintData.Validate(tbFilterData.Text, out errorMessage))
-        {
-          errorProvider.SetError(tbFilterData, errorMessage);
-          e.Cancel = true;
-        }
-        else
-          errorProvider.Clear();
+    private IStringConvertibleValue CreateStringConvertibleValue(int columnIndex) {
+      IStringConvertibleValue value;
+      if (Content.ConstrainedValue.IsType<double>(columnIndex)) {
+        value = new DoubleValue();
+      } else if (Content.ConstrainedValue.IsType<String>(columnIndex)) {
+        value = new StringValue();
+      } else if (Content.ConstrainedValue.IsType<DateTime>(columnIndex)) {
+        value = new DateTimeValue();
+      } else {
+        throw new ArgumentException("unsupported type");
+      }
+      return value;
+    }
+
+    private void tbFilterData_Validating(object sender, System.ComponentModel.CancelEventArgs e) {
+      string errorMessage = string.Empty;
+      if (!Content.ConstraintData.Validate(tbFilterData.Text, out errorMessage)) {
+        errorProvider.SetError(tbFilterData, errorMessage);
+        e.Cancel = true;
+      } else
+        errorProvider.Clear();
     }
 
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/CopyOfStringConvertibleMatrixView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/CopyOfStringConvertibleMatrixView.cs	(revision 10946)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/CopyOfStringConvertibleMatrixView.cs	(revision 10947)
@@ -104,8 +104,18 @@
     }
 
+    // Was private before
+    protected void Sort() {
+      virtualRowIndices = Sort(sortedColumnIndices);
+      UpdateSortGlyph();
+      UpdateRowHeaders();
+      dataGridView.Invalidate();
+    }
+
+    // Was private before
+    protected List<KeyValuePair<int, SortOrder>> sortedColumnIndices;
+
     #region unchanged copied from original - see  HeuristicLab.Data.Views.StringConvertibleMatrix
 
     protected int[] virtualRowIndices;
-    private List<KeyValuePair<int, SortOrder>> sortedColumnIndices;
     private RowComparer rowComparer;
 
@@ -293,6 +303,5 @@
     private Point[] GetSelectedCellsAsPoints() {
       Point[] points = new Point[dataGridView.SelectedCells.Count];
-      for (int i = 0; i < dataGridView.SelectedCells.Count; i++)
-      {
+      for (int i = 0; i < dataGridView.SelectedCells.Count; i++) {
         points[i].X = dataGridView.SelectedCells[i].ColumnIndex;
         points[i].Y = dataGridView.SelectedCells[i].RowIndex;
@@ -487,10 +496,4 @@
     }
 
-    private void Sort() {
-      virtualRowIndices = Sort(sortedColumnIndices);
-      UpdateSortGlyph();
-      UpdateRowHeaders();
-      dataGridView.Invalidate();
-    }
     protected virtual int[] Sort(IEnumerable<KeyValuePair<int, SortOrder>> sortedColumns) {
       int[] newSortedIndex = Enumerable.Range(0, Content.Rows).ToArray();
@@ -597,5 +600,5 @@
     }
 
-   
+
   }
     #endregion
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 10946)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 10947)
@@ -73,4 +73,5 @@
       dataGridView.KeyDown += dataGridView_KeyDown;
       dataGridView.MouseUp += dataGridView_MouseUp;
+      dataGridView.ColumnHeaderMouseClick += dataGridView_ColumnHeaderMouseClick;
       contextMenuCell.Items.Add(ShowHideColumns);
       _highlightedRowIndices = new List<int>();
@@ -79,4 +80,8 @@
     }
 
+    private void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
+      searchIterator = null;
+    }
+
     protected override void dataGridView_SelectionChanged(object sender, EventArgs e) {
       if (Content != null) {
@@ -87,7 +92,7 @@
             return;
           }
-           
+
           base.dataGridView_SelectionChanged(sender, e);
-       
+
           Content.DataGridLogic.SetSelection(GetSelectedCells());
         }
@@ -96,10 +101,10 @@
 
     private void dataGridView_MouseUp(object sender, MouseEventArgs e) {
-      if (!updateOnMouseUp) 
+      if (!updateOnMouseUp)
         return;
 
       updateOnMouseUp = false;
       dataGridView_SelectionChanged(sender, e);
-    }                                     
+    }
 
     protected override void OnContentChanged() {
@@ -250,7 +255,8 @@
 
     void findAndReplaceDialog_FindNextEvent(object sender, EventArgs e) {
-      if (searchIterator == null ||
-        currentSearchText != findAndReplaceDialog.GetSearchText() ||
-        currentComparisonOperation != findAndReplaceDialog.GetComparisonOperation()) {
+      if (searchIterator == null
+        || currentSearchText != findAndReplaceDialog.GetSearchText()
+        || currentComparisonOperation != findAndReplaceDialog.GetComparisonOperation()) {
+
         searchIterator = new FindPreprocessingItemsIterator(FindAll(findAndReplaceDialog.GetSearchText()));
         currentSearchText = findAndReplaceDialog.GetSearchText();
@@ -349,9 +355,8 @@
       bool searchInSelection = HightlightedCellsBackground.Values.Sum(list => list.Count) > 1;
       ComparisonOperation comparisonOperation = findAndReplaceDialog.GetComparisonOperation();
-      var comparisonFilter = new ComparisonFilter(Content.FilterLogic.PreprocessingData, GetConstraintOperation(comparisonOperation), new StringValue(match), true);
-      var filters = new List<Filter.IFilter>() { comparisonFilter };
       var foundCells = new Dictionary<int, IList<int>>();
       for (int i = 0; i < Content.FilterLogic.PreprocessingData.Columns; i++) {
-        comparisonFilter.ConstraintColumn = i;
+        var filters = CreateFilters(match, comparisonOperation, i);
+
         bool[] filteredRows = Content.FilterLogic.GetFilterResult(filters, true);
         var foundIndices = new List<int>();
@@ -370,5 +375,46 @@
         }
       }
-      return foundCells;
+      return MapToSorting(foundCells);
+    }
+
+    private List<IFilter> CreateFilters(string match, ComparisonOperation comparisonOperation, int columnIndex) {
+      IPreprocessingData preprocessingData = Content.FilterLogic.PreprocessingData;
+      IStringConvertibleValue value;
+      if (preprocessingData.IsType<double>(columnIndex)) {
+        value = new DoubleValue();
+      } else if (preprocessingData.IsType<String>(columnIndex)) {
+        value = new StringValue();
+      } else if (preprocessingData.IsType<DateTime>(columnIndex)) {
+        value = new DateTimeValue();
+      } else {
+        throw new ArgumentException("unsupported type");
+      }
+      value.SetValue(match);
+      var comparisonFilter = new ComparisonFilter(preprocessingData, GetConstraintOperation(comparisonOperation), value, true);
+      comparisonFilter.ConstraintColumn = columnIndex;
+      return new List<Filter.IFilter>() { comparisonFilter };
+    }
+
+    private IDictionary<int, IList<int>> MapToSorting(Dictionary<int, IList<int>> foundCells) {
+      if (sortedColumnIndices.Count == 0) {
+        return foundCells;
+      } else {
+        var sortedFoundCells = new Dictionary<int, IList<int>>();
+
+        var indicesToVirtual = new Dictionary<int, int>();
+        for (int i = 0; i < virtualRowIndices.Length; ++i) {
+          indicesToVirtual.Add(virtualRowIndices[i], i);
+        }
+
+        foreach (var entry in foundCells) {
+          var cells = new List<int>();
+          foreach (var cell in entry.Value) {
+            cells.Add(indicesToVirtual[cell]);
+          }
+          cells.Sort();
+          sortedFoundCells.Add(entry.Key, cells);
+        }
+        return sortedFoundCells;
+      }
     }
 
@@ -533,5 +579,5 @@
     private void StopReplacing() {
       isReplacing = false;
-      ResumeRepaint(true); 
+      ResumeRepaint(true);
     }
 
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/Filter/ComparisonFilter.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/Filter/ComparisonFilter.cs	(revision 10946)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.4/Implementations/Filter/ComparisonFilter.cs	(revision 10947)
@@ -20,149 +20,128 @@
 #endregion
 
+using System;
 using System.Drawing;
+using HeuristicLab.Common;
 using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
-using System;
-using System.Collections;
-using HeuristicLab.Common;
 using HeuristicLab.Data;
-using System.Collections.Generic;
 
-namespace HeuristicLab.DataPreprocessing.Filter
-{
-    [Item("ComparisonFilter", "A filter which compares the member of the preprocessing data with the constraint data.")]
-    public class ComparisonFilter : ComparisonConstraint, IFilter
-    {
-        protected ComparisonFilter(bool deserializing) : base(deserializing) { }
+namespace HeuristicLab.DataPreprocessing.Filter {
+  [Item("ComparisonFilter", "A filter which compares the member of the preprocessing data with the constraint data.")]
+  public class ComparisonFilter : ComparisonConstraint, IFilter {
 
-        protected ComparisonFilter(ComparisonFilter original, Cloner cloner)
-            : base(original, cloner)
-        {
-            constraintColumn = original.constraintColumn;
+    
+
+    protected ComparisonFilter(bool deserializing) : base(deserializing) {
+    
+    }
+
+    protected ComparisonFilter(ComparisonFilter original, Cloner cloner)
+      : base(original, cloner) {
+      constraintColumn = original.constraintColumn;
+    }
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new ComparisonFilter(this, cloner);
+    }
+
+    public ComparisonFilter() : base() { }
+    public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData)
+      : base(constrainedValue, constraintOperation, constraintData) {
+    }
+
+    public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData, bool active)
+      : base(constrainedValue, constraintOperation, constraintData, active) {
+    }
+
+
+    public override string ItemName {
+      get { return "ComparisonFilter"; }
+    }
+
+    public override Image ItemImage {
+      get { return VSImageLibrary.Filter; }
+    }
+
+    public new IPreprocessingData ConstrainedValue {
+      get { return (IPreprocessingData)base.ConstrainedValue; }
+      set { base.ConstrainedValue = value; }
+    }
+
+    public new IStringConvertibleValue ConstraintData {
+      get { return (IStringConvertibleValue)base.ConstraintData; }
+      set {
+        if (!(value is IComparable))
+          throw new ArgumentException("Only IComparables allowed for ConstraintData");
+        base.ConstraintData = value;
+      }
+    }
+
+
+    private int constraintColumn;
+    public int ConstraintColumn {
+      get { return constraintColumn; }
+      set {
+        if (ConstrainedValue.Columns < value)
+          throw new ArgumentException("Could not set ConstraintData to not existing column index.");
+
+        if (constraintColumn != value) {
+          constraintColumn = value;
+          this.OnConstraintColumnChanged();
+          this.OnToStringChanged();
         }
-        public override IDeepCloneable Clone(Cloner cloner)
-        {
-            return new ComparisonFilter(this, cloner);
+      }
+    }
+
+
+    public new bool[] Check() {
+      bool[] result = new bool[ConstrainedValue.Rows];
+
+      if (!Active)
+        return result;
+
+      for (int row = 0; row < ConstrainedValue.Rows; ++row) {
+        object item = null;
+        if (ConstrainedValue.IsType<double>(constraintColumn)) {
+          item = new HeuristicLab.Data.DoubleValue(ConstrainedValue.GetCell<double>(ConstraintColumn, row));
+        } else if (ConstrainedValue.IsType<DateTime>(constraintColumn)) {
+          item = new HeuristicLab.Data.DateTimeValue(ConstrainedValue.GetCell<DateTime>(ConstraintColumn, row));
+        } else {
+          item = new StringValue(ConstrainedValue.GetCell<string>(ConstraintColumn, row));
         }
 
-        public ComparisonFilter() : base() { }
-        public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData)
-            : base(constrainedValue, constraintOperation, constraintData)
-        {
-        }
+        result[row] = !base.Check(item);
+      }
 
-        public ComparisonFilter(IPreprocessingData constrainedValue, ConstraintOperation constraintOperation, object constraintData, bool active)
-            : base(constrainedValue, constraintOperation, constraintData, active)
-        {
-        }
+      return result;
+    }
 
+    public new bool[] Check(out string errorMessage) {
+      errorMessage = string.Empty;
+      return this.Check();
+    }
 
-        public override string ItemName
-        {
-            get { return "ComparisonFilter"; }
-        }
+    public event EventHandler ConstraintColumnChanged;
+    protected virtual void OnConstraintColumnChanged() {
+      EventHandler handler = ConstraintColumnChanged;
+      if (handler != null)
+        handler(this, EventArgs.Empty);
+    }
 
-        public override Image ItemImage
-        {
-            get { return VSImageLibrary.Filter; }
-        }
+    public override string ToString() {
+      string s = string.Empty;
+      if (ConstrainedValue != null)
+        s += ConstrainedValue.GetVariableName(ConstraintColumn) + " ";
 
-        public new IPreprocessingData ConstrainedValue
-        {
-            get { return (IPreprocessingData)base.ConstrainedValue; }
-            set { base.ConstrainedValue = value; }
-        }
+      if (ConstraintOperation != null)
+        s += ConstraintOperation.ToString() + " ";
 
-        public new IStringConvertibleValue ConstraintData
-        {
-            get { return (IStringConvertibleValue)base.ConstraintData; }
-            set
-            {
-                if (!(value is IComparable))
-                    throw new ArgumentException("Only IComparables allowed for ConstraintData");
-                base.ConstraintData = value;
-            }
-        }
+      if (ConstraintData != null)
+        s += ConstraintData.ToString();
+      else
+        s += "null";
 
-
-        private int constraintColumn;
-        public int ConstraintColumn
-        {
-            get { return constraintColumn; }
-            set
-            {
-                if (ConstrainedValue.Columns < value)
-                    throw new ArgumentException("Could not set ConstraintData to not existing column index.");
-
-                if (constraintColumn != value)
-                {
-                    constraintColumn = value;
-                    this.OnConstraintColumnChanged();
-                    this.OnToStringChanged();
-                }
-            }
-        }
-
-
-        public new bool[] Check()
-        {
-            bool[] result = new bool[ConstrainedValue.Rows];
-
-            if (!Active)
-                return result;
-
-            for (int row = 0; row < ConstrainedValue.Rows; ++row)
-            {
-                object item = null;
-                if (ConstrainedValue.IsType<double>(constraintColumn))
-                {
-                  item = new StringValue(ConstrainedValue.GetCell<double>(ConstraintColumn, row).ToString());
-                }
-                else if (ConstrainedValue.IsType<DateTime>(constraintColumn))
-                {
-                  item = new StringValue(ConstrainedValue.GetCell<DateTime>(ConstraintColumn, row).ToString());
-                }
-                else
-                {
-                  item = new StringValue(ConstrainedValue.GetCell<string>(ConstraintColumn, row));
-                }
-
-                result[row] = !base.Check(item);
-            }
-
-            return result;
-        }
-
-        public new bool[] Check(out string errorMessage)
-        {
-            errorMessage = string.Empty;
-            return this.Check();
-        }
-
-        public event EventHandler ConstraintColumnChanged;
-        protected virtual void OnConstraintColumnChanged()
-        {
-            EventHandler handler = ConstraintColumnChanged;
-            if (handler != null)
-                handler(this, EventArgs.Empty);
-        }
-
-        public override string ToString()
-        {
-          string s = string.Empty;
-          if (ConstrainedValue != null)
-            s += ConstrainedValue.GetVariableName(ConstraintColumn) + " ";
-
-          if (ConstraintOperation != null)
-            s += ConstraintOperation.ToString() + " ";
-
-          if (ConstraintData != null)
-            s += ConstraintData.ToString();
-          else
-            s += "null";
-
-          s += ".";
-          return s;
-        }
+      s += ".";
+      return s;
     }
+  }
 }
