Index: branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ManipulationView.cs
===================================================================
--- branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ManipulationView.cs	(revision 10712)
+++ branches/DataPreprocessing/HeuristicLab.DataPreprocessing.Views/3.3/ManipulationView.cs	(revision 10737)
@@ -45,15 +45,83 @@
 
       validators = new Action[] { 
-        ()=>validateDoubleTextBox(txtDeleteColumnsInfo.Text),
-        ()=>validateDoubleTextBox(txtDeleteColumnsVariance.Text),
-        ()=>validateDoubleTextBox(txtDeleteRowsInfo.Text),
-        ()=>{btnApply.Enabled = true;} //shuffle
+        ()=>validateDeleteColumnsInfo(),
+        ()=>validateDeleteColumnsVariance(),
+        ()=>validateDeleteRowsInfo(),
+        ()=>{btnApply.Enabled = true; lblPreviewShuffle.Text = "Data will be shuffled randomly - preview not possible";} //shuffle
       };
+
       manipulations = new Action[] { 
-        ()=>{},
-        ()=>{},
-        ()=>{},
+        ()=>Content.ManipulationLogic.DeleteColumnsWithMissingValuesGreater(getDeleteColumnsInfo()),
+        ()=>Content.ManipulationLogic.DeleteColumnsWithVarianceSmaller(getDeleteColumnsVariance()),
+        ()=>Content.ManipulationLogic.DeleteRowsWithMissingValuesGreater(getRowsColumnsInfo()),
         ()=>Content.ManipulationLogic.ShuffleWithRanges()
       };
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.ManipulationLogic.Changed += Content_Changed;
+    }
+
+    protected override void DeregisterContentEvents() {
+      base.DeregisterContentEvents();
+      Content.ManipulationLogic.Changed -= Content_Changed;
+    }
+
+    private double getDeleteColumnsInfo() {
+      return double.Parse(txtDeleteColumnsInfo.Text);
+    }
+
+    private double getDeleteColumnsVariance() {
+      return double.Parse(txtDeleteColumnsVariance.Text);
+    }
+
+    private double getRowsColumnsInfo() {
+      return double.Parse(txtDeleteRowsInfo.Text);
+    }
+
+    private void validateDeleteColumnsInfo() {
+      validateDoubleTextBox(txtDeleteColumnsInfo.Text);
+      if (btnApply.Enabled) {
+        int count = Content.ManipulationLogic.ColumnsWithMissingValuesGreater(getDeleteColumnsInfo()).Count;
+        lblPreviewColumnsInfo.Text = count + " column" + (count > 1 || count == 0 ? "s" : "") + " 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.";
+        } else {
+          btnApply.Enabled = false;
+        }
+      } else {
+        lblPreviewColumnsInfo.Text = "Preview not possible yet - please input the limit above.";
+      }
+    }
+
+    private void validateDeleteColumnsVariance() {
+      validateDoubleTextBox(txtDeleteColumnsVariance.Text);
+      if (btnApply.Enabled) {
+        int count = Content.ManipulationLogic.ColumnsWithVarianceSmaller(getDeleteColumnsVariance()).Count;
+        lblPreviewColumnsVariance.Text = count + " column" + (count > 1 || count == 0 ? "s" : "") + " 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.";
+        } else {
+          btnApply.Enabled = false;
+        }
+      } else {
+        lblPreviewColumnsVariance.Text = "Preview not possible yet - please input the limit for the variance above.";
+      }
+    }
+
+    private void validateDeleteRowsInfo() {
+      validateDoubleTextBox(txtDeleteRowsInfo.Text);
+      if (btnApply.Enabled) {
+        int count = Content.ManipulationLogic.RowsWithMissingValuesGreater(getRowsColumnsInfo()).Count;
+        lblPreviewRowsInfo.Text = count + " row" + (count > 1 || count == 0 ? "s" : "") + " were detected with more than " + txtDeleteRowsInfo.Text + "% missing values.";
+        if (count > 0) {
+          lblPreviewRowsInfo.Text += Environment.NewLine + Environment.NewLine + "Please press the button \"Apply Manipulation\" if you wish to delete those rows.";
+        } else {
+          btnApply.Enabled = false;
+        }
+      } else {
+        lblPreviewRowsInfo.Text = "Preview not possible yet - please input the limit above.";
+      }
     }
 
@@ -70,5 +138,5 @@
       btnApply.Enabled = false;
 
-      //in order that button will be enabled if text is already valid
+      //in order that button is enabled if necessary input was already entered
       if (index >= 0) {
         validators[index]();
@@ -78,4 +146,19 @@
     private void btnApply_Click(object sender, System.EventArgs e) {
       manipulations[lstMethods.SelectedIndex]();
+      switch (lstMethods.SelectedIndex) {
+        case 0:
+          lblPreviewColumnsInfo.Text = "columns successfully deleted.";
+          break;
+        case 1:
+          lblPreviewColumnsVariance.Text = "columns successfully deleted.";
+          break;
+        case 2:
+          lblPreviewRowsInfo.Text = "rows successfully deleted.";
+          break;
+        case 3:
+          lblPreviewShuffle.Text = "dataset shuffled successfully.";
+          btnApply.Enabled = false;
+          break;
+      }
     }
 
@@ -91,13 +174,27 @@
 
     private void txtDeleteColumnsInfo_TextChanged(object sender, EventArgs e) {
-      validateDoubleTextBox(txtDeleteColumnsInfo.Text);
+      validateDeleteColumnsInfo();
     }
 
     private void txtDeleteColumnsVariance_TextChanged(object sender, EventArgs e) {
-      validateDoubleTextBox(txtDeleteColumnsVariance.Text);
+      validateDeleteColumnsVariance();
     }
 
     private void txtDeleteRowsInfo_TextChanged(object sender, EventArgs e) {
-      validateDoubleTextBox(txtDeleteRowsInfo.Text);
+      validateDeleteRowsInfo();
+    }
+
+    void Content_Changed(object sender, DataPreprocessingChangedEventArgs e) {
+      switch(lstMethods.SelectedIndex){
+        case 0:
+          validateDeleteColumnsInfo();
+          break;
+        case 1:
+          validateDeleteColumnsVariance();
+          break;
+        case 2:
+          validateDeleteRowsInfo();
+          break;
+      }
     }
   }
