Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessingView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessingView.cs	(revision 10657)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessingView.cs	(revision 10658)
@@ -50,6 +50,6 @@
         var manipulationLogic = new ManipulationLogic(data, searchLogic, statisticsLogic);
         var transformationLogic = new TransformationLogic(data, searchLogic, statisticsLogic);
-        var lineChartLogic = new LineChartLogic(data);
-        var histogramLogic = new HistogramLogic(data);
+        var lineChartLogic = new ChartLogic(data);
+        var histogramLogic = new ChartLogic(data);
         var filterLogic = new FilterLogic(data);
 
Index: anches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessingView.resx
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/DataPreprocessingView.resx	(revision 10657)
+++ 	(revision )
@@ -1,165 +1,0 @@
-﻿<?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>
-  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
-  <data name="undoButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
-        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAB+ElE
-        QVQ4T2P4//8/RRirIAxP3vItZvLmrzvm7f76aPnBr0dWHvw6ZdWhr1LIalA0IOO+DV93APGf7nVfnzeu
-        +PK4fsmXO3N3fn0MNOATsiFwDd2rXv1fduKrAZi97uuy/o3ffqdOevfGpeDEb+vU7X/ME7Z8d6+4+3Hm
-        9q9vgAbcRDEAKMDZuOTl/3kHvl6tX/G1YcKmb3/iep7/cy04/t8uY/cv09g1x13ytz60jF/+J6zj3c+l
-        B77eRzEAhItnPv+fNevz/8I5X/5H9nx8YZW85a9F4oYfprEr80HyAbXbVQwjFr9wLb/9vmHplz0YBiT1
-        Pfvv3fTmf3Tv5/9lc9781/CetNokZoUjTF7BoY7ZLuvQb9eyO68bVn45BBOHGxDU/PS/WfH9/55Nr8Au
-        Sex59L9u8VtLmDzQAFa7zEN/veqefWte+WULTBxugFPF4/8ORdf+W2Ue/28Sv+2/YdTa/xo+U4FSEHmz
-        uPVKtpkH/wW0vP5bMP1xKUwcbgA6BgUsMl/da5K7a9ntP2mT3//r3fCVDSYOV0AIW6TsuxjS8eFfWN35
-        XGRxFEXYcFzfeyWH/Asx/i0f/vlVXvmmFTCbEVkeRTE27FH92Nm/5dMvj5KLP42jVnmhy6NwsOGo3s+R
-        ziXXGk1j1olik8cQIBVjFSQe/2cAAG4MzKZBtgOMAAAAAElFTkSuQmCC
-</value>
-  </data>
-  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <data name="applyInNewTabButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
-        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsRAAALEQF/ZF+RAAAAsElE
-        QVQ4T2P4//8/RRirYNn+bDds4tgwVsGEGRH/iTUEqyDIAMsyfaIMwSoYNSXo/4Zbi4kyBKtg8ARvkEai
-        DMEq6NPlDDYAhKMWBeA1BEMAhB2bLf5nbIgFa7Zt1v+vU6zwXyKNG0SroatF4cCweY0eimb+BBasmkEY
-        QwCE9UqVidIMwlgFVfKliNIMwlgFpTMEidIMwlgFRZI5idIMwlgFidUMwlgFScFYBYnH/xkAJP3E6UxO
-        vJ8AAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="exportProblemButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAABGdBTUEAALGOfPtRkwAAACBjSFJNAAB6
-        JQAAgIMAAPn/AACA6QAAdTAAAOpgAAA6mAAAF2+SX8VGAAAACXBIWXMAAAsRAAALEQF/ZF+RAAACPklE
-        QVQ4T6WS70uTURTH9y/03jdBL3prU2O4FqvBU66hLB2GFtKvJ9Isfy3TJEXLVHT5A7QVLp20Wk3CiUb+
-        AH8gJmIsJSs1l7TEoabYRDD4ds99dI9Le1MHzvPi3OfzufeeexQA/iv5p7MjAEp32xpaXat45lhGc5Mf
-        j6zzqKv9BkuVF/dLZ1BU+Bn5eR+Qkz2OG9c9DN0SENjbA9TWbFDxr7G+sQl9Yi/OJL7iyUISuF6ucEF5
-        2Q8q7hkE+5fXcdT4GkqlCFOCk8qSwPF0iQuKCr9TcVdsw198K4gwuJF3axanjS20JAlsjQtccNM8TcWQ
-        2Am/n/LjoOBCZsYk4mJttCwJGup9XJB+bZyKwfgTHvL4EKZ1QBRHYTBY6RdJUFM9xwXi5VEq8tgL7hn5
-        in3RTUg+24+YmDr6TRJUlM+iuwvsKYGUC29hOjfIu00NozvTsWlnCe5DvOkNBMEiC0qKp9DuBpsBoMX+
-        i737T5TeW+RNpYbRndNSPUH4VFwbdLoyWXA7fxLO58AT2yYbnAD0SRkhaTxvRtLVAgmOZfBJJ7TaYllg
-        zplgMFD9IMB3JkjBliLUAsY+LWBiZhFi9l0c17dyWH3MDo2mQBbQWFofInhsEhB8JbcSH71L8M6vIuuO
-        BZFaO4ObEXnkMdTRubIgLfUdu/cahw/onNh/SMCL9gG4u4bQ3TeCweExnDCYoNQ0IorB4aoGqFSZIYL4
-        SxcH+HjShNGQ0DvTU1G3qWF0Z9qVkuDDUemy4N8Tit/kKu4LI/ykxwAAAABJRU5ErkJggg==
-</value>
-  </data>
-</root>
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 10657)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HeuristicLab.DataPreprocessing.Views-3.3.csproj	(revision 10658)
@@ -91,17 +91,17 @@
       <DependentUpon>FindAndReplaceDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="HistogramView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
+    <Compile Include="HistogramView.cs" />
     <Compile Include="HistogramView.Designer.cs">
       <DependentUpon>HistogramView.cs</DependentUpon>
     </Compile>
-    <Compile Include="LineChartView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
+    <Compile Include="LineChartView.cs" />
     <Compile Include="LineChartView.Designer.cs">
       <DependentUpon>LineChartView.cs</DependentUpon>
     </Compile>
     <Compile Include="Plugin.cs" />
+    <Compile Include="PreprocessingChartView.cs" />
+    <Compile Include="PreprocessingChartView.Designer.cs">
+      <DependentUpon>PreprocessingChartView.cs</DependentUpon>
+    </Compile>
     <Compile Include="PreprocessingCheckedItemListView.cs">
       <SubType>UserControl</SubType>
@@ -220,9 +220,4 @@
       <Name>HeuristicLab.Visualization.ChartControlsExtensions-3.3</Name>
     </ProjectReference>
-  </ItemGroup>
-  <ItemGroup>
-    <EmbeddedResource Include="DataPreprocessingView.resx">
-      <DependentUpon>DataPreprocessingView.cs</DependentUpon>
-    </EmbeddedResource>
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HistogramView.Designer.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HistogramView.Designer.cs	(revision 10657)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HistogramView.Designer.cs	(revision 10658)
@@ -1,24 +1,3 @@
-﻿#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 {
+﻿namespace HeuristicLab.DataPreprocessing.Views {
   partial class HistogramView {
     /// <summary> 
@@ -45,60 +24,5 @@
     /// </summary>
     private void InitializeComponent() {
-      this.groupBoxAttributs = new System.Windows.Forms.GroupBox();
-      this.variablesListBox = new System.Windows.Forms.CheckedListBox();
-      this.groupBoxOptions = new System.Windows.Forms.GroupBox();
-      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.groupBoxAttributs.SuspendLayout();
       this.SuspendLayout();
-      // 
-      // groupBoxAttributs
-      // 
-      this.groupBoxAttributs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-            | System.Windows.Forms.AnchorStyles.Left)));
-      this.groupBoxAttributs.Controls.Add(this.variablesListBox);
-      this.groupBoxAttributs.Location = new System.Drawing.Point(3, 4);
-      this.groupBoxAttributs.Name = "groupBoxAttributs";
-      this.groupBoxAttributs.Size = new System.Drawing.Size(153, 252);
-      this.groupBoxAttributs.TabIndex = 3;
-      this.groupBoxAttributs.TabStop = false;
-      this.groupBoxAttributs.Text = "Attributes";
-      // 
-      // variablesListBox
-      // 
-      this.variablesListBox.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.variablesListBox.FormattingEnabled = true;
-      this.variablesListBox.Location = new System.Drawing.Point(6, 19);
-      this.variablesListBox.Name = "variablesListBox";
-      this.variablesListBox.Size = new System.Drawing.Size(141, 229);
-      this.variablesListBox.TabIndex = 1;
-      this.variablesListBox.ItemCheck += new System.Windows.Forms.ItemCheckEventHandler(this.variablesListBox_ItemCheck);
-      // 
-      // groupBoxOptions
-      // 
-      this.groupBoxOptions.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.groupBoxOptions.Location = new System.Drawing.Point(4, 262);
-      this.groupBoxOptions.Name = "groupBoxOptions";
-      this.groupBoxOptions.Size = new System.Drawing.Size(152, 138);
-      this.groupBoxOptions.TabIndex = 4;
-      this.groupBoxOptions.TabStop = false;
-      this.groupBoxOptions.Text = "Options";
-      // 
-      // 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(163, 4);
-      this.viewHost.Name = "viewHost";
-      this.viewHost.ReadOnly = false;
-      this.viewHost.Size = new System.Drawing.Size(524, 396);
-      this.viewHost.TabIndex = 5;
-      this.viewHost.ViewsLabelVisible = true;
-      this.viewHost.ViewType = null;
       // 
       // HistogramView
@@ -106,10 +30,5 @@
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.viewHost);
-      this.Controls.Add(this.groupBoxOptions);
-      this.Controls.Add(this.groupBoxAttributs);
       this.Name = "HistogramView";
-      this.Size = new System.Drawing.Size(690, 403);
-      this.groupBoxAttributs.ResumeLayout(false);
       this.ResumeLayout(false);
 
@@ -118,8 +37,4 @@
     #endregion
 
-    private System.Windows.Forms.GroupBox groupBoxAttributs;
-    private System.Windows.Forms.CheckedListBox variablesListBox;
-    private System.Windows.Forms.GroupBox groupBoxOptions;
-    private MainForm.WindowsForms.ViewHost viewHost;
   }
 }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HistogramView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HistogramView.cs	(revision 10657)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/HistogramView.cs	(revision 10658)
@@ -1,25 +1,15 @@
-﻿#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 System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
 using System.Windows.Forms;
+using HeuristicLab.Analysis;
+using HeuristicLab.Collections;
+using HeuristicLab.Core;
 using HeuristicLab.Core.Views;
+using HeuristicLab.Data;
 using HeuristicLab.MainForm;
 
@@ -28,7 +18,12 @@
   [View("Histogram View")]
   [Content(typeof(HistogramContent), false)]
-  public partial class HistogramView : ItemView {
+  public partial class HistogramView : PreprocessingChartView {
+
+    private const string HISTOGRAM_CHART_TITLE = "Histogram";
+
     public HistogramView() {
       InitializeComponent();
+      chartType = DataRowVisualProperties.DataRowChartType.Histogram;
+      chartTitle = HISTOGRAM_CHART_TITLE;
     }
 
@@ -40,36 +35,5 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      if (Content != null) {
-        InitDataTable();
-        InitVariablesListBox();
-      }
-    }
-
-    private void InitVariablesListBox() {
-      IHistogramLogic logic = Content.HistogramLogic;
-
-      foreach (var variableName in logic.GetVariableNames()) {
-        variablesListBox.Items.Add(variableName, true);
-      }
-    }
-
-    private void InitDataTable() {
-      IHistogramLogic logic = Content.HistogramLogic;
-      viewHost.Content = logic.GetDataTable();
-    }
-
-    private void variablesListBox_ItemCheck(object sender, ItemCheckEventArgs e) {
-      string item = variablesListBox.Items[e.Index] as string;
-
-      if (e.NewValue == CheckState.Checked && !Content.HistogramLogic.VariableIsDisplayed(item))
-        Content.HistogramLogic.AddVariable(item);
-      else if (e.NewValue == CheckState.Unchecked && Content.HistogramLogic.VariableIsDisplayed(item))
-        Content.HistogramLogic.RemoveVariable(item);
     }
   }
 }
-
-
-
-
-
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/LineChartView.Designer.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/LineChartView.Designer.cs	(revision 10657)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/LineChartView.Designer.cs	(revision 10658)
@@ -1,25 +1,3 @@
-﻿#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.Data;
-namespace HeuristicLab.DataPreprocessing.Views {
+﻿namespace HeuristicLab.DataPreprocessing.Views {
   partial class LineChartView {
     /// <summary> 
@@ -46,65 +24,9 @@
     /// </summary>
     private void InitializeComponent() {
-      this.viewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.groupBoxOptions = new System.Windows.Forms.GroupBox();
-      this.checkedItemList = new HeuristicLab.DataPreprocessing.Views.PreprocessingCheckedItemListView();
-      this.SuspendLayout();
-      // 
-      // 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(162, 4);
-      this.viewHost.Name = "viewHost";
-      this.viewHost.ReadOnly = false;
-      this.viewHost.Size = new System.Drawing.Size(489, 396);
-      this.viewHost.TabIndex = 0;
-      this.viewHost.ViewsLabelVisible = true;
-      this.viewHost.ViewType = null;
-      // 
-      // groupBoxOptions
-      // 
-      this.groupBoxOptions.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.groupBoxOptions.Location = new System.Drawing.Point(4, 262);
-      this.groupBoxOptions.Name = "groupBoxOptions";
-      this.groupBoxOptions.Size = new System.Drawing.Size(152, 138);
-      this.groupBoxOptions.TabIndex = 3;
-      this.groupBoxOptions.TabStop = false;
-      this.groupBoxOptions.Text = "Options";
-      // 
-      // checkedItemList
-      // 
-      this.checkedItemList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
-            | System.Windows.Forms.AnchorStyles.Left)));
-      this.checkedItemList.Caption = "View";
-      this.checkedItemList.Content = null;
-      this.checkedItemList.Location = new System.Drawing.Point(4, 4);
-      this.checkedItemList.Name = "checkedItemList";
-      this.checkedItemList.ReadOnly = false;
-      this.checkedItemList.Size = new System.Drawing.Size(152, 252);
-      this.checkedItemList.TabIndex = 4;
-      // 
-      // LineChartView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      components = new System.ComponentModel.Container();
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.checkedItemList);
-      this.Controls.Add(this.groupBoxOptions);
-      this.Controls.Add(this.viewHost);
-      this.Name = "LineChartView";
-      this.Size = new System.Drawing.Size(654, 403);
-      this.ResumeLayout(false);
-
     }
 
     #endregion
-
-    private MainForm.WindowsForms.ViewHost viewHost;
-    private System.Windows.Forms.GroupBox groupBoxOptions;
-    private PreprocessingCheckedItemListView checkedItemList;
   }
 }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/LineChartView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/LineChartView.cs	(revision 10657)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/LineChartView.cs	(revision 10658)
@@ -1,23 +1,9 @@
-﻿#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 System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
 using System.Windows.Forms;
 using HeuristicLab.Analysis;
@@ -32,58 +18,12 @@
   [View("Line Chart View")]
   [Content(typeof(LineChartContent), false)]
-  public partial class LineChartView : ItemView {
+  public partial class LineChartView : PreprocessingChartView {
 
-    private ILineChartLogic logic;
-    private DataTable dataTable;
-    private ICheckedItemList<StringValue> itemList;
-    private const string LINE_CHART_TITLE = "LineChart";
+    private const string LINE_CHART_TITLE = "Line Chart";
 
     public LineChartView() {
       InitializeComponent();
-    }
-
-    private void CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> checkedItems) {
-      foreach(IndexedItem<StringValue> item in checkedItems.Items)
-      {
-        string variableName = item.Value.Value;
-        if (VariableIsDisplayed(variableName)) {
-          dataTable.Rows.Remove(variableName);
-        } else {
-          dataTable.Rows.Add(logic.CreateDataRow(variableName));
-        }
-      }
-    }
-
-    public bool VariableIsDisplayed(string name) {
-
-      foreach (var item in dataTable.Rows) {
-        if (item.Name == name)
-          return true;
-      }
-      return false;
-    }
-
-    private void InitDataTable() {
-      dataTable = logic.CreateDataTable(LINE_CHART_TITLE);
-      viewHost.Content = dataTable;
-    }
-
-    private void InitVariablesListBox() {
-      itemList = logic.CreateVariableItemList();
-      checkedItemList.Content = itemList;
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.Changed += Content_Changed;
-    }
-
-    protected override void DeregisterContentEvents() {
-      base.DeregisterContentEvents();
-      Content.Changed -= Content_Changed;
-    }
-
-    void Content_Changed(object sender, DataPreprocessingChangedEventArgs e) {
-      viewHost.Refresh();
+      chartType = DataRowVisualProperties.DataRowChartType.Line;
+      chartTitle = LINE_CHART_TITLE;
     }
 
@@ -95,61 +35,5 @@
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      if (Content != null) {
-        logic = Content.LineChartLogic;
-        InitDataTable();
-        InitVariablesListBox();
-        itemList.CheckedItemsChanged += CheckedItemsChanged;
-        logic.Changed += PreprocessingData_Changed;
-      }
     }
-
-    //TODO: refactor: possible code duplication with HistogramLogic
-    void PreprocessingData_Changed(object sender, DataPreprocessingChangedEventArgs e) {
-      switch (e.Type) {
-        case DataPreprocessingChangedEventType.DeleteColumn:
-          RemoveVariable(logic.GetVariableNameByIndex(e.Column));
-          break;
-        case DataPreprocessingChangedEventType.AddColumn:
-          AddVariable(logic.GetVariableNameByIndex(e.Column));
-          break;
-        case DataPreprocessingChangedEventType.ChangeColumn:
-        case DataPreprocessingChangedEventType.ChangeItem:
-          dataTable.Rows.Remove(logic.GetVariableNameByIndex(e.Column));
-          dataTable.Rows.Add(logic.CreateDataRow((logic.GetVariableNameByIndex(e.Column))));
-          break;
-        case DataPreprocessingChangedEventType.DeleteRow:
-        case DataPreprocessingChangedEventType.AddRow:
-          InitDataTable();
-          break;
-      }
-    }
-
-    // add variable to data table and item list
-    private void AddVariable(string name) {
-      dataTable.Rows.Add(logic.CreateDataRow(name));
-      itemList.Add(new StringValue(name));
-    }
-
-    // remove variable from data table and item list
-    private void RemoveVariable(string name) {
-      dataTable.Rows.Remove(name);
-
-      StringValue stringValue = FindVariableItemList(name);
-      if (stringValue != null)
-        itemList.Remove(stringValue);
-
-    }
-
-    private StringValue FindVariableItemList(string name) {
-      foreach (StringValue stringValue in itemList) {
-        if (stringValue.Value == name)
-          return stringValue;
-      }
-      return null;
-    }
-
-
   }
 }
-
-
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/PreprocessingChartView.Designer.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/PreprocessingChartView.Designer.cs	(revision 10658)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/PreprocessingChartView.Designer.cs	(revision 10658)
@@ -0,0 +1,109 @@
+﻿#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.Data;
+namespace HeuristicLab.DataPreprocessing.Views {
+  partial class PreprocessingChartView {
+    /// <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.checkedItemList = new HeuristicLab.DataPreprocessing.Views.PreprocessingCheckedItemListView();
+      this.chartPanel = new System.Windows.Forms.Panel();
+      this.dataTableView = new HeuristicLab.Analysis.Views.DataTableView();
+      this.chartPanel.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // checkedItemList
+      // 
+      this.checkedItemList.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left)));
+      this.checkedItemList.Caption = "View";
+      this.checkedItemList.Content = null;
+      this.checkedItemList.Location = new System.Drawing.Point(4, 4);
+      this.checkedItemList.Name = "checkedItemList";
+      this.checkedItemList.ReadOnly = false;
+      this.checkedItemList.Size = new System.Drawing.Size(152, 252);
+      this.checkedItemList.TabIndex = 4;
+      // 
+      // chartPanel
+      // 
+      this.chartPanel.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.chartPanel.Controls.Add(this.dataTableView);
+      this.chartPanel.Location = new System.Drawing.Point(163, 4);
+      this.chartPanel.Name = "chartPanel";
+      this.chartPanel.Size = new System.Drawing.Size(488, 396);
+      this.chartPanel.TabIndex = 5;
+      // 
+      // dataTableView
+      // 
+      this.dataTableView.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.dataTableView.Caption = "DataTable View";
+      this.dataTableView.Content = null;
+      this.dataTableView.Location = new System.Drawing.Point(3, 3);
+      this.dataTableView.Name = "dataTableView";
+      this.dataTableView.ReadOnly = false;
+      this.dataTableView.Size = new System.Drawing.Size(482, 390);
+      this.dataTableView.TabIndex = 0;
+      // 
+      // LineChartView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.chartPanel);
+      this.Controls.Add(this.checkedItemList);
+      this.Name = "LineChartView";
+      this.Size = new System.Drawing.Size(654, 403);
+      this.chartPanel.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private PreprocessingCheckedItemListView checkedItemList;
+    private System.Windows.Forms.Panel chartPanel;
+    private Analysis.Views.DataTableView dataTableView;
+  }
+}
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/PreprocessingChartView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/PreprocessingChartView.cs	(revision 10658)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/PreprocessingChartView.cs	(revision 10658)
@@ -0,0 +1,161 @@
+﻿#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.Windows.Forms;
+using HeuristicLab.Analysis;
+using HeuristicLab.Collections;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.Data;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.DataPreprocessing.Views {
+
+  [View("Preprocessing Chart View")]
+  [Content(typeof(PreprocessingChartContent), false)]
+  public partial class PreprocessingChartView : ItemView {
+
+    private IChartLogic logic;
+    private DataTable dataTable;
+    private ICheckedItemList<StringValue> variableItemList;    
+    protected DataRowVisualProperties.DataRowChartType chartType;
+    protected string chartTitle;
+
+    private const string DEFAULT_CHART_TITLE = "Chart";
+
+
+    public PreprocessingChartView() {
+      InitializeComponent();
+      chartType = DataRowVisualProperties.DataRowChartType.Line;
+      chartTitle = DEFAULT_CHART_TITLE;
+    }
+
+    private void CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> checkedItems) {
+      foreach(IndexedItem<StringValue> item in checkedItems.Items)
+      {
+        string variableName = item.Value.Value;
+        if (VariableIsDisplayed(variableName)) {
+          dataTable.Rows.Remove(variableName);
+        } else {
+          dataTable.Rows.Add(logic.CreateDataRow(variableName, chartType));
+        }
+      }
+    }
+
+    public bool VariableIsDisplayed(string name) {
+
+      foreach (var item in dataTable.Rows) {
+        if (item.Name == name)
+          return true;
+      }
+      return false;
+    }
+
+    private void InitDataTable() {
+      dataTable = logic.CreateDataTable(chartTitle, chartType);
+      dataTableView.Content = dataTable;
+    }
+
+    private void InitVariablesListBox() {
+      variableItemList = logic.CreateVariableItemList();
+      checkedItemList.Content = variableItemList;
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.Changed += Content_Changed;
+    }
+
+    protected override void DeregisterContentEvents() {
+      base.DeregisterContentEvents();
+      Content.Changed -= Content_Changed;
+    }
+
+    void Content_Changed(object sender, DataPreprocessingChangedEventArgs e) {
+      dataTableView.Refresh();
+    }
+
+    public new PreprocessingChartContent Content {
+      get { return (PreprocessingChartContent)base.Content; }
+      set { base.Content = value; }
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content != null) {
+        logic = Content.ChartLogic;
+        InitDataTable();
+        InitVariablesListBox();
+        variableItemList.CheckedItemsChanged += CheckedItemsChanged;
+        logic.Changed += PreprocessingData_Changed;
+      }
+    }
+
+    //TODO: refactor: possible code duplication with HistogramLogic
+    void PreprocessingData_Changed(object sender, DataPreprocessingChangedEventArgs e) {
+      switch (e.Type) {
+        case DataPreprocessingChangedEventType.DeleteColumn:
+          RemoveVariable(logic.GetVariableNameByIndex(e.Column));
+          break;
+        case DataPreprocessingChangedEventType.AddColumn:
+          AddVariable(logic.GetVariableNameByIndex(e.Column));
+          break;
+        case DataPreprocessingChangedEventType.ChangeColumn:
+        case DataPreprocessingChangedEventType.ChangeItem:
+          dataTable.Rows.Remove(logic.GetVariableNameByIndex(e.Column));
+          dataTable.Rows.Add(logic.CreateDataRow(logic.GetVariableNameByIndex(e.Column),chartType));
+          break;
+        case DataPreprocessingChangedEventType.DeleteRow:
+        case DataPreprocessingChangedEventType.AddRow:
+          InitDataTable();
+          break;
+      }
+    }
+
+    // add variable to data table and item list
+    private void AddVariable(string name) {
+      dataTable.Rows.Add(logic.CreateDataRow(name, chartType));
+      variableItemList.Add(new StringValue(name));
+    }
+
+    // remove variable from data table and item list
+    private void RemoveVariable(string name) {
+      dataTable.Rows.Remove(name);
+
+      StringValue stringValue = FindVariableItemList(name);
+      if (stringValue != null)
+        variableItemList.Remove(stringValue);
+
+    }
+
+    private StringValue FindVariableItemList(string name) {
+      foreach (StringValue stringValue in variableItemList) {
+        if (stringValue.Value == name)
+          return stringValue;
+      }
+      return null;
+    }
+
+
+  }
+}
+
+
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10657)
+++ /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 10657)
+++ /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: anches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/HistogramLogic.cs	(revision 10657)
+++ 	(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 10657)
+++ /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: anches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/LineChartLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Implementations/LineChartLogic.cs	(revision 10657)
+++ 	(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: anches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IHistogramLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/IHistogramLogic.cs	(revision 10657)
+++ 	(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: anches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/ILineChartLogic.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Interfaces/ILineChartLogic.cs	(revision 10657)
+++ 	(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);
-  }
-}
