Index: stable/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs
===================================================================
--- stable/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 12718)
+++ stable/HeuristicLab.DataPreprocessing.Views/3.4/DataGridContentView.cs	(revision 13289)
@@ -59,4 +59,5 @@
       InitializeComponent();
       dataGridView.CellMouseClick += dataGridView_CellMouseClick;
+      dataGridView.RowHeaderMouseClick += dataGridView_RowHeaderMouseClick;
       dataGridView.KeyDown += dataGridView_KeyDown;
       dataGridView.MouseUp += dataGridView_MouseUp;
@@ -142,8 +143,27 @@
 
 
-    //protected override void PasteValuesToDataGridView() {
-    //  base.PasteValuesToDataGridView();
-    //  dataGridView.Refresh();
-    //}
+    protected override void PasteValuesToDataGridView() {
+      string[,] values = SplitClipboardString(Clipboard.GetText());
+      int rowIndex = 0;
+      int columnIndex = 0;
+      if (dataGridView.CurrentCell != null) {
+        rowIndex = dataGridView.CurrentCell.RowIndex;
+        columnIndex = dataGridView.CurrentCell.ColumnIndex;
+      }
+      if (Content.Rows < values.GetLength(1) + rowIndex) Content.Rows = values.GetLength(1) + rowIndex;
+      if (Content.Columns < values.GetLength(0) + columnIndex) Content.Columns = values.GetLength(0) + columnIndex;
+
+      ReplaceTransaction(() => {
+        Content.PreProcessingData.InTransaction(() => {
+          for (int row = 0; row < values.GetLength(1); row++) {
+            for (int col = 0; col < values.GetLength(0); col++) {
+              Content.SetValue(values[col, row], row + rowIndex, col + columnIndex);
+            }
+          }
+        });
+      });
+
+      ClearSorting();
+    }
 
     protected override void SetEnabledStateOfControls() {
@@ -165,5 +185,5 @@
     protected override void dataGridView_ColumnHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
       if (Content != null) {
-        if (e.Button == System.Windows.Forms.MouseButtons.Left) {
+        if (e.Button == MouseButtons.Left) {
           dataGridView.Focus();
           dataGridView.ClearSelection();
@@ -174,9 +194,20 @@
             dataGridView[e.ColumnIndex, i].Selected = true;
           }
-        } else if (Content.SortableView) {
+        } else if (e.Button == MouseButtons.Middle) {
+          int newIndex = e.ColumnIndex >= 0 ? e.ColumnIndex : 0;
+          Content.PreProcessingData.InsertColumn<double>(newIndex.ToString(), newIndex);
+        } else if (e.Button == MouseButtons.Right && Content.SortableView) {
           SortColumn(e.ColumnIndex);
         }
       }
       searchIterator = null;
+    }
+    private void dataGridView_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
+      if (Content != null) {
+        if (e.Button == MouseButtons.Middle) {
+          int newIndex = e.RowIndex >= 0 ? e.RowIndex : 0;
+          Content.PreProcessingData.InsertRow(newIndex);
+        }
+      }
     }
 
@@ -450,5 +481,5 @@
     private void dataGridView_CellMouseClick(object sender, DataGridViewCellMouseEventArgs e) {
       if (Content == null) return;
-      if (e.Button == System.Windows.Forms.MouseButtons.Right && !(e.ColumnIndex != -1 && e.RowIndex == -1)) {
+      if (e.Button == MouseButtons.Right && !(e.ColumnIndex != -1 && e.RowIndex == -1)) {
         if (e.ColumnIndex == -1 || e.RowIndex == -1) {
           replaceValueOverColumnToolStripMenuItem.Visible = false;
@@ -612,4 +643,19 @@
     #endregion
 
+    private void addRowButton_Click(object sender, EventArgs e) {
+      Content.PreProcessingData.InsertRow(Content.Rows);
+    }
+
+    private void addColumnButton_Click(object sender, EventArgs e) {
+      Content.PreProcessingData.InsertColumn<double>(Content.Columns.ToString(), Content.Columns);
+    }
+
+    private void renameColumnsButton_Click(object sender, EventArgs e) {
+      var renameDialog = new RenameColumnsDialog(Content.ColumnNames);
+
+      if (renameDialog.ShowDialog(this) == DialogResult.OK) {
+        Content.PreProcessingData.RenameColumns(renameDialog.ColumnNames);
+      }
+    }
   }
 }
