Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.Designer.cs	(revision 10588)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.Designer.cs	(revision 10589)
@@ -45,15 +45,67 @@
     /// </summary>
     private void InitializeComponent() {
-      this.label1 = new System.Windows.Forms.Label();
+      this.lblAttr = new System.Windows.Forms.Label();
+      this.lblFilterOperation = new System.Windows.Forms.Label();
+      this.lblFilterData = new System.Windows.Forms.Label();
+      this.cbAttr = new System.Windows.Forms.ComboBox();
+      this.cbFilterOperation = new System.Windows.Forms.ComboBox();
+      this.tbFilterData = new System.Windows.Forms.TextBox();
       this.SuspendLayout();
       // 
-      // label1
+      // lblAttr
       // 
-      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";
+      this.lblAttr.AutoSize = true;
+      this.lblAttr.Location = new System.Drawing.Point(3, 15);
+      this.lblAttr.Name = "lblAttr";
+      this.lblAttr.Size = new System.Drawing.Size(49, 13);
+      this.lblAttr.TabIndex = 0;
+      this.lblAttr.Text = "Attribute:";
+      // 
+      // lblFilterOperation
+      // 
+      this.lblFilterOperation.AutoSize = true;
+      this.lblFilterOperation.Location = new System.Drawing.Point(3, 42);
+      this.lblFilterOperation.Name = "lblFilterOperation";
+      this.lblFilterOperation.Size = new System.Drawing.Size(81, 13);
+      this.lblFilterOperation.TabIndex = 1;
+      this.lblFilterOperation.Text = "Filter Operation:";
+      // 
+      // lblFilterData
+      // 
+      this.lblFilterData.AutoSize = true;
+      this.lblFilterData.Location = new System.Drawing.Point(3, 69);
+      this.lblFilterData.Name = "lblFilterData";
+      this.lblFilterData.Size = new System.Drawing.Size(58, 13);
+      this.lblFilterData.TabIndex = 2;
+      this.lblFilterData.Text = "Filter Data:";
+      // 
+      // cbAttr
+      // 
+      this.cbAttr.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.cbAttr.FormattingEnabled = true;
+      this.cbAttr.Location = new System.Drawing.Point(92, 12);
+      this.cbAttr.Name = "cbAttr";
+      this.cbAttr.Size = new System.Drawing.Size(247, 21);
+      this.cbAttr.TabIndex = 3;
+      // 
+      // cbFilterOperation
+      // 
+      this.cbFilterOperation.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.cbFilterOperation.FormattingEnabled = true;
+      this.cbFilterOperation.Location = new System.Drawing.Point(92, 39);
+      this.cbFilterOperation.Name = "cbFilterOperation";
+      this.cbFilterOperation.Size = new System.Drawing.Size(247, 21);
+      this.cbFilterOperation.TabIndex = 4;
+      // 
+      // tbFilterData
+      // 
+      this.tbFilterData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.tbFilterData.Location = new System.Drawing.Point(92, 67);
+      this.tbFilterData.Name = "tbFilterData";
+      this.tbFilterData.Size = new System.Drawing.Size(247, 20);
+      this.tbFilterData.TabIndex = 5;
       // 
       // ComparisonFilterView
@@ -61,7 +113,12 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.label1);
+      this.Controls.Add(this.tbFilterData);
+      this.Controls.Add(this.cbFilterOperation);
+      this.Controls.Add(this.cbAttr);
+      this.Controls.Add(this.lblFilterData);
+      this.Controls.Add(this.lblFilterOperation);
+      this.Controls.Add(this.lblAttr);
       this.Name = "ComparisonFilterView";
-      this.Size = new System.Drawing.Size(615, 503);
+      this.Size = new System.Drawing.Size(348, 97);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -71,5 +128,10 @@
     #endregion
 
-    private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.Label lblAttr;
+    private System.Windows.Forms.Label lblFilterOperation;
+    private System.Windows.Forms.Label lblFilterData;
+    private System.Windows.Forms.ComboBox cbAttr;
+    private System.Windows.Forms.ComboBox cbFilterOperation;
+    private System.Windows.Forms.TextBox tbFilterData;
 
   }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.cs	(revision 10588)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ComparisonFilterView.cs	(revision 10589)
@@ -21,6 +21,9 @@
 
 using HeuristicLab.Core.Views;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
 using HeuristicLab.DataPreprocessing.Filter;
 using HeuristicLab.MainForm;
+using System.Collections;
 
 namespace HeuristicLab.DataPreprocessing.Views {
@@ -37,7 +40,32 @@
     }
 
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-    }
+    //protected override void OnContentChanged() {
+    //  base.OnContentChanged();
+    //  cbAttr.Items.Clear();
+    //  cbFilterOperation.Items.Clear();
+    //  if (Content != null)
+    //  {
+    //    cbFilterOperation.Items.AddRange(Content.AllowedConstraintOperations.ToArray());
+    //    if (Content.ConstraintOperation != null)
+    //      cbFilterOperation.SelectedItem = Content.ConstraintOperation;
+    //    else if (cbFilterOperation.Items.Count != 0)
+    //      cbFilterOperation.SelectedIndex = 0;
+    //    UpdateColumnComboBox();
+    //    ReadOnly = Content.Active;
+    //  }
+    //}
+
+
+
+    //protected virtual void UpdateColumnComboBox()
+    //{
+    //  this.cbAttr.Items.Clear();
+    //  if (Content.ConstrainedValue != null)
+    //  {
+    //    this.cbAttr.Items.AddRange(((IStringConvertibleMatrix)Content.ConstrainedValue).ColumnNames.ToArray());
+    //    if (!string.IsNullOrEmpty(Content.ConstraintColumn))
+    //      this.cbAttr.SelectedItem = Content.ConstraintColumn;
+    //  }
+    //}
 
   }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.Designer.cs	(revision 10588)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.Designer.cs	(revision 10589)
@@ -1,25 +1,6 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.DataPreprocessing.Views {
-  partial class FilterView {
+﻿namespace HeuristicLab.DataPreprocessing.Views
+{
+  partial class FilterView
+  {
     /// <summary> 
     /// Required designer variable.
@@ -31,6 +12,8 @@
     /// </summary>
     /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
+    protected override void Dispose(bool disposing)
+    {
+      if (disposing && (components != null))
+      {
         components.Dispose();
       }
@@ -44,95 +27,44 @@
     /// the contents of this method with the code editor.
     /// </summary>
-    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();
+    private void InitializeComponent()
+    {
+      this.groupBoxFilter = new System.Windows.Forms.GroupBox();
+      this.groupBoxFilterInfo = new System.Windows.Forms.GroupBox();
+      this.applyFilterButton = new System.Windows.Forms.Button();
       this.SuspendLayout();
       // 
-      // splitContainer1
+      // groupBoxFilter
       // 
-      this.splitContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.splitContainer1.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer1.Name = "splitContainer1";
+      this.groupBoxFilter.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
+      this.groupBoxFilter.Location = new System.Drawing.Point(4, 4);
+      this.groupBoxFilter.Name = "groupBoxFilter";
+      this.groupBoxFilter.Size = new System.Drawing.Size(658, 327);
+      this.groupBoxFilter.TabIndex = 0;
+      this.groupBoxFilter.TabStop = false;
+      this.groupBoxFilter.Text = "Filter";
       // 
-      // splitContainer1.Panel1
+      // groupBoxFilterInfo
       // 
-      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);
+      this.groupBoxFilterInfo.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.groupBoxFilterInfo.Location = new System.Drawing.Point(4, 337);
+      this.groupBoxFilterInfo.Name = "groupBoxFilterInfo";
+      this.groupBoxFilterInfo.Size = new System.Drawing.Size(659, 130);
+      this.groupBoxFilterInfo.TabIndex = 1;
+      this.groupBoxFilterInfo.TabStop = false;
+      this.groupBoxFilterInfo.Text = "Filter Info";
       // 
-      // splitContainer1.Panel2
+      // applyFilterButton
       // 
-      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;
+      this.applyFilterButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.applyFilterButton.Location = new System.Drawing.Point(554, 474);
+      this.applyFilterButton.Name = "applyFilterButton";
+      this.applyFilterButton.Size = new System.Drawing.Size(107, 23);
+      this.applyFilterButton.TabIndex = 2;
+      this.applyFilterButton.Text = "Apply Filters";
+      this.applyFilterButton.UseVisualStyleBackColor = true;
+      this.applyFilterButton.Click += new System.EventHandler(this.applyFilterButton_Click);
       // 
       // FilterView
@@ -140,11 +72,9 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.splitContainer1);
+      this.Controls.Add(this.applyFilterButton);
+      this.Controls.Add(this.groupBoxFilterInfo);
+      this.Controls.Add(this.groupBoxFilter);
       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.Size = new System.Drawing.Size(670, 506);
       this.ResumeLayout(false);
 
@@ -153,10 +83,9 @@
     #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;
+    private System.Windows.Forms.GroupBox groupBoxFilter;
+    private System.Windows.Forms.GroupBox groupBoxFilterInfo;
+    private System.Windows.Forms.Button applyFilterButton;
+
+
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs	(revision 10588)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/FilterView.cs	(revision 10589)
@@ -1,119 +1,47 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
+﻿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.MainForm;
 using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
 using HeuristicLab.DataPreprocessing.Filter;
-using HeuristicLab.MainForm;
 
-namespace HeuristicLab.DataPreprocessing.Views {
+namespace HeuristicLab.DataPreprocessing.Views
+{
+  [View("CheckedFilterCollection View")]
+  [Content(typeof(FilterContent), false)]
+  public partial class FilterView : ItemView
+  {
+    private CheckedItemCollectionView<IFilter> filterView;
 
-  [View("Filter View")]
-  [Content(typeof(FilterContent), false)]
-  public partial class FilterView : ItemView {
+    public FilterView()
+    {
+      InitializeComponent();
+      filterView = new CheckedItemCollectionView<IFilter>();
+      filterView.Dock = DockStyle.Fill;
+      groupBoxFilter.Controls.Add(filterView);
+      filterView.Content = new CheckedItemCollection<IFilter>();
+      filterView.Content.CheckedItemsChanged += Content_CheckedItemsChanged;
+    }
 
-    public new FilterContent Content {
+    public new FilterContent Content
+    {
       get { return (FilterContent)base.Content; }
       set { base.Content = value; }
     }
 
-    public FilterView() {
-      InitializeComponent();
-      listView1.SmallImageList = new ImageList();
+    private void Content_CheckedItemsChanged(object sender, Collections.CollectionItemsChangedEventArgs<IFilter> e)
+    {
+      //todo: inform Logic for new filter
     }
 
-    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);
-      }
+    private void applyFilterButton_Click(object sender, EventArgs e)
+    {
+      //todo: inform Logic for apply Filter
     }
 
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 10588)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj	(revision 10589)
@@ -38,9 +38,23 @@
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="HeuristicLab.Collections-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Collections-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Problems.Instances-3.3.dll</HintPath>
+    </Reference>
+    <Reference Include="HeuristicLab.Problems.Instances.Views-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\bin\HeuristicLab.Problems.Instances.Views-3.3.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
+    <Reference Include="System.Data" />
     <Reference Include="System.Drawing" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Windows.Forms.DataVisualization" />
+    <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
@@ -159,4 +173,8 @@
       <Name>HeuristicLab.MainForm-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimization.Views\3.3\HeuristicLab.Optimization.Views-3.3.csproj">
+      <Project>{662B4B15-8F4D-4AE5-B3EB-D91C215F5AF2}</Project>
+      <Name>HeuristicLab.Optimization.Views-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Optimization\3.3\HeuristicLab.Optimization-3.3.csproj">
       <Project>{14AB8D24-25BC-400C-A846-4627AA945192}</Project>
@@ -179,4 +197,12 @@
       <Name>HeuristicLab.Visualization.ChartControlsExtensions-3.3</Name>
     </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="ComparisonFilterView.resx">
+      <DependentUpon>ComparisonFilterView.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="FilterView.resx">
+      <DependentUpon>FilterView.cs</DependentUpon>
+    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/IFilter.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/IFilter.cs	(revision 10588)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/Filter/IFilter.cs	(revision 10589)
@@ -1,27 +1,12 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2013 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
+﻿using HeuristicLab.Core;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
 
-using HeuristicLab.Core;
-
-namespace HeuristicLab.DataPreprocessing.Filter {
-  public interface IFilter : IItem {
+namespace HeuristicLab.DataPreprocessing.Filter
+{
+  public interface IFilter : IItem
+  {
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 10588)
+++ branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/HeuristicLab.Optimization.Views-3.3.csproj	(revision 10589)
@@ -392,4 +392,9 @@
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="RunCollectionConstraintViews\RunCollectionComparisonConstraintView.resx">
+      <DependentUpon>RunCollectionComparisonConstraintView.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
Index: branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintViews/RunCollectionComparisonConstraintView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintViews/RunCollectionComparisonConstraintView.Designer.cs	(revision 10588)
+++ branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintViews/RunCollectionComparisonConstraintView.Designer.cs	(revision 10589)
@@ -48,4 +48,5 @@
       this.txtConstraintData = new System.Windows.Forms.TextBox();
       this.errorProvider = new System.Windows.Forms.ErrorProvider(this.components);
+      this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
       this.SuspendLayout();
@@ -53,6 +54,6 @@
       // txtConstraintData
       // 
-      this.txtConstraintData.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      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);
@@ -61,6 +62,6 @@
       this.txtConstraintData.Size = new System.Drawing.Size(246, 20);
       this.txtConstraintData.TabIndex = 9;
+      this.txtConstraintData.Validating += new System.ComponentModel.CancelEventHandler(this.txtConstraintData_Validating);
       this.txtConstraintData.Validated += new System.EventHandler(this.txtConstraintData_Validated);
-      this.txtConstraintData.Validating += new System.ComponentModel.CancelEventHandler(this.txtConstraintData_Validating);
       // 
       // errorProvider
@@ -68,7 +69,10 @@
       this.errorProvider.ContainerControl = this;
       // 
+      // contextMenuStrip1
+      // 
+      this.contextMenuStrip1.Name = "contextMenuStrip1";
+      // 
       // RunCollectionComparisonConstraintView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.Controls.Add(this.txtConstraintData);
@@ -88,4 +92,5 @@
     private System.Windows.Forms.TextBox txtConstraintData;
     private System.Windows.Forms.ErrorProvider errorProvider;
+    private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintViews/RunCollectionComparisonConstraintView.resx
===================================================================
--- branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintViews/RunCollectionComparisonConstraintView.resx	(revision 10589)
+++ branches/DataPreprocessing/HeuristicLab.Optimization.Views/3.3/RunCollectionConstraintViews/RunCollectionComparisonConstraintView.resx	(revision 10589)
@@ -0,0 +1,126 @@
+﻿<?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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="errorProvider.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>140, 17</value>
+  </metadata>
+</root>
