Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10548)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10549)
@@ -80,4 +80,6 @@
     <Compile Include="Implementations\DataGridLogic.cs" />
     <Compile Include="Implementations\DataPreprocessingChangedEvent.cs" />
+    <Compile Include="Implementations\Filter\ComparisonFilter.cs" />
+    <Compile Include="Implementations\Filter\IFilter.cs" />
     <Compile Include="Implementations\ManipulationLogic.cs" />
     <Compile Include="Interfaces\IDataGridLogic.cs" />
@@ -98,4 +100,10 @@
     <Compile Include="Interfaces\ITransformationLogic.cs" />
     <Compile Include="ProblemDataCreator.cs" />
+    <Compile Include="Views\ComparisonFilterView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Views\ComparisonFilterView.Designer.cs">
+      <DependentUpon>ComparisonFilterView.cs</DependentUpon>
+    </Compile>
     <Compile Include="Views\FilterView.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 10549)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/ComparisonFilter.cs	(revision 10549)
@@ -0,0 +1,29 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.DataPreprocessing
+{
+  [Item("ComparisonFilter", "Represents the comparison Filter.")]
+  public class ComparisonFilter : ComparisonConstraint, IFilter
+  {
+    public override string ItemName
+    {
+      get
+      {
+        return "ComparisonFilter";
+      }
+    }
+
+    public override System.Drawing.Image ItemImage
+    {
+      get
+      {
+        return HeuristicLab.Common.Resources.VSImageLibrary.Filter;
+      }
+    }
+  }
+}
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/IFilter.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/IFilter.cs	(revision 10549)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/IFilter.cs	(revision 10549)
@@ -0,0 +1,14 @@
+﻿using HeuristicLab.Common;
+using HeuristicLab.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.DataPreprocessing
+{
+  interface IFilter : IItem, IContent
+  {
+
+  }
+}
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/ComparisonFilterView.Designer.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/ComparisonFilterView.Designer.cs	(revision 10549)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/ComparisonFilterView.Designer.cs	(revision 10549)
@@ -0,0 +1,60 @@
+﻿namespace HeuristicLab.DataPreprocessing.Views
+{
+  partial class ComparisonFilterView
+  {
+    /// <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.label1 = new System.Windows.Forms.Label();
+      this.SuspendLayout();
+      // 
+      // label1
+      // 
+      this.label1.AutoSize = true;
+      this.label1.Location = new System.Drawing.Point(312, 120);
+      this.label1.Name = "label1";
+      this.label1.Size = new System.Drawing.Size(35, 13);
+      this.label1.TabIndex = 0;
+      this.label1.Text = "label1";
+      // 
+      // ComparisonFilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.label1);
+      this.Name = "ComparisonFilterView";
+      this.Size = new System.Drawing.Size(615, 503);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Label label1;
+
+  }
+}
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/ComparisonFilterView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/ComparisonFilterView.cs	(revision 10549)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/ComparisonFilterView.cs	(revision 10549)
@@ -0,0 +1,37 @@
+﻿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.Data.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.DataPreprocessing.Views
+{
+  [View("Comparison Filter View")]
+  [Content(typeof(ComparisonFilter), false)]
+  public partial class ComparisonFilterView : ItemView
+  {
+    public ComparisonFilterView()
+    {
+      InitializeComponent();
+    }
+
+    public new ComparisonFilter Content
+    {
+      get { return (ComparisonFilter)base.Content; }
+      set { base.Content = value; }
+    }
+
+    protected override void OnContentChanged()
+    {
+      base.OnContentChanged();
+    }
+
+  }
+}
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/FilterView.Designer.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/FilterView.Designer.cs	(revision 10548)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/FilterView.Designer.cs	(revision 10549)
@@ -44,10 +44,120 @@
     /// the contents of this method with the code editor.
     /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
+    private void InitializeComponent()
+    {
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.deleteFilter = new System.Windows.Forms.Button();
+      this.newFilter = new System.Windows.Forms.Button();
+      this.listView1 = new System.Windows.Forms.ListView();
+      this.applyFilter = new System.Windows.Forms.Button();
+      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer1.Name = "splitContainer1";
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.AccessibleName = "splitContainer1";
+      this.splitContainer1.Panel1.Controls.Add(this.deleteFilter);
+      this.splitContainer1.Panel1.Controls.Add(this.newFilter);
+      this.splitContainer1.Panel1.Controls.Add(this.listView1);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.AccessibleName = "splitContainer2";
+      this.splitContainer1.Panel2.Controls.Add(this.applyFilter);
+      this.splitContainer1.Panel2.Controls.Add(this.viewHost);
+      this.splitContainer1.Size = new System.Drawing.Size(697, 490);
+      this.splitContainer1.SplitterDistance = 232;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // deleteFilter
+      // 
+      this.deleteFilter.Image = HeuristicLab.Common.Resources.VSImageLibrary.Delete;
+      this.deleteFilter.Location = new System.Drawing.Point(45, 24);
+      this.deleteFilter.Name = "deleteFilter";
+      this.deleteFilter.Size = new System.Drawing.Size(24, 24);
+      this.deleteFilter.TabIndex = 6;
+      this.deleteFilter.UseVisualStyleBackColor = true;
+      this.deleteFilter.Click += new System.EventHandler(this.deleteFilter_Click);
+      // 
+      // newFilter
+      // 
+      this.newFilter.Image = HeuristicLab.Common.Resources.VSImageLibrary.Add;
+      this.newFilter.Location = new System.Drawing.Point(15, 24);
+      this.newFilter.Name = "newFilter";
+      this.newFilter.Size = new System.Drawing.Size(24, 24);
+      this.newFilter.TabIndex = 5;
+      this.newFilter.UseVisualStyleBackColor = true;
+      this.newFilter.Click += new System.EventHandler(this.newFilter_Click);
+      // 
+      // listView1
+      // 
+      this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.listView1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
+      this.listView1.Location = new System.Drawing.Point(14, 54);
+      this.listView1.Name = "listView1";
+      this.listView1.Size = new System.Drawing.Size(157, 391);
+      this.listView1.TabIndex = 4;
+      this.listView1.UseCompatibleStateImageBehavior = false;
+      this.listView1.View = System.Windows.Forms.View.List;
+      this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
+      this.listView1.DoubleClick += new System.EventHandler(this.listView1_DoubleClick_1);
+      // 
+      // applyFilter
+      // 
+      this.applyFilter.Location = new System.Drawing.Point(383, 422);
+      this.applyFilter.Name = "applyFilter";
+      this.applyFilter.Size = new System.Drawing.Size(75, 23);
+      this.applyFilter.TabIndex = 1;
+      this.applyFilter.Text = "Apply Filters";
+      this.applyFilter.UseVisualStyleBackColor = true;
+      // 
+      // viewHost
+      // 
+      this.viewHost.Caption = "View";
+      this.viewHost.Content = null;
+      this.viewHost.Enabled = false;
+      this.viewHost.Location = new System.Drawing.Point(4, 4);
+      this.viewHost.Name = "viewHost";
+      this.viewHost.ReadOnly = false;
+      this.viewHost.Size = new System.Drawing.Size(454, 410);
+      this.viewHost.TabIndex = 0;
+      this.viewHost.ViewsLabelVisible = true;
+      this.viewHost.ViewType = null;
+      // 
+      // FilterView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.splitContainer1);
+      this.Name = "FilterView";
+      this.Size = new System.Drawing.Size(697, 490);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.ResumeLayout(false);
+
     }
 
     #endregion
+
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.ListView listView1;
+    private System.Windows.Forms.Button deleteFilter;
+    private System.Windows.Forms.Button newFilter;
+    private MainForm.WindowsForms.ViewHost viewHost;
+    private System.Windows.Forms.Button applyFilter;
   }
 }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/FilterView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/FilterView.cs	(revision 10548)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/FilterView.cs	(revision 10549)
@@ -24,23 +24,117 @@
 using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.Core;
+using System.Collections.Generic;
+using System;
+using System.ComponentModel;
 
-namespace HeuristicLab.DataPreprocessing {
+namespace HeuristicLab.DataPreprocessing
+{
 
   [View("Filter View")]
   [Content(typeof(FilterContent), false)]
-  public partial class FilterView : ItemView {
+  public partial class FilterView : ItemView
+  {
 
-    public new FilterContent Content {
+    public new FilterContent Content
+    {
       get { return (FilterContent)base.Content; }
       set { base.Content = value; }
     }
 
-    public FilterView() {
+    public FilterView()
+    {
       InitializeComponent();
+      listView1.SmallImageList = new ImageList();
     }
 
-    protected override void OnContentChanged() {
+    protected override void OnContentChanged()
+    {
       base.OnContentChanged();
     }
+
+    // Filter Contents
+    private IDictionary<IFilter, ListViewItem> filters = new Dictionary<IFilter, ListViewItem>();
+
+    private void listView1_DoubleClick(object sender, EventArgs e)
+    {
+
+    }
+
+    private void newFilter_Click(object sender, EventArgs e)
+    {
+      //TODO Filter Choose View...
+      IFilter filter = new ComparisonFilter();
+      //filter.FilterName = "ComparisonFilter" + (i++);
+      //filter.PropertyChanged += filter_PropertyChanged;
+
+      ListViewItem filterViewItem = CreateListViewItem(filter);
+      filters.Add(filter, filterViewItem);
+      //add view items to content list view
+      listView1.Items.Add(filterViewItem);
+      //select top filter
+      listView1.SelectedIndices.Add(0);
+    }
+
+    private void filter_PropertyChanged(object sender, PropertyChangedEventArgs e)
+    {
+      ListViewItem listViewItem;
+      try
+      {
+        IFilter filter = (IFilter)sender;
+        filters.TryGetValue(filter, out listViewItem);
+        listViewItem.Name = filter.ItemName;
+      }
+      catch (KeyNotFoundException)
+      {
+        //nothing to do
+      }
+
+    }
+
+    private ListViewItem CreateListViewItem(IFilter filter)
+    {
+      ListViewItem listViewItem = new ListViewItem();
+
+      listViewItem.Text = filter.ItemName;
+      listView1.SmallImageList.Images.Add(filter.ItemImage);
+      listViewItem.ImageIndex = listView1.SmallImageList.Images.Count - 1;
+      listViewItem.Tag = filter;
+      return listViewItem;
+    }
+
+    private void deleteFilter_Click(object sender, EventArgs e)
+    {
+      //delete view item of filter
+      //listView1.Items.Remove();
+      //select top filter
+      if (listView1.Items.Count > 0)
+      {
+        listView1.SelectedItems[0].Remove();
+      }
+      if (listView1.Items.Count > 0)
+      {
+        listView1.SelectedIndices.Add(0);
+      }
+    }
+
+    private void listView1_SelectedIndexChanged(object sender, EventArgs e)
+    {
+      if (listView1.SelectedItems.Count > 0)
+      {
+        ListViewItem listViewItem = (ListViewItem)listView1.SelectedItems[0];
+        this.viewHost.Content = (IItem)listViewItem.Tag;
+      }
+    }
+
+    private void listView1_DoubleClick_1(object sender, EventArgs e)
+    {
+      if (listView1.SelectedItems.Count > 0)
+      {
+        ListViewItem listViewItem = (ListViewItem)listView1.SelectedItems[0];
+        MainFormManager.MainForm.ShowContent((IItem)listViewItem.Tag);
+      }
+    }
+
   }
 }
