Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/CheckedTransformationListView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/CheckedTransformationListView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/CheckedTransformationListView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/CheckedTransformationListView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/CheckedTransformationListView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/CheckedTransformationListView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ComparisonFilterView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -61,5 +61,4 @@
       dataGridView.KeyDown += dataGridView_KeyDown;
       dataGridView.MouseUp += dataGridView_MouseUp;
-      dataGridView.ColumnHeaderMouseClick += dataGridView_ColumnHeaderMouseClick;
       contextMenuCell.Items.Add(ShowHideColumns);
       _highlightedCellsBackground = new Dictionary<int, IList<int>>();
@@ -127,5 +126,5 @@
 
       string errorMessage;
-      if (Content != null) {
+      if (!String.IsNullOrEmpty(e.FormattedValue.ToString())) {
         if (dataGridView.IsCurrentCellInEditMode && Content.FilterLogic.IsFiltered) {
           errorMessage = "A filter is active, you cannot modify data. Press ESC to exit edit mode.";
@@ -164,5 +163,19 @@
     }
 
-    private void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
+    protected override void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
+      if (Content != null) {
+        if (e.Button == System.Windows.Forms.MouseButtons.Left) {
+          dataGridView.Focus();
+          dataGridView.ClearSelection();
+          dataGridView.SelectionChanged -= dataGridView_SelectionChanged;
+          for (int i = 0; i < dataGridView.RowCount; i++) {
+            if (i + 1 == dataGridView.RowCount)
+              dataGridView.SelectionChanged += dataGridView_SelectionChanged;
+            dataGridView[e.ColumnIndex, i].Selected = true;
+          }
+        } else if (Content.SortableView) {
+          SortColumn(e.ColumnIndex);
+        }
+      }
       searchIterator = null;
     }
@@ -437,5 +450,5 @@
     private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
       if (Content == null) return;
-      if (e.Button == System.Windows.Forms.MouseButtons.Right) {
+      if (e.Button == System.Windows.Forms.MouseButtons.Right && !(e.ColumnIndex != -1 && e.RowIndex == -1)) {
         if (e.ColumnIndex == -1 || e.RowIndex == -1) {
           replaceValueOverColumnToolStripMenuItem.Visible = false;
@@ -474,16 +487,23 @@
     private void dataGridView_KeyDown(object sender, KeyEventArgs e) {
       var selectedRows = dataGridView.SelectedRows;
-      if (e.KeyCode == Keys.Delete && selectedRows.Count > 0) {
-        List<int> rows = new List<int>();
-        for (int i = 0; i < selectedRows.Count; ++i) {
-          rows.Add(selectedRows[i].Index);
-        }
-        Content.DeleteRow(rows);
-      } else if (e.Control && e.KeyCode == Keys.F) {
-        CreateFindAndReplaceDialog();
-        findAndReplaceDialog.ActivateSearch();
-      } else if (e.Control && e.KeyCode == Keys.R) {
-        CreateFindAndReplaceDialog();
-        findAndReplaceDialog.ActivateReplace();
+      var selectedCells = dataGridView.SelectedCells;
+      if (!Content.FilterLogic.IsFiltered) { //data is in read only mode....
+        if (e.KeyCode == Keys.Delete && selectedCells.Count == Content.Rows && selectedCells.Count > 0) {
+          Content.DeleteColumn(selectedCells[0].ColumnIndex);
+        } else if (e.KeyCode == Keys.Delete && selectedRows.Count > 0) {
+          List<int> rows = new List<int>();
+          for (int i = 0; i < selectedRows.Count; ++i) {
+            int index = (sortedColumnIndices.Count != 0) ? (Convert.ToInt32(selectedRows[i].HeaderCell.Value) - 1) :
+              selectedRows[i].Index;
+            rows.Add(index);
+          }
+          Content.DeleteRows(rows);
+        } else if (e.Control && e.KeyCode == Keys.F) {
+          CreateFindAndReplaceDialog();
+          findAndReplaceDialog.ActivateSearch();
+        } else if (e.Control && e.KeyCode == Keys.R) {
+          CreateFindAndReplaceDialog();
+          findAndReplaceDialog.ActivateReplace();
+        }
       }
     }
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -46,8 +46,8 @@
       if (Content != null) {
         var data = Content.Data;
-        var searchLogic = new SearchLogic(data);
+        var filterLogic = new FilterLogic(data);
+        var searchLogic = new SearchLogic(data, filterLogic);
         var statisticsLogic = new StatisticsLogic(data, searchLogic);
         var manipulationLogic = new ManipulationLogic(data, searchLogic, statisticsLogic);
-        var filterLogic = new FilterLogic(data);
 
         var viewShortcuts = new ItemList<IViewShortcut> {
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessingView.designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessorStarter.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessorStarter.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/DataPreprocessorStarter.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -44,6 +44,10 @@
         IContentView contentView = control as IContentView;
         if (contentView != null) {
-          algorithm = contentView.Content as IAlgorithm;
-          problem = contentView.Content as IDataAnalysisProblem;
+          var newAlgorithm = contentView.Content as IAlgorithm;
+          if (newAlgorithm != null)
+            algorithm = newAlgorithm;
+          var newProblem = contentView.Content as IDataAnalysisProblem;
+          if (newProblem != null)
+            problem = newProblem;
         }
         control = control.Parent;
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HeuristicLab.DataPreprocessing.Views-3.4.csproj	(revision 12694)
@@ -10,5 +10,5 @@
     <RootNamespace>HeuristicLab.DataPreprocessing.Views</RootNamespace>
     <AssemblyName>HeuristicLab.DataPreprocessing.Views-3.4</AssemblyName>
-    <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
+    <TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
     <FileAlignment>512</FileAlignment>
     <TargetFrameworkProfile />
@@ -18,17 +18,66 @@
     <DebugType>full</DebugType>
     <Optimize>false</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
     <DefineConstants>DEBUG;TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
-    <UseVSHostingProcess>false</UseVSHostingProcess>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
     <DebugType>pdbonly</DebugType>
     <Optimize>true</Optimize>
-    <OutputPath>..\..\bin\</OutputPath>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
     <DefineConstants>TRACE</DefineConstants>
     <ErrorReport>prompt</ErrorReport>
     <WarningLevel>4</WarningLevel>
+    <DocumentationFile>
+    </DocumentationFile>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x64' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x64' ">
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x64</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
+    <DebugSymbols>true</DebugSymbols>
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>DEBUG;TRACE</DefineConstants>
+    <DebugType>full</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
+  </PropertyGroup>
+  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
+    <OutputPath>$(SolutionDir)\bin\</OutputPath>
+    <DefineConstants>TRACE</DefineConstants>
+    <DocumentationFile>
+    </DocumentationFile>
+    <Optimize>true</Optimize>
+    <DebugType>pdbonly</DebugType>
+    <PlatformTarget>x86</PlatformTarget>
+    <ErrorReport>prompt</ErrorReport>
+    <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+    <Prefer32Bit>false</Prefer32Bit>
   </PropertyGroup>
   <PropertyGroup>
@@ -272,5 +321,5 @@
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-<PropertyGroup>
+  <PropertyGroup>
     <PreBuildEvent Condition=" '$(OS)' == 'Windows_NT' ">set Path=%25Path%25;$(ProjectDir);$(SolutionDir)
 set ProjectDir=$(ProjectDir)
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.Designer.cs	(revision 12694)
@@ -25,4 +25,5 @@
     private void InitializeComponent() {
       this.optionsBox = new System.Windows.Forms.GroupBox();
+      this.displayDetailsCheckBox = new System.Windows.Forms.CheckBox();
       this.label1 = new System.Windows.Forms.Label();
       this.classifierComboBox = new System.Windows.Forms.ComboBox();
@@ -33,21 +34,37 @@
       // 
       this.optionsBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.optionsBox.Controls.Add(this.displayDetailsCheckBox);
       this.optionsBox.Controls.Add(this.label1);
       this.optionsBox.Controls.Add(this.classifierComboBox);
-      this.optionsBox.Location = new System.Drawing.Point(4, 263);
+      this.optionsBox.Location = new System.Drawing.Point(5, 324);
+      this.optionsBox.Margin = new System.Windows.Forms.Padding(4);
       this.optionsBox.Name = "optionsBox";
-      this.optionsBox.Size = new System.Drawing.Size(152, 134);
+      this.optionsBox.Padding = new System.Windows.Forms.Padding(4);
+      this.optionsBox.Size = new System.Drawing.Size(203, 165);
       this.optionsBox.TabIndex = 7;
       this.optionsBox.TabStop = false;
       this.optionsBox.Text = "Options";
       // 
+      // displayDetailsCheckBox
+      // 
+      this.displayDetailsCheckBox.AutoSize = true;
+      this.displayDetailsCheckBox.Location = new System.Drawing.Point(7, 71);
+      this.displayDetailsCheckBox.Name = "displayDetailsCheckBox";
+      this.displayDetailsCheckBox.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
+      this.displayDetailsCheckBox.Size = new System.Drawing.Size(153, 21);
+      this.displayDetailsCheckBox.TabIndex = 3;
+      this.displayDetailsCheckBox.Text = "Display value count";
+      this.displayDetailsCheckBox.UseVisualStyleBackColor = true;
+      this.displayDetailsCheckBox.CheckedChanged += new System.EventHandler(this.displayDetailsCheckBox_CheckedChanged);
+      // 
       // label1
       // 
       this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(6, 26);
+      this.label1.Location = new System.Drawing.Point(4, 19);
+      this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(91, 13);
+      this.label1.Size = new System.Drawing.Size(108, 17);
       this.label1.TabIndex = 2;
-      this.label1.Text = "Classifier variable:";
+      this.label1.Text = "Target variable:";
       // 
       // classifierComboBox
@@ -55,7 +72,8 @@
       this.classifierComboBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
       this.classifierComboBox.FormattingEnabled = true;
-      this.classifierComboBox.Location = new System.Drawing.Point(9, 52);
+      this.classifierComboBox.Location = new System.Drawing.Point(7, 40);
+      this.classifierComboBox.Margin = new System.Windows.Forms.Padding(4);
       this.classifierComboBox.Name = "classifierComboBox";
-      this.classifierComboBox.Size = new System.Drawing.Size(121, 21);
+      this.classifierComboBox.Size = new System.Drawing.Size(160, 24);
       this.classifierComboBox.TabIndex = 1;
       this.classifierComboBox.SelectedIndexChanged += new System.EventHandler(this.classifierComboBox_SelectedIndexChanged);
@@ -63,7 +81,8 @@
       // HistogramView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.Controls.Add(this.optionsBox);
+      this.Margin = new System.Windows.Forms.Padding(5);
       this.Name = "HistogramView";
       this.Controls.SetChildIndex(this.optionsBox, 0);
@@ -79,4 +98,5 @@
     private System.Windows.Forms.ComboBox classifierComboBox;
     private System.Windows.Forms.Label label1;
+    private System.Windows.Forms.CheckBox displayDetailsCheckBox;
 
   }
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/HistogramView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -70,6 +70,17 @@
 
       Content.ClassifierVariableIndex = classifierComboBox.SelectedIndex;
-
-      GenerateChart();
+      if (Content.IsDetailedChartViewEnabled != IsDetailedChartViewEnabled) {
+        displayDetailsCheckBox.Checked = Content.IsDetailedChartViewEnabled;
+      } else {
+        GenerateChart();
+      }
+    }
+    private void displayDetailsCheckBox_CheckedChanged(object sender, EventArgs e) {
+      bool isChecked = displayDetailsCheckBox.Checked;
+      if (IsDetailedChartViewEnabled != isChecked) {
+        IsDetailedChartViewEnabled = isChecked;
+        Content.IsDetailedChartViewEnabled = isChecked;
+        GenerateChart();
+      }
     }
   }
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/LineChartView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.Designer.cs	(revision 12694)
@@ -49,5 +49,6 @@
       this.label10 = new System.Windows.Forms.Label();
       this.tabDataShuffle = new System.Windows.Forms.TabPage();
-      this.label6 = new System.Windows.Forms.Label();
+      this.shuffleSeparatelyCheckbox = new System.Windows.Forms.CheckBox();
+      this.lblShuffleProperties = new System.Windows.Forms.Label();
       this.grpBoxPreview = new System.Windows.Forms.GroupBox();
       this.tabsPreview = new System.Windows.Forms.TabControl();
@@ -66,4 +67,6 @@
       this.lblPreviewShuffle = new System.Windows.Forms.Label();
       this.label9 = new System.Windows.Forms.Label();
+      this.panel1 = new System.Windows.Forms.Panel();
+      this.panel2 = new System.Windows.Forms.Panel();
       this.grpBoxData.SuspendLayout();
       this.tabsData.SuspendLayout();
@@ -82,4 +85,6 @@
       this.tabPreviewReplaceMissingValues.SuspendLayout();
       this.tabPreviewShuffle.SuspendLayout();
+      this.panel1.SuspendLayout();
+      this.panel2.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -89,4 +94,5 @@
             | System.Windows.Forms.AnchorStyles.Right)));
       this.lstMethods.FormattingEnabled = true;
+      this.lstMethods.ItemHeight = 16;
       this.lstMethods.Items.AddRange(new object[] {
             "Delete Columns with insufficient Information",
@@ -95,7 +101,8 @@
             "Replace Missing Values",
             "Shuffle Data"});
-      this.lstMethods.Location = new System.Drawing.Point(3, 3);
+      this.lstMethods.Location = new System.Drawing.Point(4, 4);
+      this.lstMethods.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.lstMethods.Name = "lstMethods";
-      this.lstMethods.Size = new System.Drawing.Size(733, 95);
+      this.lstMethods.Size = new System.Drawing.Size(976, 116);
       this.lstMethods.Sorted = true;
       this.lstMethods.TabIndex = 0;
@@ -106,7 +113,8 @@
       this.btnApply.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
       this.btnApply.Enabled = false;
-      this.btnApply.Location = new System.Drawing.Point(603, 500);
+      this.btnApply.Location = new System.Drawing.Point(804, 615);
+      this.btnApply.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.btnApply.Name = "btnApply";
-      this.btnApply.Size = new System.Drawing.Size(129, 23);
+      this.btnApply.Size = new System.Drawing.Size(172, 28);
       this.btnApply.TabIndex = 2;
       this.btnApply.Text = "Apply Manipulation";
@@ -119,7 +127,9 @@
             | System.Windows.Forms.AnchorStyles.Right)));
       this.grpBoxData.Controls.Add(this.tabsData);
-      this.grpBoxData.Location = new System.Drawing.Point(4, 105);
+      this.grpBoxData.Location = new System.Drawing.Point(5, 129);
+      this.grpBoxData.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.grpBoxData.Name = "grpBoxData";
-      this.grpBoxData.Size = new System.Drawing.Size(732, 189);
+      this.grpBoxData.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.grpBoxData.Size = new System.Drawing.Size(976, 233);
       this.grpBoxData.TabIndex = 3;
       this.grpBoxData.TabStop = false;
@@ -137,8 +147,9 @@
       this.tabsData.Controls.Add(this.tabDataShuffle);
       this.tabsData.ItemSize = new System.Drawing.Size(58, 18);
-      this.tabsData.Location = new System.Drawing.Point(6, 19);
+      this.tabsData.Location = new System.Drawing.Point(8, 23);
+      this.tabsData.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabsData.Name = "tabsData";
       this.tabsData.SelectedIndex = 0;
-      this.tabsData.Size = new System.Drawing.Size(719, 164);
+      this.tabsData.Size = new System.Drawing.Size(959, 202);
       this.tabsData.TabIndex = 3;
       // 
@@ -147,7 +158,8 @@
       this.tabPage1.Controls.Add(this.label7);
       this.tabPage1.Location = new System.Drawing.Point(4, 22);
+      this.tabPage1.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPage1.Name = "tabPage1";
-      this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPage1.Size = new System.Drawing.Size(711, 138);
+      this.tabPage1.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabPage1.Size = new System.Drawing.Size(951, 176);
       this.tabPage1.TabIndex = 5;
       this.tabPage1.Text = "tabDataInactive";
@@ -158,7 +170,8 @@
       this.label7.AutoSize = true;
       this.label7.Enabled = false;
-      this.label7.Location = new System.Drawing.Point(3, 3);
+      this.label7.Location = new System.Drawing.Point(4, 4);
+      this.label7.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label7.Name = "label7";
-      this.label7.Size = new System.Drawing.Size(259, 13);
+      this.label7.Size = new System.Drawing.Size(345, 17);
       this.label7.TabIndex = 1;
       this.label7.Text = "Please select one of the manipulation methods above";
@@ -170,7 +183,8 @@
       this.tabDataDeleteColumnsInformation.Controls.Add(this.label1);
       this.tabDataDeleteColumnsInformation.Location = new System.Drawing.Point(4, 22);
+      this.tabDataDeleteColumnsInformation.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabDataDeleteColumnsInformation.Name = "tabDataDeleteColumnsInformation";
-      this.tabDataDeleteColumnsInformation.Padding = new System.Windows.Forms.Padding(3);
-      this.tabDataDeleteColumnsInformation.Size = new System.Drawing.Size(711, 138);
+      this.tabDataDeleteColumnsInformation.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabDataDeleteColumnsInformation.Size = new System.Drawing.Size(951, 176);
       this.tabDataDeleteColumnsInformation.TabIndex = 0;
       this.tabDataDeleteColumnsInformation.Text = "del columns info";
@@ -180,7 +194,8 @@
       // 
       this.label2.AutoSize = true;
-      this.label2.Location = new System.Drawing.Point(204, 3);
+      this.label2.Location = new System.Drawing.Point(272, 4);
+      this.label2.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label2.Name = "label2";
-      this.label2.Size = new System.Drawing.Size(89, 13);
+      this.label2.Size = new System.Drawing.Size(120, 17);
       this.label2.TabIndex = 5;
       this.label2.Text = "% missing values.";
@@ -188,7 +203,8 @@
       // txtDeleteColumnsInfo
       // 
-      this.txtDeleteColumnsInfo.Location = new System.Drawing.Point(164, 0);
+      this.txtDeleteColumnsInfo.Location = new System.Drawing.Point(219, 0);
+      this.txtDeleteColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.txtDeleteColumnsInfo.Name = "txtDeleteColumnsInfo";
-      this.txtDeleteColumnsInfo.Size = new System.Drawing.Size(34, 20);
+      this.txtDeleteColumnsInfo.Size = new System.Drawing.Size(44, 22);
       this.txtDeleteColumnsInfo.TabIndex = 4;
       this.txtDeleteColumnsInfo.TextChanged += new System.EventHandler(this.txtDeleteColumnsInfo_TextChanged);
@@ -197,7 +213,8 @@
       // 
       this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(3, 3);
+      this.label1.Location = new System.Drawing.Point(4, 4);
+      this.label1.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label1.Name = "label1";
-      this.label1.Size = new System.Drawing.Size(155, 13);
+      this.label1.Size = new System.Drawing.Size(205, 17);
       this.label1.TabIndex = 3;
       this.label1.Text = "Delete columns with more than ";
@@ -208,7 +225,8 @@
       this.tabDataDeleteColumnsVariance.Controls.Add(this.label4);
       this.tabDataDeleteColumnsVariance.Location = new System.Drawing.Point(4, 22);
+      this.tabDataDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabDataDeleteColumnsVariance.Name = "tabDataDeleteColumnsVariance";
-      this.tabDataDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(3);
-      this.tabDataDeleteColumnsVariance.Size = new System.Drawing.Size(711, 138);
+      this.tabDataDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabDataDeleteColumnsVariance.Size = new System.Drawing.Size(951, 176);
       this.tabDataDeleteColumnsVariance.TabIndex = 1;
       this.tabDataDeleteColumnsVariance.Text = "del columns variance";
@@ -217,7 +235,8 @@
       // txtDeleteColumnsVariance
       // 
-      this.txtDeleteColumnsVariance.Location = new System.Drawing.Point(229, 0);
+      this.txtDeleteColumnsVariance.Location = new System.Drawing.Point(305, 0);
+      this.txtDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.txtDeleteColumnsVariance.Name = "txtDeleteColumnsVariance";
-      this.txtDeleteColumnsVariance.Size = new System.Drawing.Size(135, 20);
+      this.txtDeleteColumnsVariance.Size = new System.Drawing.Size(179, 22);
       this.txtDeleteColumnsVariance.TabIndex = 4;
       this.txtDeleteColumnsVariance.TextChanged += new System.EventHandler(this.txtDeleteColumnsVariance_TextChanged);
@@ -226,7 +245,8 @@
       // 
       this.label4.AutoSize = true;
-      this.label4.Location = new System.Drawing.Point(3, 3);
+      this.label4.Location = new System.Drawing.Point(4, 4);
+      this.label4.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label4.Name = "label4";
-      this.label4.Size = new System.Drawing.Size(220, 13);
+      this.label4.Size = new System.Drawing.Size(292, 17);
       this.label4.TabIndex = 3;
       this.label4.Text = "Delete columns with a variance smaller than  ";
@@ -238,7 +258,8 @@
       this.tabDataDeleteRowsInfo.Controls.Add(this.label5);
       this.tabDataDeleteRowsInfo.Location = new System.Drawing.Point(4, 22);
+      this.tabDataDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabDataDeleteRowsInfo.Name = "tabDataDeleteRowsInfo";
-      this.tabDataDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(3);
-      this.tabDataDeleteRowsInfo.Size = new System.Drawing.Size(711, 138);
+      this.tabDataDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabDataDeleteRowsInfo.Size = new System.Drawing.Size(951, 176);
       this.tabDataDeleteRowsInfo.TabIndex = 2;
       this.tabDataDeleteRowsInfo.Text = "del rows info";
@@ -248,7 +269,8 @@
       // 
       this.label3.AutoSize = true;
-      this.label3.Location = new System.Drawing.Point(189, 3);
+      this.label3.Location = new System.Drawing.Point(252, 4);
+      this.label3.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label3.Name = "label3";
-      this.label3.Size = new System.Drawing.Size(89, 13);
+      this.label3.Size = new System.Drawing.Size(120, 17);
       this.label3.TabIndex = 8;
       this.label3.Text = "% missing values.";
@@ -256,7 +278,8 @@
       // txtDeleteRowsInfo
       // 
-      this.txtDeleteRowsInfo.Location = new System.Drawing.Point(147, 0);
+      this.txtDeleteRowsInfo.Location = new System.Drawing.Point(196, 0);
+      this.txtDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.txtDeleteRowsInfo.Name = "txtDeleteRowsInfo";
-      this.txtDeleteRowsInfo.Size = new System.Drawing.Size(34, 20);
+      this.txtDeleteRowsInfo.Size = new System.Drawing.Size(44, 22);
       this.txtDeleteRowsInfo.TabIndex = 7;
       this.txtDeleteRowsInfo.TextChanged += new System.EventHandler(this.txtDeleteRowsInfo_TextChanged);
@@ -265,7 +288,8 @@
       // 
       this.label5.AutoSize = true;
-      this.label5.Location = new System.Drawing.Point(3, 3);
+      this.label5.Location = new System.Drawing.Point(4, 4);
+      this.label5.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label5.Name = "label5";
-      this.label5.Size = new System.Drawing.Size(138, 13);
+      this.label5.Size = new System.Drawing.Size(182, 17);
       this.label5.TabIndex = 6;
       this.label5.Text = "Delete rows with more than ";
@@ -280,7 +304,8 @@
       this.tabReplaceMissingValues.Controls.Add(this.label10);
       this.tabReplaceMissingValues.Location = new System.Drawing.Point(4, 22);
+      this.tabReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabReplaceMissingValues.Name = "tabReplaceMissingValues";
-      this.tabReplaceMissingValues.Padding = new System.Windows.Forms.Padding(3);
-      this.tabReplaceMissingValues.Size = new System.Drawing.Size(711, 138);
+      this.tabReplaceMissingValues.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabReplaceMissingValues.Size = new System.Drawing.Size(951, 176);
       this.tabReplaceMissingValues.TabIndex = 6;
       this.tabReplaceMissingValues.Text = "repl missing vals";
@@ -289,7 +314,8 @@
       // txtReplaceValue
       // 
-      this.txtReplaceValue.Location = new System.Drawing.Point(173, 27);
+      this.txtReplaceValue.Location = new System.Drawing.Point(231, 33);
+      this.txtReplaceValue.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.txtReplaceValue.Name = "txtReplaceValue";
-      this.txtReplaceValue.Size = new System.Drawing.Size(100, 20);
+      this.txtReplaceValue.Size = new System.Drawing.Size(132, 22);
       this.txtReplaceValue.TabIndex = 2;
       this.txtReplaceValue.TextChanged += new System.EventHandler(this.txtReplaceValue_TextChanged);
@@ -299,7 +325,8 @@
       this.cmbVariableNames.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
       this.cmbVariableNames.FormattingEnabled = true;
-      this.cmbVariableNames.Location = new System.Drawing.Point(142, 0);
+      this.cmbVariableNames.Location = new System.Drawing.Point(189, 0);
+      this.cmbVariableNames.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.cmbVariableNames.Name = "cmbVariableNames";
-      this.cmbVariableNames.Size = new System.Drawing.Size(121, 21);
+      this.cmbVariableNames.Size = new System.Drawing.Size(160, 24);
       this.cmbVariableNames.TabIndex = 1;
       this.cmbVariableNames.SelectedIndexChanged += new System.EventHandler(this.cmbReplaceWith_SelectedIndexChanged);
@@ -315,7 +342,8 @@
             "Most Common",
             "Random"});
-      this.cmbReplaceWith.Location = new System.Drawing.Point(35, 27);
+      this.cmbReplaceWith.Location = new System.Drawing.Point(47, 33);
+      this.cmbReplaceWith.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.cmbReplaceWith.Name = "cmbReplaceWith";
-      this.cmbReplaceWith.Size = new System.Drawing.Size(121, 21);
+      this.cmbReplaceWith.Size = new System.Drawing.Size(160, 24);
       this.cmbReplaceWith.TabIndex = 1;
       this.cmbReplaceWith.SelectedIndexChanged += new System.EventHandler(this.cmbReplaceWith_SelectedIndexChanged);
@@ -324,7 +352,8 @@
       // 
       this.lblValueColon.AutoSize = true;
-      this.lblValueColon.Location = new System.Drawing.Point(157, 30);
+      this.lblValueColon.Location = new System.Drawing.Point(209, 37);
+      this.lblValueColon.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblValueColon.Name = "lblValueColon";
-      this.lblValueColon.Size = new System.Drawing.Size(10, 13);
+      this.lblValueColon.Size = new System.Drawing.Size(12, 17);
       this.lblValueColon.TabIndex = 0;
       this.lblValueColon.Text = ":";
@@ -333,7 +362,8 @@
       // 
       this.label8.AutoSize = true;
-      this.label8.Location = new System.Drawing.Point(3, 30);
+      this.label8.Location = new System.Drawing.Point(4, 37);
+      this.label8.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label8.Name = "label8";
-      this.label8.Size = new System.Drawing.Size(26, 13);
+      this.label8.Size = new System.Drawing.Size(32, 17);
       this.label8.TabIndex = 0;
       this.label8.Text = "with";
@@ -342,7 +372,8 @@
       // 
       this.label10.AutoSize = true;
-      this.label10.Location = new System.Drawing.Point(3, 3);
+      this.label10.Location = new System.Drawing.Point(4, 4);
+      this.label10.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label10.Name = "label10";
-      this.label10.Size = new System.Drawing.Size(133, 13);
+      this.label10.Size = new System.Drawing.Size(177, 17);
       this.label10.TabIndex = 0;
       this.label10.Text = "Replace missing values for";
@@ -350,22 +381,36 @@
       // tabDataShuffle
       // 
-      this.tabDataShuffle.Controls.Add(this.label6);
+      this.tabDataShuffle.Controls.Add(this.shuffleSeparatelyCheckbox);
+      this.tabDataShuffle.Controls.Add(this.lblShuffleProperties);
       this.tabDataShuffle.Location = new System.Drawing.Point(4, 22);
+      this.tabDataShuffle.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabDataShuffle.Name = "tabDataShuffle";
-      this.tabDataShuffle.Padding = new System.Windows.Forms.Padding(3);
-      this.tabDataShuffle.Size = new System.Drawing.Size(711, 138);
+      this.tabDataShuffle.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabDataShuffle.Size = new System.Drawing.Size(951, 176);
       this.tabDataShuffle.TabIndex = 4;
       this.tabDataShuffle.Text = "shuffle";
       this.tabDataShuffle.UseVisualStyleBackColor = true;
       // 
-      // label6
-      // 
-      this.label6.AutoSize = true;
-      this.label6.Enabled = false;
-      this.label6.Location = new System.Drawing.Point(3, 3);
-      this.label6.Name = "label6";
-      this.label6.Size = new System.Drawing.Size(115, 13);
-      this.label6.TabIndex = 0;
-      this.label6.Text = "No properties available";
+      // shuffleSeparatelyCheckbox
+      // 
+      this.shuffleSeparatelyCheckbox.AutoSize = true;
+      this.shuffleSeparatelyCheckbox.Location = new System.Drawing.Point(8, 2);
+      this.shuffleSeparatelyCheckbox.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.shuffleSeparatelyCheckbox.Name = "shuffleSeparatelyCheckbox";
+      this.shuffleSeparatelyCheckbox.Size = new System.Drawing.Size(312, 21);
+      this.shuffleSeparatelyCheckbox.TabIndex = 1;
+      this.shuffleSeparatelyCheckbox.Text = "Shuffle training and test partitions separately";
+      this.shuffleSeparatelyCheckbox.UseVisualStyleBackColor = true;
+      // 
+      // lblShuffleProperties
+      // 
+      this.lblShuffleProperties.AutoSize = true;
+      this.lblShuffleProperties.Enabled = false;
+      this.lblShuffleProperties.Location = new System.Drawing.Point(4, 4);
+      this.lblShuffleProperties.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
+      this.lblShuffleProperties.Name = "lblShuffleProperties";
+      this.lblShuffleProperties.Size = new System.Drawing.Size(154, 17);
+      this.lblShuffleProperties.TabIndex = 0;
+      this.lblShuffleProperties.Text = "No properties available";
       // 
       // grpBoxPreview
@@ -375,7 +420,9 @@
             | System.Windows.Forms.AnchorStyles.Right)));
       this.grpBoxPreview.Controls.Add(this.tabsPreview);
-      this.grpBoxPreview.Location = new System.Drawing.Point(4, 301);
+      this.grpBoxPreview.Location = new System.Drawing.Point(5, 370);
+      this.grpBoxPreview.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.grpBoxPreview.Name = "grpBoxPreview";
-      this.grpBoxPreview.Size = new System.Drawing.Size(732, 193);
+      this.grpBoxPreview.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.grpBoxPreview.Size = new System.Drawing.Size(976, 238);
       this.grpBoxPreview.TabIndex = 4;
       this.grpBoxPreview.TabStop = false;
@@ -393,8 +440,9 @@
       this.tabsPreview.Controls.Add(this.tabPreviewShuffle);
       this.tabsPreview.ItemSize = new System.Drawing.Size(58, 18);
-      this.tabsPreview.Location = new System.Drawing.Point(6, 19);
+      this.tabsPreview.Location = new System.Drawing.Point(8, 23);
+      this.tabsPreview.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabsPreview.Name = "tabsPreview";
       this.tabsPreview.SelectedIndex = 0;
-      this.tabsPreview.Size = new System.Drawing.Size(719, 168);
+      this.tabsPreview.Size = new System.Drawing.Size(959, 207);
       this.tabsPreview.TabIndex = 3;
       // 
@@ -403,7 +451,8 @@
       this.tabPreviewInactive.Controls.Add(this.lblPreviewInActive);
       this.tabPreviewInactive.Location = new System.Drawing.Point(4, 22);
+      this.tabPreviewInactive.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewInactive.Name = "tabPreviewInactive";
-      this.tabPreviewInactive.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPreviewInactive.Size = new System.Drawing.Size(711, 142);
+      this.tabPreviewInactive.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabPreviewInactive.Size = new System.Drawing.Size(951, 181);
       this.tabPreviewInactive.TabIndex = 5;
       this.tabPreviewInactive.Text = "inactive";
@@ -413,7 +462,8 @@
       // 
       this.lblPreviewInActive.AutoSize = true;
-      this.lblPreviewInActive.Location = new System.Drawing.Point(3, 3);
+      this.lblPreviewInActive.Location = new System.Drawing.Point(4, 4);
+      this.lblPreviewInActive.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewInActive.Name = "lblPreviewInActive";
-      this.lblPreviewInActive.Size = new System.Drawing.Size(361, 39);
+      this.lblPreviewInActive.Size = new System.Drawing.Size(491, 51);
       this.lblPreviewInActive.TabIndex = 2;
       this.lblPreviewInActive.Text = "Filters are active and thus manipulations cannot be applied!\r\n\r\nPlease deactive t" +
@@ -423,9 +473,10 @@
       // tabPreviewDeleteColumnsInfo
       // 
-      this.tabPreviewDeleteColumnsInfo.Controls.Add(this.lblPreviewColumnsInfo);
+      this.tabPreviewDeleteColumnsInfo.Controls.Add(this.panel1);
       this.tabPreviewDeleteColumnsInfo.Location = new System.Drawing.Point(4, 22);
+      this.tabPreviewDeleteColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewDeleteColumnsInfo.Name = "tabPreviewDeleteColumnsInfo";
-      this.tabPreviewDeleteColumnsInfo.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPreviewDeleteColumnsInfo.Size = new System.Drawing.Size(711, 142);
+      this.tabPreviewDeleteColumnsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabPreviewDeleteColumnsInfo.Size = new System.Drawing.Size(951, 181);
       this.tabPreviewDeleteColumnsInfo.TabIndex = 0;
       this.tabPreviewDeleteColumnsInfo.Text = "del columns info";
@@ -435,7 +486,9 @@
       // 
       this.lblPreviewColumnsInfo.AutoSize = true;
-      this.lblPreviewColumnsInfo.Location = new System.Drawing.Point(3, 3);
+      this.lblPreviewColumnsInfo.Dock = System.Windows.Forms.DockStyle.Left;
+      this.lblPreviewColumnsInfo.Location = new System.Drawing.Point(0, 0);
+      this.lblPreviewColumnsInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewColumnsInfo.Name = "lblPreviewColumnsInfo";
-      this.lblPreviewColumnsInfo.Size = new System.Drawing.Size(318, 13);
+      this.lblPreviewColumnsInfo.Size = new System.Drawing.Size(423, 17);
       this.lblPreviewColumnsInfo.TabIndex = 1;
       this.lblPreviewColumnsInfo.Text = "{0} columns with more than {1} % missing values would be deleted";
@@ -443,10 +496,11 @@
       // tabPreviewDeleteColumnsVariance
       // 
+      this.tabPreviewDeleteColumnsVariance.Controls.Add(this.panel2);
       this.tabPreviewDeleteColumnsVariance.Controls.Add(this.label12);
-      this.tabPreviewDeleteColumnsVariance.Controls.Add(this.lblPreviewColumnsVariance);
       this.tabPreviewDeleteColumnsVariance.Location = new System.Drawing.Point(4, 22);
+      this.tabPreviewDeleteColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewDeleteColumnsVariance.Name = "tabPreviewDeleteColumnsVariance";
-      this.tabPreviewDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPreviewDeleteColumnsVariance.Size = new System.Drawing.Size(711, 142);
+      this.tabPreviewDeleteColumnsVariance.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabPreviewDeleteColumnsVariance.Size = new System.Drawing.Size(951, 181);
       this.tabPreviewDeleteColumnsVariance.TabIndex = 1;
       this.tabPreviewDeleteColumnsVariance.Text = "del columns variance";
@@ -456,7 +510,8 @@
       // 
       this.label12.AutoSize = true;
-      this.label12.Location = new System.Drawing.Point(6, 22);
+      this.label12.Location = new System.Drawing.Point(8, 27);
+      this.label12.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.label12.Name = "label12";
-      this.label12.Size = new System.Drawing.Size(0, 13);
+      this.label12.Size = new System.Drawing.Size(0, 17);
       this.label12.TabIndex = 2;
       // 
@@ -464,7 +519,9 @@
       // 
       this.lblPreviewColumnsVariance.AutoSize = true;
-      this.lblPreviewColumnsVariance.Location = new System.Drawing.Point(3, 3);
+      this.lblPreviewColumnsVariance.Dock = System.Windows.Forms.DockStyle.Left;
+      this.lblPreviewColumnsVariance.Location = new System.Drawing.Point(0, 0);
+      this.lblPreviewColumnsVariance.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewColumnsVariance.Name = "lblPreviewColumnsVariance";
-      this.lblPreviewColumnsVariance.Size = new System.Drawing.Size(301, 13);
+      this.lblPreviewColumnsVariance.Size = new System.Drawing.Size(398, 17);
       this.lblPreviewColumnsVariance.TabIndex = 2;
       this.lblPreviewColumnsVariance.Text = "{0} columns with a variance smaller than {1} would be deleted.";
@@ -474,7 +531,8 @@
       this.tabPreviewDeleteRowsInfo.Controls.Add(this.lblPreviewRowsInfo);
       this.tabPreviewDeleteRowsInfo.Location = new System.Drawing.Point(4, 22);
+      this.tabPreviewDeleteRowsInfo.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewDeleteRowsInfo.Name = "tabPreviewDeleteRowsInfo";
-      this.tabPreviewDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPreviewDeleteRowsInfo.Size = new System.Drawing.Size(711, 142);
+      this.tabPreviewDeleteRowsInfo.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabPreviewDeleteRowsInfo.Size = new System.Drawing.Size(951, 181);
       this.tabPreviewDeleteRowsInfo.TabIndex = 2;
       this.tabPreviewDeleteRowsInfo.Text = "del rows info";
@@ -484,7 +542,8 @@
       // 
       this.lblPreviewRowsInfo.AutoSize = true;
-      this.lblPreviewRowsInfo.Location = new System.Drawing.Point(3, 3);
+      this.lblPreviewRowsInfo.Location = new System.Drawing.Point(4, 4);
+      this.lblPreviewRowsInfo.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewRowsInfo.Name = "lblPreviewRowsInfo";
-      this.lblPreviewRowsInfo.Size = new System.Drawing.Size(301, 13);
+      this.lblPreviewRowsInfo.Size = new System.Drawing.Size(400, 17);
       this.lblPreviewRowsInfo.TabIndex = 2;
       this.lblPreviewRowsInfo.Text = "{0} rows with more than {1} % missing values would be deleted";
@@ -494,7 +553,8 @@
       this.tabPreviewReplaceMissingValues.Controls.Add(this.lblPreviewReplaceMissingValues);
       this.tabPreviewReplaceMissingValues.Location = new System.Drawing.Point(4, 22);
+      this.tabPreviewReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewReplaceMissingValues.Name = "tabPreviewReplaceMissingValues";
-      this.tabPreviewReplaceMissingValues.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPreviewReplaceMissingValues.Size = new System.Drawing.Size(711, 142);
+      this.tabPreviewReplaceMissingValues.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabPreviewReplaceMissingValues.Size = new System.Drawing.Size(951, 181);
       this.tabPreviewReplaceMissingValues.TabIndex = 6;
       this.tabPreviewReplaceMissingValues.Text = "repl missing vals";
@@ -504,7 +564,8 @@
       // 
       this.lblPreviewReplaceMissingValues.AutoSize = true;
-      this.lblPreviewReplaceMissingValues.Location = new System.Drawing.Point(3, 3);
+      this.lblPreviewReplaceMissingValues.Location = new System.Drawing.Point(4, 4);
+      this.lblPreviewReplaceMissingValues.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewReplaceMissingValues.Name = "lblPreviewReplaceMissingValues";
-      this.lblPreviewReplaceMissingValues.Size = new System.Drawing.Size(343, 13);
+      this.lblPreviewReplaceMissingValues.Size = new System.Drawing.Size(449, 17);
       this.lblPreviewReplaceMissingValues.TabIndex = 3;
       this.lblPreviewReplaceMissingValues.Text = "{0} cells detected with missing values which would be replaced with {1}";
@@ -514,7 +575,8 @@
       this.tabPreviewShuffle.Controls.Add(this.lblPreviewShuffle);
       this.tabPreviewShuffle.Location = new System.Drawing.Point(4, 22);
+      this.tabPreviewShuffle.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.tabPreviewShuffle.Name = "tabPreviewShuffle";
-      this.tabPreviewShuffle.Padding = new System.Windows.Forms.Padding(3);
-      this.tabPreviewShuffle.Size = new System.Drawing.Size(711, 142);
+      this.tabPreviewShuffle.Padding = new System.Windows.Forms.Padding(4, 4, 4, 4);
+      this.tabPreviewShuffle.Size = new System.Drawing.Size(951, 181);
       this.tabPreviewShuffle.TabIndex = 4;
       this.tabPreviewShuffle.Text = "shuffle";
@@ -524,7 +586,8 @@
       // 
       this.lblPreviewShuffle.AutoSize = true;
-      this.lblPreviewShuffle.Location = new System.Drawing.Point(3, 3);
+      this.lblPreviewShuffle.Location = new System.Drawing.Point(4, 4);
+      this.lblPreviewShuffle.Margin = new System.Windows.Forms.Padding(4, 0, 4, 0);
       this.lblPreviewShuffle.Name = "lblPreviewShuffle";
-      this.lblPreviewShuffle.Size = new System.Drawing.Size(252, 13);
+      this.lblPreviewShuffle.Size = new System.Drawing.Size(337, 17);
       this.lblPreviewShuffle.TabIndex = 0;
       this.lblPreviewShuffle.Text = "Data will be shuffled randomly - preview not possible";
@@ -537,7 +600,27 @@
       this.label9.TabIndex = 0;
       // 
+      // panel1
+      // 
+      this.panel1.AutoScroll = true;
+      this.panel1.Controls.Add(this.lblPreviewColumnsInfo);
+      this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.panel1.Location = new System.Drawing.Point(4, 4);
+      this.panel1.Name = "panel1";
+      this.panel1.Size = new System.Drawing.Size(943, 173);
+      this.panel1.TabIndex = 2;
+      // 
+      // panel2
+      // 
+      this.panel2.AutoScroll = true;
+      this.panel2.Controls.Add(this.lblPreviewColumnsVariance);
+      this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.panel2.Location = new System.Drawing.Point(4, 4);
+      this.panel2.Name = "panel2";
+      this.panel2.Size = new System.Drawing.Size(943, 173);
+      this.panel2.TabIndex = 3;
+      // 
       // ManipulationView
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
       this.Controls.Add(this.btnApply);
@@ -545,6 +628,7 @@
       this.Controls.Add(this.grpBoxData);
       this.Controls.Add(this.lstMethods);
+      this.Margin = new System.Windows.Forms.Padding(4, 4, 4, 4);
       this.Name = "ManipulationView";
-      this.Size = new System.Drawing.Size(739, 529);
+      this.Size = new System.Drawing.Size(985, 651);
       this.grpBoxData.ResumeLayout(false);
       this.tabsData.ResumeLayout(false);
@@ -566,5 +650,4 @@
       this.tabPreviewInactive.PerformLayout();
       this.tabPreviewDeleteColumnsInfo.ResumeLayout(false);
-      this.tabPreviewDeleteColumnsInfo.PerformLayout();
       this.tabPreviewDeleteColumnsVariance.ResumeLayout(false);
       this.tabPreviewDeleteColumnsVariance.PerformLayout();
@@ -575,4 +658,8 @@
       this.tabPreviewShuffle.ResumeLayout(false);
       this.tabPreviewShuffle.PerformLayout();
+      this.panel1.ResumeLayout(false);
+      this.panel1.PerformLayout();
+      this.panel2.ResumeLayout(false);
+      this.panel2.PerformLayout();
       this.ResumeLayout(false);
 
@@ -619,8 +706,11 @@
     private System.Windows.Forms.Label label10;
     private System.Windows.Forms.TabPage tabDataShuffle;
-    private System.Windows.Forms.Label label6;
+    private System.Windows.Forms.Label lblShuffleProperties;
     private System.Windows.Forms.ComboBox cmbVariableNames;
     private System.Windows.Forms.Label label8;
     private System.Windows.Forms.Label lblPreviewInActive;
+    private System.Windows.Forms.CheckBox shuffleSeparatelyCheckbox;
+    private System.Windows.Forms.Panel panel1;
+    private System.Windows.Forms.Panel panel2;
   }
 }
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ManipulationView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -23,4 +23,7 @@
 using System.Collections.Generic;
 using System.Drawing;
+using System.Globalization;
+using System.Linq;
+using System.Text;
 using System.Windows.Forms;
 using HeuristicLab.Core.Views;
@@ -51,5 +54,5 @@
         ()=>validateDeleteRowsInfo(),
         ()=>validateReplaceWith(),
-        ()=>{btnApply.Enabled = true; lblPreviewShuffle.Text = "Data will be shuffled randomly - preview not possible";} //shuffle
+        ()=>validateShuffle()
       };
 
@@ -59,7 +62,6 @@
         ()=>Content.ManipulationLogic.DeleteRowsWithMissingValuesGreater(getRowsColumnsInfo()),
         ()=>replaceMissingValues(),
-        ()=>Content.ManipulationLogic.ShuffleWithRanges()
+        ()=>Content.ManipulationLogic.Shuffle(shuffleSeparatelyCheckbox.Checked)
       };
-
     }
 
@@ -150,9 +152,22 @@
       validateDoubleTextBox(txtDeleteColumnsInfo.Text);
       if (btnApply.Enabled) {
-        int count = Content.ManipulationLogic.ColumnsWithMissingValuesGreater(getDeleteColumnsInfo()).Count;
-        int rowCount = Content.FilterLogic.PreprocessingData.Rows;
-        lblPreviewColumnsInfo.Text = count + " column" + (count > 1 || count == 0 ? "s" : "") + " of " + rowCount + " (" + string.Format("{0:F2}%", 100d / rowCount * count) + ") were detected with more than " + txtDeleteColumnsInfo.Text + "% missing values.";
+        var filteredColumns = Content.ManipulationLogic.ColumnsWithMissingValuesGreater(getDeleteColumnsInfo());
+        int count = filteredColumns.Count;
+        int columnCount = Content.FilterLogic.PreprocessingData.Columns;
+        lblPreviewColumnsInfo.Text = count + " column" + (count > 1 || count == 0 ? "s" : "") + " of " + columnCount + " (" + string.Format("{0:F2}%", 100d / columnCount * count) + ") were detected with more than " + txtDeleteColumnsInfo.Text + "% missing values.";
         if (count > 0) {
-          lblPreviewColumnsInfo.Text += Environment.NewLine + Environment.NewLine + "Please press the button \"Apply Manipulation\" if you wish to delete those columns.";
+          StringBuilder sb = new StringBuilder();
+          sb.Append(Environment.NewLine);
+          sb.Append("Columns: ");
+          sb.Append(Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
+          for (int i = 1; i < filteredColumns.Count; i++) {
+            string columnName = Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(i));
+            sb.Append(", ");
+            sb.Append(columnName);
+          }
+          sb.Append(Environment.NewLine);
+          sb.Append("Please press the button \"Apply Manipulation\" if you wish to delete those columns.");
+
+          lblPreviewColumnsInfo.Text += sb.ToString();
         } else {
           btnApply.Enabled = false;
@@ -166,9 +181,22 @@
       validateDoubleTextBox(txtDeleteColumnsVariance.Text);
       if (btnApply.Enabled) {
-        int count = Content.ManipulationLogic.ColumnsWithVarianceSmaller(getDeleteColumnsVariance()).Count;
-        int rowCount = Content.FilterLogic.PreprocessingData.Rows;
-        lblPreviewColumnsVariance.Text = count + " column" + (count > 1 || count == 0 ? "s" : "") + " of " + rowCount + " (" + string.Format("{0:F2}%", 100d / rowCount * count) + ") were detected with a variance smaller than " + txtDeleteColumnsVariance.Text + ".";
+        var filteredColumns = Content.ManipulationLogic.ColumnsWithVarianceSmaller(getDeleteColumnsVariance());
+        int count = filteredColumns.Count;
+        int columnCount = Content.FilterLogic.PreprocessingData.Columns;
+        lblPreviewColumnsVariance.Text = count + " column" + (count > 1 || count == 0 ? "s" : "") + " of " + columnCount + " (" + string.Format("{0:F2}%", 100d / columnCount * count) + ") were detected with a variance smaller than " + txtDeleteColumnsVariance.Text + ".";
         if (count > 0) {
-          lblPreviewColumnsVariance.Text += Environment.NewLine + Environment.NewLine + "Please press the button \"Apply Manipulation\" if you wish to delete those columns.";
+          StringBuilder sb = new StringBuilder();
+          sb.Append(Environment.NewLine);
+          sb.Append("Columns: ");
+          sb.Append(Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(0)));
+          for (int i = 1; i < filteredColumns.Count; i++) {
+            string columnName = Content.SearchLogic.VariableNames.ElementAt(filteredColumns.ElementAt(i));
+            sb.Append(", ");
+            sb.Append(columnName);
+          }
+          sb.Append(Environment.NewLine);
+          sb.Append("Please press the button \"Apply Manipulation\" if you wish to delete those columns.");
+
+          lblPreviewColumnsVariance.Text += sb.ToString();
         } else {
           btnApply.Enabled = false;
@@ -228,4 +256,12 @@
     }
 
+    private void validateShuffle() {
+      btnApply.Enabled = true;
+      lblShuffleProperties.Enabled = false;
+      lblShuffleProperties.Visible = false;
+      shuffleSeparatelyCheckbox.Enabled = true;
+      shuffleSeparatelyCheckbox.Visible = true;
+    }
+
     public new ManipulationContent Content {
       get { return (ManipulationContent)base.Content; }
@@ -272,5 +308,5 @@
       if (!string.IsNullOrEmpty(text)) {
         double percent;
-        if (Double.TryParse(text, out percent)) {
+        if (Double.TryParse(text, NumberStyles.Number ^ NumberStyles.AllowThousands, CultureInfo.CurrentCulture, out percent)) {
           btnApply.Enabled = true;
         }
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Plugin.cs.frame
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Plugin.cs.frame	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Plugin.cs.frame	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -26,5 +26,5 @@
   /// Plugin class for HeuristicLab.Data plugin.
   /// </summary>
-  [Plugin("HeuristicLab.DataPreprocessing.Views", "3.4.0.$WCREV$")]
+  [Plugin("HeuristicLab.DataPreprocessing.Views", "3.4.1.$WCREV$")]
   [PluginFile("HeuristicLab.DataPreprocessing.Views-3.4.dll", PluginFileType.Assembly)]
   [PluginDependency("HeuristicLab.Analysis", "3.3")]
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingChartView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -22,4 +22,5 @@
 using System;
 using System.Collections.Generic;
+using System.Linq;
 using System.Windows.Forms;
 using HeuristicLab.Analysis;
@@ -49,4 +50,5 @@
 
     public IEnumerable<double> Classification { get; set; }
+    public bool IsDetailedChartViewEnabled { get; set; }
 
     public PreprocessingChartView() {
@@ -59,4 +61,5 @@
     //Add or remove data row
     private void CheckedItemsChanged(object sender, CollectionItemsChangedEventArgs<IndexedItem<StringValue>> checkedItems) {
+
       foreach (IndexedItem<StringValue> item in checkedItems.Items) {
         string variableName = item.Value.Value;
@@ -121,4 +124,7 @@
       if (Content.VariableItemList == null) {
         Content.VariableItemList = Content.CreateVariableItemList();
+      } else {
+        var checkedNames = Content.VariableItemList.CheckedItems.Select(x => x.Value.Value);
+        Content.VariableItemList = Content.CreateVariableItemList(checkedNames);
       }
       checkedItemList.Content = Content.VariableItemList;
@@ -135,10 +141,12 @@
         DataRow row = GetDataRow(variableName);
 
-        //add row to data table 
-        dataTable.Rows.Add(row);
-
-        //add row to data table per variable
-        d.Rows.Add(row);
-        dataTablePerVariable.Add(d);
+        if (row != null) {
+          //add row to data table
+          dataTable.Rows.Add(row);
+
+          //add row to data table per variable
+          d.Rows.Add(row);
+          dataTablePerVariable.Add(d);
+        }
       }
 
@@ -152,5 +160,5 @@
       dataTable.SelectedRows.Clear();
       foreach (var selectedRow in selectedDataRows) {
-        if(VariableIsDisplayed(selectedRow.Name))
+        if (VariableIsDisplayed(selectedRow.Name))
           dataTable.SelectedRows.Add(selectedRow);
       }
@@ -354,4 +362,5 @@
       PreprocessingDataTableView dataView = new PreprocessingDataTableView();
       dataView.Classification = Classification;
+      dataView.IsDetailedChartViewEnabled = IsDetailedChartViewEnabled;
 
       if (dataTable == null) {
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.Designer.cs	(revision 12694)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingCheckedItemListView.cs	(revision 12694)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingDataTableView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -47,4 +47,5 @@
 
     public IEnumerable<double> Classification { get; set; }
+    public bool IsDetailedChartViewEnabled { get; set; }
 
     public PreprocessingDataTableView() {
@@ -145,9 +146,14 @@
         RegisterDataRowEvents(row);
         var series = new Series(row.Name);
-        if (row.VisualProperties.DisplayName.Trim() != String.Empty) series.LegendText = row.VisualProperties.DisplayName;
+        if (row.VisualProperties.DisplayName.Trim() != String.Empty)
+          series.LegendText = row.VisualProperties.DisplayName;
         else series.LegendText = row.Name;
+
         ConfigureSeries(series, row);
         FillSeriesWithRowValues(series, row);
 
+        if (IsDetailedChartViewEnabled) {
+          series.LegendText += " Values: " + row.Values.Count;
+        }
         if (Classification == null)
           chart.Series.Add(series);
@@ -661,5 +667,7 @@
 
         chart.Titles.Add(row.Name);
-
+        int featureOverallValueCount = 0;
+        if (IsDetailedChartViewEnabled)
+          featureOverallValueCount = row.Values.Count(x => !IsInvalidValue(x));
         foreach (KeyValuePair<double, List<double>> entry in valuesPerClass) {
           var s = new Series(row.Name + entry.Key);
@@ -669,5 +677,11 @@
 
           s.LegendText = entry.Key.ToString();
-
+          if (IsDetailedChartViewEnabled) {
+            int featureValueCount = entry.Value.Count(x => !IsInvalidValue(x));
+            s.LegendText += " Values: ";
+            s.LegendText += (featureOverallValueCount > 0) ?
+              string.Format("{0} ({1:F2}%)", featureValueCount, (featureValueCount / (double)featureOverallValueCount) * 100)
+            : "0";
+          }
           chart.Series.Add(s);
         }
@@ -752,9 +766,12 @@
                               ? "Y"
                               : Content.VisualProperties.YAxisTitle;
-        series.Points.Add(new DataPoint(d - intervalCenter, sum) {
-          ToolTip =
-            xAxisTitle + ": [" + (d - intervalWidth) + "-" + d + ")" + Environment.NewLine +
-            yAxisTitle + ": " + sum
-        });
+        DataPoint newDataPoint = new DataPoint(d - intervalCenter, sum);
+        newDataPoint.ToolTip =
+          xAxisTitle + ": [" + (d - intervalWidth) + "-" + d + ")" + Environment.NewLine +
+          yAxisTitle + ": " + sum;
+        int overallValueCount = row.Values.Count();
+        if (overallValueCount > 0)
+          newDataPoint.ToolTip += string.Format(" ({0:F2}%)", (sum / overallValueCount) * 100);
+        series.Points.Add(newDataPoint);
       }
     }
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingFeatureCorrelationView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingFeatureCorrelationView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingFeatureCorrelationView.Designer.cs	(revision 12694)
@@ -2,5 +2,5 @@
 
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingFeatureCorrelationView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingFeatureCorrelationView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingFeatureCorrelationView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingScatterPlotView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingScatterPlotView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingScatterPlotView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingScatterPlotView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingScatterPlotView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/PreprocessingScatterPlotView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 #region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Properties/AssemblyInfo.cs.frame
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Properties/AssemblyInfo.cs.frame	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Properties/AssemblyInfo.cs.frame	(revision 12694)
@@ -1,3 +1,24 @@
-﻿using System.Reflection;
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2015 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.Reflection;
 using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
@@ -9,7 +30,7 @@
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
-[assembly: AssemblyCompany("FH-Hagenberg")]
-[assembly: AssemblyProduct("HeuristicLab.DataPreprocessing.Views")]
-[assembly: AssemblyCopyright("Copyright © FH-Hagenberg 2014")]
+[assembly: AssemblyCompany("HEAL")]
+[assembly: AssemblyProduct("HeuristicLab")]
+[assembly: AssemblyCopyright("(c) 2002-2015 HEAL")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]
@@ -34,3 +55,3 @@
 // [assembly: AssemblyVersion("1.0.*")]
 [assembly: AssemblyVersion("3.4.0.0")]
-[assembly: AssemblyFileVersion("3.4.0.$WCREV$")]
+[assembly: AssemblyFileVersion("3.4.1.$WCREV$")]
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/StatisticsView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
@@ -166,5 +166,5 @@
         "", //standard deviation
         "", //variance
-        logic.GetMostCommonValue<string>(columnIndex).ToString(),
+        logic.GetMostCommonValue<string>(columnIndex) ?? "",
         logic.GetDifferentValuesCount<string>(columnIndex).ToString()
       };
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/TransformationView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/TransformationView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/TransformationView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/TransformationView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/TransformationView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/TransformationView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Utils/FindPreprocessingItemsIterator.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Utils/FindPreprocessingItemsIterator.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Utils/FindPreprocessingItemsIterator.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Utils/IFindPreprocessingItemsIterator.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Utils/IFindPreprocessingItemsIterator.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/Utils/IFindPreprocessingItemsIterator.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ViewShortcutListView.Designer.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ViewShortcutListView.Designer.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ViewShortcutListView.Designer.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
Index: branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ViewShortcutListView.cs
===================================================================
--- branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ViewShortcutListView.cs	(revision 11303)
+++ branches/HeuristicLab.Problems.Orienteering/HeuristicLab.DataPreprocessing.Views/3.4/ViewShortcutListView.cs	(revision 12694)
@@ -1,5 +1,5 @@
 ﻿#region License Information
 /* HeuristicLab
- * Copyright (C) 2002-2014 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ * Copyright (C) 2002-2015 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
  *
  * This file is part of HeuristicLab.
