Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.Designer.cs	(revision 10692)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.Designer.cs	(revision 10693)
@@ -45,4 +45,5 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.lblAttr = new System.Windows.Forms.Label();
       this.lblFilterOperation = new System.Windows.Forms.Label();
@@ -51,4 +52,6 @@
       this.cbFilterOperation = new System.Windows.Forms.ComboBox();
       this.tbFilterData = new System.Windows.Forms.TextBox();
+      this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
       // 
@@ -112,4 +115,10 @@
       this.tbFilterData.Size = new System.Drawing.Size(247, 20);
       this.tbFilterData.TabIndex = 5;
+      this.tbFilterData.Validating += new System.ComponentModel.CancelEventHandler(this.tbFilterData_Validating);
+      this.tbFilterData.Validated += new System.EventHandler(this.tbFilterData_Validated);
+      // 
+      // errorProvider
+      // 
+      this.errorProvider.ContainerControl = this;
       // 
       // ComparisonFilterView
@@ -125,4 +134,5 @@
       this.Name = "ComparisonFilterView";
       this.Size = new System.Drawing.Size(348, 97);
+      ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -138,4 +148,5 @@
     private System.Windows.Forms.ComboBox cbFilterOperation;
     private System.Windows.Forms.TextBox tbFilterData;
+    private System.Windows.Forms.ErrorProvider errorProvider;
 
   }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.cs	(revision 10692)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.cs	(revision 10693)
@@ -28,4 +28,5 @@
 using System.Collections;
 using System;
+using System.Collections.Generic;
 
 namespace HeuristicLab.DataPreprocessing.Views {
@@ -62,4 +63,16 @@
           tbFilterData.Text = Content.ConstraintData.GetValue();
         }
+        else
+        {
+          this.Content_ConstraintColumnChanged(cbAttr, EventArgs.Empty); // TODO
+        }
+      }
+      if (Content == null || Content.ConstraintData == null)
+      {
+        tbFilterData.Text = string.Empty;
+      }
+      else
+      {
+        tbFilterData.Text = Content.ConstraintData.GetValue();
       }
     }
@@ -72,5 +85,14 @@
         this.cbAttr.Items.AddRange(Content.ConstrainedValue.VariableNames.ToArray<string>());
         //if (!string.IsNullOrEmpty(Content.ConstraintColumn))
-        this.cbAttr.SelectedItem = Content.ConstraintColumn;
+        this.cbAttr.SelectedItem = this.cbAttr.Items[Content.ConstraintColumn];
+
+        if (Content.ConstraintColumn != null)
+        {
+          cbAttr.SelectedItem = Content.ConstraintColumn;
+          if (Content.ConstraintData != null)
+            tbFilterData.Text = Content.ConstraintData.GetValue();
+          else
+            this.Content_ConstraintColumnChanged(cbAttr, EventArgs.Empty);
+        }
       }
     }
@@ -83,4 +105,5 @@
       this.Content.ConstraintColumnChanged += new EventHandler(Content_ConstraintColumnChanged);
       this.Content.ConstrainedValueChanged += new EventHandler(Content_ConstrainedValueChanged);
+      this.Content.ConstraintDataChanged += new EventHandler(Content_ConstrainedDataChanged);
     }
 
@@ -91,5 +114,6 @@
       this.Content.ConstraintOperationChanged -= new EventHandler(Content_ComparisonOperationChanged);
       this.Content.ConstraintColumnChanged -= new EventHandler(Content_ConstraintColumnChanged);
-      this.Content.ConstrainedValueChanged += new EventHandler(Content_ConstrainedValueChanged);
+      this.Content.ConstrainedValueChanged -= new EventHandler(Content_ConstrainedValueChanged);
+      this.Content.ConstraintDataChanged -= new EventHandler(Content_ConstrainedDataChanged);
     }
 
@@ -99,11 +123,24 @@
     }
 
+    private void Content_ConstrainedDataChanged(object sender, EventArgs e)
+    {
+      if (Content.ConstraintData != null)
+        tbFilterData.Text = Content.ConstraintData.GetValue();
+      else
+        tbFilterData.Text = string.Empty;
+    }
+
     protected virtual void Content_ConstraintColumnChanged(object sender, EventArgs e)
     {
       if (Content.ConstrainedValue != null)
       {
-          cbAttr.SelectedItem = Content.ConstraintColumn;
-      }
-    }
+        if (cbAttr.Items.IndexOf(cbAttr.SelectedItem) != Content.ConstraintColumn)
+        {
+          cbAttr.SelectedItem = this.cbAttr.Items[Content.ConstraintColumn];
+        }
+      }
+      this.Content.ConstraintData = new StringValue();
+    }
+
 
     protected virtual void Content_ComparisonOperationChanged(object sender, EventArgs e)
@@ -116,6 +153,13 @@
     {
       base.SetEnabledStateOfControls();
+      /*
       cbAttr.Enabled = !this.ReadOnly && Content != null;
       cbFilterOperation.Enabled = !this.ReadOnly && Content != null;
+      tbFilterData.Enabled = Content != null;
+      tbFilterData.ReadOnly = ReadOnly;
+       * */
+      cbAttr.Enabled = Content != null && !Content.Active;
+      cbFilterOperation.Enabled = Content != null && !Content.Active;
+      tbFilterData.Enabled = Content != null && !Content.Active;
     }
 
@@ -135,5 +179,26 @@
     protected virtual void Content_ActiveChanged(object sender, EventArgs e)
     {
-      this.ReadOnly = Content.Active;
+      this.ReadOnly = !Content.Active;
+      SetEnabledStateOfControls();
+      Refresh(); ResumeRepaint(true);
+    }
+
+    private void tbFilterData_Validated(object sender, EventArgs e)
+    {
+      IStringConvertibleValue value = new StringValue();
+        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();
     }
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs	(revision 10692)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs	(revision 10693)
@@ -11,4 +11,5 @@
 using HeuristicLab.Core;
 using HeuristicLab.DataPreprocessing.Filter;
+using HeuristicLab.Collections;
 
 namespace HeuristicLab.DataPreprocessing.Views
@@ -30,6 +31,6 @@
       filterView.Content = new CheckedItemCollection<IFilter>();
       filterView.Content.ItemsAdded += Content_ItemsAdded;
+      filterView.Content.ItemsRemoved += Content_ItemsRemoved;
       filterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
-      //filterView.ReadOnly = false;
       groupBoxFilter.Controls.Add(filterView);
     }
@@ -48,7 +49,23 @@
         filter.Active = !filter.Active;
       }
+      UpdateFilterInfo();
+      Refresh();
+      ResumeRepaint(true);
+    }
+
+    private void UpdateFilterInfo()
+    {
       List<IFilter> filters = filterView.ItemCollection.ToList<IFilter>();
       bool[] result = Content.FilterLogic.Preview(filters);
-      //todo: inform Logic for new filter
+      int filteredCnt = 0;
+      for (int i = 0; i < result.Length; i++)
+      {
+        if (result[i] == true)
+          filteredCnt++;
+      }
+      tbFiltered.Text = filteredCnt.ToString();
+      double percentage = filteredCnt * 100 / result.Length;
+      tbPercentage.Text = percentage.ToString() + "%";
+      tbTotal.Text = result.Length.ToString();
     }
 
@@ -64,5 +81,13 @@
       {
         filter.ConstrainedValue = Content.FilterLogic.PreprocessingData;
+        filter.Active = true;
+        filterView.Content.SetItemCheckedState(filter, false);
       }
+      UpdateFilterInfo();
+    }
+
+    private void Content_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<IFilter> e)
+    {
+      UpdateFilterInfo();
     }
 
