Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10379)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/HeuristicLab.DataPreprocessing-3.3.csproj	(revision 10380)
@@ -78,6 +78,6 @@
   <ItemGroup>
     <Compile Include="Implementations\DataGridLogic.cs" />
+    <Compile Include="Implementations\ManipulationLogic.cs" />
     <Compile Include="Interfaces\IDataGridLogic.cs" />
-    <Compile Include="Interfaces\IManipulationLogic.cs" />
     <Compile Include="Implementations\FilterContent.cs" />
     <Compile Include="Implementations\DataPreprocessorStarter.cs" />
@@ -93,4 +93,5 @@
     <Compile Include="Interfaces\IHistogramLogic.cs" />
     <Compile Include="Interfaces\ILineChartLogic.cs" />
+    <Compile Include="Interfaces\IManipulationLogic.cs" />
     <Compile Include="Interfaces\ITransformationLogic.cs" />
     <Compile Include="PreprocessingCloner.cs" />
@@ -135,5 +136,4 @@
     <Compile Include="Implementations\PreprocessingContext.cs" />
     <Compile Include="Implementations\PreprocessingData.cs" />
-    <Compile Include="Implementations\ManipulationLogic.cs" />
     <Compile Include="Implementations\SearchLogic.cs" />
     <Compile Include="Implementations\StatisticsLogic.cs" />
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.Designer.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.Designer.cs	(revision 10379)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.Designer.cs	(revision 10380)
@@ -24,6 +24,15 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       this.btnApplySort = new System.Windows.Forms.Button();
+      this.contextMenuCell = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.replaceValueToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.averageToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.medianToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.randomToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.mostCommonToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.interpolationToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
+      this.contextMenuCell.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -58,4 +67,58 @@
       this.btnApplySort.Click += new System.EventHandler(this.btnApplySort_Click);
       // 
+      // contextMenuCell
+      // 
+      this.contextMenuCell.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.replaceValueToolStripMenuItem});
+      this.contextMenuCell.Name = "contextMenuCell";
+      this.contextMenuCell.Size = new System.Drawing.Size(153, 48);
+      // 
+      // replaceValueToolStripMenuItem
+      // 
+      this.replaceValueToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.averageToolStripMenuItem,
+            this.medianToolStripMenuItem,
+            this.randomToolStripMenuItem,
+            this.mostCommonToolStripMenuItem,
+            this.interpolationToolStripMenuItem});
+      this.replaceValueToolStripMenuItem.Name = "replaceValueToolStripMenuItem";
+      this.replaceValueToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
+      this.replaceValueToolStripMenuItem.Text = "Replace Value";
+      // 
+      // averageToolStripMenuItem
+      // 
+      this.averageToolStripMenuItem.Name = "averageToolStripMenuItem";
+      this.averageToolStripMenuItem.Size = new System.Drawing.Size(155, 22);
+      this.averageToolStripMenuItem.Text = "Average";
+      this.averageToolStripMenuItem.Click += new System.EventHandler(this.ReplaceWithAverage_Click);
+      // 
+      // medianToolStripMenuItem
+      // 
+      this.medianToolStripMenuItem.Name = "medianToolStripMenuItem";
+      this.medianToolStripMenuItem.Size = new System.Drawing.Size(155, 22);
+      this.medianToolStripMenuItem.Text = "Median";
+      this.medianToolStripMenuItem.Click += new System.EventHandler(this.ReplaceWithMedian_Click);
+      // 
+      // randomToolStripMenuItem
+      // 
+      this.randomToolStripMenuItem.Name = "randomToolStripMenuItem";
+      this.randomToolStripMenuItem.Size = new System.Drawing.Size(155, 22);
+      this.randomToolStripMenuItem.Text = "Random";
+      this.randomToolStripMenuItem.Click += new System.EventHandler(this.ReplaceWithRandom_Click);
+      // 
+      // mostCommonToolStripMenuItem
+      // 
+      this.mostCommonToolStripMenuItem.Name = "mostCommonToolStripMenuItem";
+      this.mostCommonToolStripMenuItem.Size = new System.Drawing.Size(155, 22);
+      this.mostCommonToolStripMenuItem.Text = "Most Common";
+      this.mostCommonToolStripMenuItem.Click += new System.EventHandler(this.ReplaceWithMostCommon_Click);
+      // 
+      // interpolationToolStripMenuItem
+      // 
+      this.interpolationToolStripMenuItem.Name = "interpolationToolStripMenuItem";
+      this.interpolationToolStripMenuItem.Size = new System.Drawing.Size(155, 22);
+      this.interpolationToolStripMenuItem.Text = "Interpolation";
+      this.interpolationToolStripMenuItem.Click += new System.EventHandler(this.ReplaceWithInterpolation_Click);
+      // 
       // DataGridContentView
       // 
@@ -72,4 +135,5 @@
       this.Controls.SetChildIndex(this.btnApplySort, 0);
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).EndInit();
+      this.contextMenuCell.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -80,4 +144,11 @@
 
     private System.Windows.Forms.Button btnApplySort;
+    private System.Windows.Forms.ContextMenuStrip contextMenuCell;
+    private System.Windows.Forms.ToolStripMenuItem replaceValueToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem averageToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem medianToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem randomToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem mostCommonToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem interpolationToolStripMenuItem;
   }
 }
Index: /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.cs
===================================================================
--- /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.cs	(revision 10379)
+++ /branches/DataPreprocessing/HeuristicLab.DataPreprocessing/3.3/Views/DataGridContentView.cs	(revision 10380)
@@ -8,4 +8,5 @@
 using System.Collections.Generic;
 using System.Linq;
+using System;
 
 namespace HeuristicLab.DataPreprocessing {
@@ -13,4 +14,7 @@
   [Content(typeof(IDataGridContent), true)]
   public partial class DataGridContentView : StringConvertibleMatrixView {
+
+    private int lastClickedRow;
+    private int lastClickedColumn;
 
     public new IDataGridContent Content {
@@ -21,4 +25,6 @@
     public DataGridContentView() {
       InitializeComponent();
+      dataGridView.CellMouseClick += dataGridView_CellMouseClick;
+      contextMenuCell.Items.Add(ShowHideColumns);
     }
 
@@ -49,4 +55,18 @@
     }
 
+    private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
+      if (Content == null) return;
+      if (e.Button == System.Windows.Forms.MouseButtons.Right) {
+        if (e.ColumnIndex == -1 || e.RowIndex == -1) {
+          contextMenu.Show(MousePosition);
+        } else {
+          interpolationToolStripMenuItem.Enabled = !(e.RowIndex == 0 || e.RowIndex == Content.Rows);
+          contextMenuCell.Show(MousePosition);
+          lastClickedColumn = e.ColumnIndex;
+          lastClickedRow = e.RowIndex;
+        }
+      }
+    }
+
     protected override int[] Sort(IEnumerable<KeyValuePair<int, SortOrder>> sortedColumns) {
       btnApplySort.Enabled = sortedColumns.Any();
@@ -58,4 +78,25 @@
       base.ClearSorting();
     }
+
+    private void ReplaceWithAverage_Click(object sender, EventArgs e) {
+      var asdf = new List<int>() { lastClickedRow };
+      Content.PreprocessingDataManipulation.ReplaceIndicesByAverageValue(lastClickedColumn, new List<int>() { lastClickedRow });
+    }
+
+    private void ReplaceWithMedian_Click(object sender, EventArgs e) {
+      Content.PreprocessingDataManipulation.ReplaceIndicesByMedianValue(lastClickedColumn, new List<int>() { lastClickedRow });
+    }
+
+    private void ReplaceWithRandom_Click(object sender, EventArgs e) {
+      Content.PreprocessingDataManipulation.ReplaceIndicesByRandomValue(lastClickedColumn, new List<int>() { lastClickedRow });
+    }
+
+    private void ReplaceWithMostCommon_Click(object sender, EventArgs e) {
+      Content.PreprocessingDataManipulation.ReplaceIndicesByMostCommonValue(lastClickedColumn, new List<int>() { lastClickedRow });
+    }
+
+    private void ReplaceWithInterpolation_Click(object sender, EventArgs e) {
+      Content.PreprocessingDataManipulation.ReplaceIndicesByLinearInterpolationOfNeighbours(lastClickedColumn, new List<int>() { lastClickedRow });
+    }
   }
 }
