Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10638)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10658)
@@ -72,4 +72,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Implementations\PreprocessingChartContent.cs" />
     <Compile Include="Implementations\PreprocessingData.cs" />
     <Compile Include="Implementations\DataGridLogic.cs" />
@@ -83,13 +84,11 @@
     <Compile Include="Implementations\FilterLogic.cs" />
     <Compile Include="Implementations\HistogramContent.cs" />
-    <Compile Include="Implementations\HistogramLogic.cs" />
     <Compile Include="Implementations\LineChartContent.cs" />
-    <Compile Include="Implementations\LineChartLogic.cs" />
+    <Compile Include="Implementations\ChartLogic.cs" />
     <Compile Include="Implementations\StatisticsContent.cs" />
     <Compile Include="Implementations\TransformationContent.cs" />
     <Compile Include="Implementations\TransformationLogic.cs" />
     <Compile Include="Interfaces\IFilterLogic.cs" />
-    <Compile Include="Interfaces\IHistogramLogic.cs" />
-    <Compile Include="Interfaces\ILineChartLogic.cs" />
+    <Compile Include="Interfaces\IChartLogic.cs" />
     <Compile Include="Interfaces\IManipulationLogic.cs" />
     <Compile Include="Interfaces\ITransformationLogic.cs" />
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/ChartLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/ChartLogic.cs	(revision 10658)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/ChartLogic.cs	(revision 10658)
@@ -0,0 +1,86 @@
+﻿#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.Collections.Generic;
+using HeuristicLab.Analysis;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.DataPreprocessing {
+
+  public class ChartLogic : IChartLogic {
+ 
+    private ITransactionalPreprocessingData preprocessingData;
+
+    public ChartLogic(ITransactionalPreprocessingData preprocessingData) {
+      this.preprocessingData = preprocessingData;
+    }
+
+    public DataTable CreateDataTable(String title, DataRowVisualProperties.DataRowChartType chartType) {
+      DataTable dataTable = new DataTable(title);
+      IEnumerable<string> variableNames = GetVariableNames();
+
+      foreach (string variableName in variableNames) {
+        DataRow row = CreateDataRow(variableName,chartType);
+        dataTable.Rows.Add(row);
+      }
+      return dataTable;
+    }
+
+    public DataRow CreateDataRow(string variableName, DataRowVisualProperties.DataRowChartType chartType) {
+      IList<double> values = preprocessingData.GetValues<double>(variableName);
+      DataRow row = new DataRow(variableName, "", values);
+      row.VisualProperties.ChartType = chartType;
+      return row;
+    }
+
+    private IEnumerable<string> GetVariableNames() {
+      List<string> doubleVariableNames = new List<string>();
+
+      //only return variable names from type double
+      foreach (string variableName in preprocessingData.VariableNames) {
+        if (preprocessingData.IsType<double>(preprocessingData.GetColumnIndex(variableName)))
+          doubleVariableNames.Add(variableName);
+      }
+
+      return doubleVariableNames;
+    }
+
+    public ICheckedItemList<StringValue> CreateVariableItemList() {
+      ICheckedItemList<StringValue> itemList = new CheckedItemList<StringValue>();
+      foreach (string name in GetVariableNames()) {
+        itemList.Add(new StringValue(name), true);
+      }
+      return new ReadOnlyCheckedItemList<StringValue>(itemList);
+    }
+
+    public event DataPreprocessingChangedEventHandler Changed {
+      add { preprocessingData.Changed += value; }
+      remove { preprocessingData.Changed -= value; }
+    }
+
+    public string GetVariableNameByIndex(int index) {
+      return preprocessingData.GetVariableName(index);
+    }
+
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramContent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramContent.cs	(revision 10638)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramContent.cs	(revision 10658)
@@ -26,9 +26,7 @@
 namespace HeuristicLab.DataPreprocessing {
   [Item("Histogram", "Represents the histogram grid.")]
-  public class HistogramContent : Item, IViewShortcut {
+  public class HistogramContent : PreprocessingChartContent {
 
-    private readonly IHistogramLogic histogramLogic;
-    public HistogramContent(IHistogramLogic theHistogramLogic) {
-      histogramLogic = theHistogramLogic;
+    public HistogramContent(IChartLogic chartlogic) :base(chartlogic) {
     }
 
@@ -36,10 +34,4 @@
       : base(content, cloner) {
 
-    }
-
-    public IHistogramLogic HistogramLogic {
-      get {
-        return histogramLogic;
-      }
     }
 
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramLogic.cs	(revision 10638)
+++ 	(revision )
@@ -1,108 +1,0 @@
-﻿#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.Collections.Generic;
-using HeuristicLab.Analysis;
-
-namespace HeuristicLab.DataPreprocessing {
-  public class HistogramLogic : IHistogramLogic {
-    private ITransactionalPreprocessingData preprocessingData;
-    private DataTable dataTable;
-
-    public HistogramLogic(ITransactionalPreprocessingData preprocessingData) {
-      this.preprocessingData = preprocessingData;
-      dataTable = new DataTable("Histogram");
-      FillDataTable();
-      preprocessingData.Changed += PreprocessingData_Changed;
-    }
-
-    private void FillDataTable() {
-      IEnumerable<string> variableNames = preprocessingData.VariableNames;
-
-      foreach (string variableName in variableNames) {
-        IList<double> values = preprocessingData.GetValues<double>(variableName);
-        DataRow row = new DataRow(variableName, "", values);
-        row.VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Histogram;
-        dataTable.Rows.Add(row);
-      }
-
-    }
-
-    public IEnumerable<object> GetVariableNames() {
-      List<string> doubleVariableNames = new List<string>();
-
-      //only return variable names from type double
-      foreach (string variableName in preprocessingData.VariableNames) {
-        if (preprocessingData.IsType<double>(preprocessingData.GetColumnIndex(variableName)))
-          doubleVariableNames.Add(variableName);
-      }
-
-      return doubleVariableNames;
-    }
-
-    public DataTable GetDataTable() {
-      return dataTable;
-    }
-
-    public void RemoveVariable(string name) {
-      dataTable.Rows.Remove(name);
-    }
-
-    public void AddVariable(string name) {
-      IList<double> values = preprocessingData.GetValues<double>(name);
-      DataRow row = new DataRow(name, "", values);
-      row.VisualProperties.ChartType = DataRowVisualProperties.DataRowChartType.Histogram;
-      dataTable.Rows.Add(row);
-    }
-
-    public bool VariableIsDisplayed(string name) {
-
-      foreach (var item in dataTable.Rows) {
-        if (item.Name == name)
-          return true;
-      }
-      return false;
-    }
-
-    //TODO: refactor: possible code duplication with LineChartLogic
-    void PreprocessingData_Changed(object sender, DataPreprocessingChangedEventArgs e) {
-      switch (e.Type) {
-        case DataPreprocessingChangedEventType.DeleteColumn:
-          dataTable.Rows.Remove(preprocessingData.GetVariableName(e.Column));
-          break;
-        case DataPreprocessingChangedEventType.AddColumn:
-          dataTable.Rows.Add(new DataRow(preprocessingData.GetVariableName(e.Column), String.Empty, preprocessingData.GetValues<double>(e.Column)));
-          break;
-        case DataPreprocessingChangedEventType.ChangeColumn:
-        case DataPreprocessingChangedEventType.ChangeItem:
-          dataTable.Rows.Remove(preprocessingData.GetVariableName(e.Column));
-          dataTable.Rows.Add(new DataRow(preprocessingData.GetVariableName(e.Column), String.Empty, preprocessingData.GetValues<double>(e.Column)));
-          break;
-        case DataPreprocessingChangedEventType.DeleteRow:
-        case DataPreprocessingChangedEventType.AddRow:
-          dataTable.Rows.Clear();
-          FillDataTable();
-          break;
-      }
-    }
-  }
-}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/LineChartContent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/LineChartContent.cs	(revision 10638)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/LineChartContent.cs	(revision 10658)
@@ -26,9 +26,7 @@
 namespace HeuristicLab.DataPreprocessing {
   [Item("LineChart", "Represents the line chart grid.")]
-  public class LineChartContent : Item, IViewShortcut {
+  public class LineChartContent : PreprocessingChartContent {
 
-    private readonly ILineChartLogic lineChartLogic;
-    public LineChartContent(ILineChartLogic theLineChartLogic) {
-      lineChartLogic = theLineChartLogic;
+    public LineChartContent(IChartLogic chartlogic) :base(chartlogic) {
     }
 
@@ -36,10 +34,4 @@
       : base(content, cloner) {
 
-    }
-
-    public ILineChartLogic LineChartLogic {
-      get {
-        return lineChartLogic;
-      }
     }
 
@@ -52,8 +44,4 @@
     }
 
-    public event DataPreprocessingChangedEventHandler Changed {
-      add { lineChartLogic.Changed += value; }
-      remove { lineChartLogic.Changed -= value; }
-    }
   }
 }
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/LineChartLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/LineChartLogic.cs	(revision 10638)
+++ 	(revision )
@@ -1,84 +1,0 @@
-﻿#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.Collections.Generic;
-using HeuristicLab.Analysis;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.DataPreprocessing {
-  public class LineChartLogic : ILineChartLogic {
- 
-    private ITransactionalPreprocessingData preprocessingData;
-
-    public LineChartLogic(ITransactionalPreprocessingData preprocessingData) {
-      this.preprocessingData = preprocessingData;
-    }
-
-    public DataTable CreateDataTable(String title) {
-      DataTable dataTable = new DataTable(title);
-      IEnumerable<string> variableNames = GetVariableNames();
-
-      foreach (string variableName in variableNames) {
-        DataRow row = CreateDataRow(variableName);
-        dataTable.Rows.Add(row);
-      }
-      return dataTable;
-    }
-
-    public DataRow CreateDataRow(string variableName) {
-      IList<double> values = preprocessingData.GetValues<double>(variableName);
-      DataRow row = new DataRow(variableName, "", values);
-      return row;
-    }
-
-    private IEnumerable<string> GetVariableNames() {
-      List<string> doubleVariableNames = new List<string>();
-
-      //only return variable names from type double
-      foreach (string variableName in preprocessingData.VariableNames) {
-        if (preprocessingData.IsType<double>(preprocessingData.GetColumnIndex(variableName)))
-          doubleVariableNames.Add(variableName);
-      }
-
-      return doubleVariableNames;
-    }
-
-    public ICheckedItemList<StringValue> CreateVariableItemList() {
-      ICheckedItemList<StringValue> itemList = new CheckedItemList<StringValue>();
-      foreach (string name in GetVariableNames()) {
-        itemList.Add(new StringValue(name), true);
-      }
-      return new ReadOnlyCheckedItemList<StringValue>(itemList);
-    }
-
-    public event DataPreprocessingChangedEventHandler Changed {
-      add { preprocessingData.Changed += value; }
-      remove { preprocessingData.Changed -= value; }
-    }
-
-    public string GetVariableNameByIndex(int index) {
-      return preprocessingData.GetVariableName(index);
-    }
-
-  }
-}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingChartContent.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingChartContent.cs	(revision 10658)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/PreprocessingChartContent.cs	(revision 10658)
@@ -0,0 +1,58 @@
+﻿#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.Drawing;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.DataPreprocessing {
+  [Item("PreprocessingChart", "Represents a preprocessing chart.")]
+  public class PreprocessingChartContent : Item, IViewShortcut {
+
+    private readonly IChartLogic chartLogic;
+    public PreprocessingChartContent(IChartLogic chartLogic) {
+      this.chartLogic = chartLogic;
+    }
+
+    public PreprocessingChartContent(PreprocessingChartContent content, Cloner cloner)
+      : base(content, cloner) {
+    }
+
+    public IChartLogic ChartLogic {
+      get {
+        return chartLogic;
+      }
+    }
+
+    public static new Image StaticItemImage {
+      get { return HeuristicLab.Common.Resources.VSImageLibrary.PieChart; }
+    }
+
+    public override IDeepCloneable Clone(Cloner cloner) {
+      return new PreprocessingChartContent(this, cloner);
+    }
+
+    public event DataPreprocessingChangedEventHandler Changed {
+      add { chartLogic.Changed += value; }
+      remove { chartLogic.Changed -= value; }
+    }
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IChartLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IChartLogic.cs	(revision 10658)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IChartLogic.cs	(revision 10658)
@@ -0,0 +1,40 @@
+﻿#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.Collections.Generic;
+using HeuristicLab.Analysis;
+using HeuristicLab.Core;
+using HeuristicLab.Data;
+
+namespace HeuristicLab.DataPreprocessing {
+  public interface IChartLogic {
+
+    DataTable CreateDataTable(string title, DataRowVisualProperties.DataRowChartType chartType);
+
+    event DataPreprocessingChangedEventHandler Changed;
+
+    ICheckedItemList<StringValue> CreateVariableItemList();
+
+    DataRow CreateDataRow(string variableName,DataRowVisualProperties.DataRowChartType chartType);
+
+    string GetVariableNameByIndex(int index);
+  }
+}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IHistogramLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IHistogramLogic.cs	(revision 10638)
+++ 	(revision )
@@ -1,37 +1,0 @@
-﻿#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.Collections.Generic;
-using HeuristicLab.Analysis;
-
-namespace HeuristicLab.DataPreprocessing {
-  public interface IHistogramLogic {
-    void RemoveVariable(string name);
-
-    void AddVariable(string name);
-
-    IEnumerable<object> GetVariableNames();
-
-    DataTable GetDataTable();
-
-    bool VariableIsDisplayed(string name);
-  }
-}
Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/ILineChartLogic.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/ILineChartLogic.cs	(revision 10638)
+++ 	(revision )
@@ -1,40 +1,0 @@
-﻿#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.Collections.Generic;
-using HeuristicLab.Analysis;
-using HeuristicLab.Core;
-using HeuristicLab.Data;
-
-namespace HeuristicLab.DataPreprocessing {
-  public interface ILineChartLogic {
-
-    DataTable CreateDataTable(string title);
-
-    event DataPreprocessingChangedEventHandler Changed;
-
-    ICheckedItemList<StringValue> CreateVariableItemList();
-
-    DataRow CreateDataRow(string variableName);
-
-    string GetVariableNameByIndex(int index);
-  }
-}
