Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/CheckedFilterCollectionView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/CheckedFilterCollectionView.Designer.cs	(revision 10785)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/CheckedFilterCollectionView.Designer.cs	(revision 10785)
@@ -0,0 +1,39 @@
+﻿using HeuristicLab.Core.Views;
+using HeuristicLab.DataPreprocessing.Filter;
+namespace HeuristicLab.DataPreprocessing.Views
+{
+  partial class CheckedFilterCollectionView
+  {
+    /// <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()
+    {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+    }
+
+    #endregion
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/CheckedFilterCollectionView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/CheckedFilterCollectionView.cs	(revision 10785)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/CheckedFilterCollectionView.cs	(revision 10785)
@@ -0,0 +1,32 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.Collections;
+using HeuristicLab.MainForm;
+using HeuristicLab.Core;
+using HeuristicLab.DataPreprocessing.Filter;
+
+namespace HeuristicLab.DataPreprocessing.Views
+{
+  [View("CheckedFilterCollection View")]
+  [Content(typeof(ICheckedItemCollection<>), false)]
+  [Content(typeof(CheckedItemCollection<>), false)]
+  public partial class CheckedFilterCollectionView : CheckedItemCollectionView<IFilter>
+  {
+    public CheckedFilterCollectionView()
+    {
+      InitializeComponent();
+    }
+
+    protected override void addButton_Click(object sender, EventArgs e)
+    {
+      Content.Add(new ComparisonFilter());
+    }
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs	(revision 10784)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataGridContentView.cs	(revision 10785)
@@ -220,5 +220,5 @@
       for (int i = 0; i < Content.FilterLogic.PreprocessingData.Columns; i++) {
         comparisonFilter.ConstraintColumn = i;
-        bool[] filteredRows = Content.FilterLogic.Preview(filters);
+        bool[] filteredRows = Content.FilterLogic.Preview(filters, true);
         foundCells[i] = filteredRows.Select((value, index) => new { Index = index, Value = value })
           .Where(pair => pair.Value)
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.Designer.cs	(revision 10784)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.Designer.cs	(revision 10785)
@@ -30,4 +30,5 @@
     {
       this.groupBoxFilter = new System.Windows.Forms.GroupBox();
+      this.checkedFilterView = new HeuristicLab.DataPreprocessing.Views.CheckedFilterCollectionView();
       this.groupBoxFilterInfo = new System.Windows.Forms.GroupBox();
       this.lblPercentage = new System.Windows.Forms.Label();
@@ -38,4 +39,8 @@
       this.lblTotal = new System.Windows.Forms.Label();
       this.applyFilterButton = new System.Windows.Forms.Button();
+      this.rBtnOr = new System.Windows.Forms.RadioButton();
+      this.rBtnAnd = new System.Windows.Forms.RadioButton();
+      this.btnReset = new System.Windows.Forms.Button();
+      this.groupBoxFilter.SuspendLayout();
       this.groupBoxFilterInfo.SuspendLayout();
       this.SuspendLayout();
@@ -45,4 +50,5 @@
       this.groupBoxFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
+      this.groupBoxFilter.Controls.Add(this.checkedFilterView);
       this.groupBoxFilter.Location = new System.Drawing.Point(4, 4);
       this.groupBoxFilter.Name = "groupBoxFilter";
@@ -52,8 +58,19 @@
       this.groupBoxFilter.Text = "Filter";
       // 
+      // checkedFilterView
+      // 
+      this.checkedFilterView.Caption = "filterView";
+      this.checkedFilterView.Content = null;
+      this.checkedFilterView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.checkedFilterView.Location = new System.Drawing.Point(3, 16);
+      this.checkedFilterView.Name = "checkedFilterView";
+      this.checkedFilterView.ReadOnly = false;
+      this.checkedFilterView.ShowDetails = true;
+      this.checkedFilterView.Size = new System.Drawing.Size(652, 308);
+      this.checkedFilterView.TabIndex = 0;
+      // 
       // groupBoxFilterInfo
       // 
-      this.groupBoxFilterInfo.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left) 
+      this.groupBoxFilterInfo.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
             | System.Windows.Forms.AnchorStyles.Right)));
       this.groupBoxFilterInfo.Controls.Add(this.lblPercentage);
@@ -139,8 +156,50 @@
       this.applyFilterButton.Click += new System.EventHandler(this.applyFilterButton_Click);
       // 
+      // rBtnOr
+      // 
+      this.rBtnOr.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.rBtnOr.AutoSize = true;
+      this.rBtnOr.Enabled = false;
+      this.rBtnOr.Location = new System.Drawing.Point(60, 480);
+      this.rBtnOr.Name = "rBtnOr";
+      this.rBtnOr.Size = new System.Drawing.Size(36, 17);
+      this.rBtnOr.TabIndex = 3;
+      this.rBtnOr.Text = "Or";
+      this.rBtnOr.UseVisualStyleBackColor = true;
+      // 
+      // rBtnAnd
+      // 
+      this.rBtnAnd.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.rBtnAnd.AutoSize = true;
+      this.rBtnAnd.Checked = true;
+      this.rBtnAnd.Enabled = false;
+      this.rBtnAnd.Location = new System.Drawing.Point(10, 480);
+      this.rBtnAnd.Name = "rBtnAnd";
+      this.rBtnAnd.Size = new System.Drawing.Size(44, 17);
+      this.rBtnAnd.TabIndex = 4;
+      this.rBtnAnd.TabStop = true;
+      this.rBtnAnd.Text = "And";
+      this.rBtnAnd.UseVisualStyleBackColor = true;
+      this.rBtnAnd.CheckedChanged += new System.EventHandler(this.rBtnAnd_CheckedChanged);
+      // 
+      // btnReset
+      // 
+      this.btnReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.btnReset.Enabled = false;
+      this.btnReset.Location = new System.Drawing.Point(473, 473);
+      this.btnReset.Name = "btnReset";
+      this.btnReset.Size = new System.Drawing.Size(75, 23);
+      this.btnReset.TabIndex = 5;
+      this.btnReset.Text = "Reset";
+      this.btnReset.UseVisualStyleBackColor = true;
+      this.btnReset.Click += new System.EventHandler(this.btnReset_Click);
+      // 
       // FilterView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.btnReset);
+      this.Controls.Add(this.rBtnAnd);
+      this.Controls.Add(this.rBtnOr);
       this.Controls.Add(this.applyFilterButton);
       this.Controls.Add(this.groupBoxFilterInfo);
@@ -148,7 +207,9 @@
       this.Name = "FilterView";
       this.Size = new System.Drawing.Size(670, 506);
+      this.groupBoxFilter.ResumeLayout(false);
       this.groupBoxFilterInfo.ResumeLayout(false);
       this.groupBoxFilterInfo.PerformLayout();
       this.ResumeLayout(false);
+      this.PerformLayout();
 
     }
@@ -165,4 +226,8 @@
     private System.Windows.Forms.TextBox tbFiltered;
     private System.Windows.Forms.Label lblFiltered;
+    private System.Windows.Forms.RadioButton rBtnOr;
+    private System.Windows.Forms.RadioButton rBtnAnd;
+    private CheckedFilterCollectionView checkedFilterView;
+    private System.Windows.Forms.Button btnReset;
 
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs	(revision 10784)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs	(revision 10785)
@@ -14,5 +14,5 @@
   [Content(typeof(FilterContent), true)]
   public partial class FilterView : ItemView {
-    private CheckedItemCollectionView<IFilter> filterView;
+    //private CheckedItemCollectionView<IFilter> filterView;
 
     public FilterView() {
@@ -21,16 +21,19 @@
       tbFiltered.Text = "0";
       tbPercentage.Text = "0%";
-      filterView = new CheckedItemCollectionView<IFilter>();
-      filterView.Dock = DockStyle.Fill;
+      checkedFilterView.Content = new CheckedItemCollection<IFilter>();
+      //filterView = new CheckedItemCollectionView<IFilter>();
+      //filterView = new CheckedFilterCollectionView();
+      /*filterView.Dock = DockStyle.Fill;
       filterView.Content = new CheckedItemCollection<IFilter>();
-      filterView.Content.ItemsAdded += Content_ItemsAdded;
-      filterView.Content.ItemsRemoved += Content_ItemsRemoved;
-      filterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
-      groupBoxFilter.Controls.Add(filterView);
+       * */
+      checkedFilterView.Content.ItemsAdded += Content_ItemsAdded;
+      checkedFilterView.Content.ItemsRemoved += Content_ItemsRemoved;
+      checkedFilterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
+      //groupBoxFilter.Controls.Add(filterView);*/
     }
 
     public new FilterContent Content {
       get { return (FilterContent)base.Content; }
-      set { base.Content = value; }
+      set { base.Content = value; UpdateFilterInfo(); }
     }
 
@@ -39,9 +42,4 @@
       foreach (IFilter filter in e.Items)
       {
- /*       if (filterView.Content.CheckedItems.Contains(filter) && (filter.ConstraintData == null || string.IsNullOrEmpty(((StringValue)filter.ConstraintData).Value)) )
-        {
-          filter.ConstraintData = new StringValue("0");
-        }
-  * */
         filter.Active = !filter.Active;
       }
@@ -52,13 +50,16 @@
 
     private void UpdateFilterInfo() {
-      List<IFilter> filters = filterView.ItemCollection.ToList<IFilter>();
+      List<IFilter> filters = checkedFilterView.ItemCollection.ToList<IFilter>();
 
       int activeFilters = filters.Count(c => c.Active);
 
       applyFilterButton.Enabled = (activeFilters > 0);
+      rBtnAnd.Enabled = (activeFilters > 0);
+      rBtnOr.Enabled = (activeFilters > 0);
+      btnReset.Enabled = (activeFilters > 0);
 
-      bool[] result = Content.FilterLogic.Preview(filters);
+      bool[] result = Content.FilterLogic.Preview(filters, rBtnAnd.Checked);
       
-      int filteredCnt = result.Count(c => !c);
+      int filteredCnt = result.Count(c => c);
   
       tbFiltered.Text = filteredCnt.ToString();
@@ -69,6 +70,6 @@
 
     private void applyFilterButton_Click(object sender, EventArgs e) {
-      List<IFilter> filters = filterView.ItemCollection.ToList<IFilter>();
-      Content.FilterLogic.Apply(filters);
+      List<IFilter> filters = checkedFilterView.ItemCollection.ToList<IFilter>();
+      Content.FilterLogic.Apply(filters, rBtnAnd.Checked);
     }
 
@@ -78,5 +79,5 @@
         filter.ConstrainedValue = Content.FilterLogic.PreprocessingData;
         filter.Active = true;
-        filterView.Content.SetItemCheckedState(filter, false);
+        checkedFilterView.Content.SetItemCheckedState(filter, false);
       }
       UpdateFilterInfo();
@@ -87,4 +88,14 @@
     }
 
+    private void rBtnAnd_CheckedChanged(object sender, EventArgs e)
+    {
+      UpdateFilterInfo();
+    }
+
+    private void btnReset_Click(object sender, EventArgs e)
+    {
+      Content.FilterLogic.Reset();
+    }
+
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj	(revision 10784)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj	(revision 10785)
@@ -64,4 +64,10 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="CheckedFilterCollectionView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="CheckedFilterCollectionView.Designer.cs">
+      <DependentUpon>CheckedFilterCollectionView.cs</DependentUpon>
+    </Compile>
     <Compile Include="CheckedTransformationCollectionView.cs">
       <SubType>UserControl</SubType>
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/ComparisonFilter.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/ComparisonFilter.cs	(revision 10784)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/ComparisonFilter.cs	(revision 10785)
@@ -128,5 +128,5 @@
                 }
 
-                result[row] = base.Check(item);
+                result[row] = !base.Check(item);
             }
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/FilterLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/FilterLogic.cs	(revision 10784)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/FilterLogic.cs	(revision 10785)
@@ -35,5 +35,5 @@
     }
 
-    public bool[] Preview(IList<IFilter> filters)
+    public bool[] Preview(IList<IFilter> filters, bool isAndCombination)
     {
        IList<IFilter> activeFilters = filters.Where(f => f.Active && f.ConstraintData != null).ToList<IFilter>();
@@ -44,13 +44,13 @@
 
        bool[] result = Enumerable.Repeat<bool>(true, preprocessingData.Rows).ToArray();
+         foreach (IFilter filter in activeFilters)
+         {
+           bool[] filterResult = filter.Check();
+           for (int row = 0; row < result.Length; ++row)
+           {
+             result[row] = isAndCombination ?  result[row] && filterResult[row] : result[row] || filterResult[row];
+           }
+         }
 
-       foreach (IFilter filter in activeFilters)
-       {
-            bool[] filterResult = filter.Check();
-
-            for(int row = 0; row < result.Length; ++row) {
-                result[row] = result[row] && filterResult[row];
-            }
-        }
 
         preprocessingData.SetFilter(result);
@@ -59,7 +59,7 @@
     }
 
-    public void Apply(IList<IFilter> filters)
+    public void Apply(IList<IFilter> filters, bool isAndCombination)
     {
-        preprocessingData.SetFilter(Preview(filters));
+        preprocessingData.SetFilter(Preview(filters, isAndCombination));
         preprocessingData.PersistFilter();
     }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IFilterLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IFilterLogic.cs	(revision 10784)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IFilterLogic.cs	(revision 10785)
@@ -24,7 +24,8 @@
 namespace HeuristicLab.DataPreprocessing {
   public interface IFilterLogic {
-    bool[] Preview(IList<IFilter> filters);
-    void Apply(IList<IFilter> filters);
+    bool[] Preview(IList<IFilter> filters, bool isAndCombination);
+    void Apply(IList<IFilter> filters, bool isAndCombination);
     IPreprocessingData PreprocessingData{get;}
+    void Reset();
   }
 }
