Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/DataGridContentView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/DataGridContentView.Designer.cs	(revision 10238)
+++ 	(revision )
@@ -1,33 +1,0 @@
-﻿namespace HeuristicLab.DataPreprocessing {
-  partial class DataGridContentView {
-    /// <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 Windows Form 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.components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Text = "DataGridContentView";
-    }
-
-    #endregion
-  }
-}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/DataGridContentView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/DataGridContentView.cs	(revision 10238)
+++ 	(revision )
@@ -1,38 +1,0 @@
-﻿
-using System.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-using HeuristicLab.MainForm.WindowsForms;
-using HeuristicLab.Problems.DataAnalysis;
-using HeuristicLab.Data.Views;
-
-namespace HeuristicLab.DataPreprocessing {
-  [View("Data Grid Content View")]
-  [Content(typeof(IDataGridContent), false)]
-  public partial class DataGridContentView : StringConvertibleMatrixView {
-
-    public new IDataGridContent Content {
-      get { return (IDataGridContent)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public DataGridContentView() {
-      InitializeComponent();
-    }
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-
-    }
-
-    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
-      if (!dataGridView.ReadOnly) {
-        string errorMessage;
-        if (Content != null && !Content.Validate(e.FormattedValue.ToString(), out errorMessage, e.ColumnIndex)) {
-          e.Cancel = true;
-          dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
-        }
-      }
-    }
-  }
-}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10238)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10239)
@@ -77,11 +77,13 @@
   </ItemGroup>
   <ItemGroup>
-    <None Include="Plugin.cs.frame" />
-    <Compile Include="DataPreprocessingView.cs">
+    <Compile Include="Implementations\DataGridLogic.cs" />
+    <Compile Include="Interfaces\IDataGridLogic.cs" />
+    <Compile Include="Views\DataPreprocessingView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="DataPreprocessingView.Designer.cs">
+    <Compile Include="Views\DataPreprocessingView.designer.cs">
       <DependentUpon>DataPreprocessingView.cs</DependentUpon>
     </Compile>
+    <None Include="Plugin.cs.frame" />
     <Compile Include="Implementations\DataGridContent.cs" />
     <Compile Include="Implementations\PreprocessingContext.cs" />
@@ -90,8 +92,8 @@
     <Compile Include="Implementations\SearchLogic.cs" />
     <Compile Include="Implementations\StatisticInfo.cs" />
-    <Compile Include="DataGridContentView.cs">
+    <Compile Include="Views\DataGridContentView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="DataGridContentView.Designer.cs">
+    <Compile Include="Views\DataGridContentView.Designer.cs">
       <DependentUpon>DataGridContentView.cs</DependentUpon>
     </Compile>
@@ -163,4 +165,9 @@
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <EmbeddedResource Include="Views\DataPreprocessingView.resx">
+      <DependentUpon>DataPreprocessingView.cs</DependentUpon>
+    </EmbeddedResource>
+  </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
   <PropertyGroup>
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataGridContent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataGridContent.cs	(revision 10238)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataGridContent.cs	(revision 10239)
@@ -5,11 +5,35 @@
 using System.Text;
 using HeuristicLab.Data;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using System.Drawing;
 
 namespace HeuristicLab.DataPreprocessing {
-  public class DataGridContent : IDataGridContent {
+
+  [Item("DataGridContent", "Represents a data grid.")]
+    public class DataGridContent : Item,IDataGridContent,IContent
+    {
     private readonly IPreprocessingData preprocessingData;
    
     public DataGridContent(IPreprocessingData thePreprocessingData) {
       preprocessingData = thePreprocessingData;
+    }
+
+    public DataGridContent(DataGridContent dataGridContent, Cloner cloner)
+        : base(dataGridContent, cloner)
+    {
+
+    }
+
+    public IDataGridLogic DataGridLogic { get; set; }
+
+    public static new Image StaticItemImage
+    {
+        get { return HeuristicLab.Common.Resources.VSImageLibrary.Table; }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner)
+    {
+        return new DataGridContent(this, cloner);
     }
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataGridLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataGridLogic.cs	(revision 10239)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/DataGridLogic.cs	(revision 10239)
@@ -0,0 +1,46 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.DataPreprocessing;
+
+namespace HeuristicLab.DataPreprocessing {
+  public class DataGridLogic : IDataGridLogic {
+
+    private IPreprocessingData preprocessingData;
+
+    public DataGridLogic(IPreprocessingData preprocessingData) {
+      this.preprocessingData = preprocessingData;
+    }
+
+    public IEnumerable<string> GetVariableNames()
+    {
+      return preprocessingData.VariableNames;
+    }
+
+    public IList<IList<string>> GetAllValues() {
+
+      IEnumerable<string> variableNames = preprocessingData.VariableNames;
+      IList<IList<string>> allValues = new List<IList<string>>();
+
+      IList<IEnumerable<string>> columnValuesList = new List<IEnumerable<string>>();
+
+      foreach (string variableName in variableNames) {
+
+        columnValuesList.Add(preprocessingData.GetValues<string>(variableName));
+      }
+
+
+      if (columnValuesList.Count > 0) {
+        for (int i = 0; i < columnValuesList.ElementAt(0).Count(); i++) {
+          allValues.Add(new List<string>());
+          foreach (IEnumerable<string> columnValues in columnValuesList) {
+            allValues[i].Add(columnValues.ElementAt(i));
+          }
+        }
+      }
+      return allValues;
+    }
+    
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IDataGridLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IDataGridLogic.cs	(revision 10239)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IDataGridLogic.cs	(revision 10239)
@@ -0,0 +1,13 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.DataPreprocessing {
+  public interface IDataGridLogic {
+
+    IEnumerable<string> GetVariableNames();
+
+    IList<IList<string>> GetAllValues();
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.Designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.Designer.cs	(revision 10239)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.Designer.cs	(revision 10239)
@@ -0,0 +1,33 @@
+﻿namespace HeuristicLab.DataPreprocessing {
+  partial class DataGridContentView {
+    /// <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 Windows Form 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.components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Text = "DataGridContentView";
+    }
+
+    #endregion
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.cs	(revision 10239)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.cs	(revision 10239)
@@ -0,0 +1,38 @@
+﻿
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.Problems.DataAnalysis;
+using HeuristicLab.Data.Views;
+
+namespace HeuristicLab.DataPreprocessing {
+  [View("Data Grid Content View")]
+  [Content(typeof(IDataGridContent), false)]
+  public partial class DataGridContentView : StringConvertibleMatrixView {
+
+    public new IDataGridContent Content {
+      get { return (IDataGridContent)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public DataGridContentView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+
+    }
+
+    private void dataGridView_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) {
+      if (!dataGridView.ReadOnly) {
+        string errorMessage;
+        if (Content != null && !Content.Validate(e.FormattedValue.ToString(), out errorMessage, e.ColumnIndex)) {
+          e.Cancel = true;
+          dataGridView.Rows[e.RowIndex].ErrorText = errorMessage;
+        }
+      }
+    }
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs	(revision 10239)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.cs	(revision 10239)
@@ -0,0 +1,117 @@
+﻿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.DataPreprocessing.Implementations;
+using HeuristicLab.MainForm;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+using HeuristicLab.Problems.DataAnalysis;
+
+namespace HeuristicLab.DataPreprocessing
+{
+  [View("DataPreprocessing View")]
+  [Content(typeof(PreprocessingContext), true)]
+  public partial class DataPreprocessingView : ItemView {
+
+    private DataGridContent dataGridContent;
+    private Dictionary<ListViewItem, IItem> listViewItemItemMapping;
+
+
+    public DataPreprocessingView() {
+      InitializeComponent();
+
+      InitializeContents();
+      
+    }
+
+
+    private ListViewItem CreateListViewItem(IItem item) {
+      ListViewItem listViewItem = new ListViewItem();
+
+        listViewItem.Text = item.ToString();
+        //listViewItem.ToolTipText = item.ItemName + ": " + item.ItemDescription;
+        //itemsListView.SmallImageList.Images.Add(content.);
+        //listViewItem.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;
+        //listViewItem.Tag = item;
+      return listViewItem;
+    }
+
+    private void InitializeContents() {
+      dataGridContent = new DataGridContent(this.Content);
+
+      listViewItemItemMapping = new Dictionary<ListViewItem,IItem>();
+      ListViewItem contentListViewItem = CreateListViewItem(dataGridContent);
+      listViewItemItemMapping[contentListViewItem] = dataGridContent;
+
+      listView1.Items.Add(contentListViewItem);
+    }
+
+    public new PreprocessingData Content {
+      get { return (PreprocessingData)base.Content; }
+      set { base.Content = value; }
+    }
+
+    private void listView1_SelectedIndexChanged(object sender, EventArgs e) {
+
+        if (listView1.SelectedItems.Count > 0)
+        {
+            ListViewItem listViewItem = (ListViewItem)listView1.SelectedItems[0];
+            this.viewHost.Content = listViewItemItemMapping[listViewItem];
+        }
+    }
+
+    private void groupBox1_Enter(object sender, EventArgs e) {
+
+    }
+
+    private void listView1_DoubleClick(object sender, EventArgs e) {
+      ListViewItem listViewItem = (ListViewItem)listView1.SelectedItems[0];
+      MainFormManager.MainForm.ShowContent(listViewItemItemMapping[listViewItem]);
+    }
+
+    //private void button1_Click(object sender, System.EventArgs e)
+    //{
+
+    //    IPreprocessingData Data = Content.Data;
+
+    //    foreach (string variable in Data.VariableNames)
+    //    {
+    //        for (int j = 0; j < Data.Rows; j++)
+    //        {
+    //            // assume: all double
+    //            Data.SetCell(variable, j, 1.0);
+    //        }
+    //    }
+
+    //    MessageBox.Show("Success, now cloning... ");
+
+    //    Dataset dataset = Data.ExportToDataset();
+    //    var variables = new CheckedItemList<StringValue>(Data.VariableNames.Select(s => new StringValue(s))).AsReadOnly();
+
+    //    var cloner = new Cloner();
+
+    //    cloner.RegisterClonedObject(Content.DataAnalysisProblemData.Dataset, dataset);
+    //    cloner.RegisterClonedObject(Content.DataAnalysisProblemData.TrainingPartition, Data.TrainingPartition);
+    //    cloner.RegisterClonedObject(Content.DataAnalysisProblemData.TestPartition, Data.TestPartition);
+    //    cloner.RegisterClonedObject(Content.DataAnalysisProblemData.InputVariables, variables);
+
+    //    var item = cloner.Clone(Content.ParentItem);
+
+    //    MainFormManager.MainForm.ShowContent(item);
+
+    //    //var clone = null;
+
+    //}
+
+
+  }
+}
+
+    
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.designer.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.designer.cs	(revision 10239)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataPreprocessingView.designer.cs	(revision 10239)
@@ -0,0 +1,116 @@
+﻿namespace HeuristicLab.DataPreprocessing {
+  partial class DataPreprocessingView {
+    /// <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.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.listView1 = new System.Windows.Forms.ListView();
+      this.groupBox1 = new System.Windows.Forms.GroupBox();
+      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.groupBox1.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.Controls.Add(this.listView1);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.groupBox1);
+      this.splitContainer1.Size = new System.Drawing.Size(758, 390);
+      this.splitContainer1.SplitterDistance = 252;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // listView1
+      // 
+      this.listView1.Location = new System.Drawing.Point(13, 15);
+      this.listView1.Name = "listView1";
+      this.listView1.Size = new System.Drawing.Size(185, 290);
+      this.listView1.TabIndex = 0;
+      this.listView1.UseCompatibleStateImageBehavior = false;
+      this.listView1.SelectedIndexChanged += new System.EventHandler(this.listView1_SelectedIndexChanged);
+      this.listView1.DoubleClick += new System.EventHandler(this.listView1_DoubleClick);
+      // 
+      // groupBox1
+      // 
+      this.groupBox1.Controls.Add(this.viewHost);
+      this.groupBox1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox1.Location = new System.Drawing.Point(0, 0);
+      this.groupBox1.Name = "groupBox1";
+      this.groupBox1.Size = new System.Drawing.Size(502, 390);
+      this.groupBox1.TabIndex = 1;
+      this.groupBox1.TabStop = false;
+      this.groupBox1.Text = "groupBox1";
+      this.groupBox1.Enter += new System.EventHandler(this.groupBox1_Enter);
+      // 
+      // viewHost
+      // 
+      this.viewHost.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.viewHost.Caption = "View";
+      this.viewHost.Content = null;
+      this.viewHost.Enabled = false;
+      this.viewHost.Location = new System.Drawing.Point(6, 19);
+      this.viewHost.Name = "viewHost";
+      this.viewHost.ReadOnly = false;
+      this.viewHost.Size = new System.Drawing.Size(490, 365);
+      this.viewHost.TabIndex = 0;
+      this.viewHost.ViewsLabelVisible = true;
+      this.viewHost.ViewType = null;
+      // 
+      // DataPreprocessingView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.splitContainer1);
+      this.Name = "DataPreprocessingView";
+      this.Size = new System.Drawing.Size(758, 390);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
+      this.splitContainer1.ResumeLayout(false);
+      this.groupBox1.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.ListView listView1;
+    private System.Windows.Forms.GroupBox groupBox1;
+    protected MainForm.WindowsForms.ViewHost viewHost;
+
+  }
+}
