Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/Views/OKBExperimentUploadView.Designer.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/Views/OKBExperimentUploadView.Designer.cs	(revision 7742)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/Views/OKBExperimentUploadView.Designer.cs	(revision 7839)
@@ -53,4 +53,5 @@
       // dataGridView
       // 
+      this.dataGridView.AllowDrop = true;
       this.dataGridView.AllowUserToAddRows = false;
       this.dataGridView.AllowUserToDeleteRows = false;
@@ -75,4 +76,6 @@
       this.dataGridView.TabIndex = 2;
       this.dataGridView.CellMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.dataGridView_CellMouseClick);
+      this.dataGridView.DragDrop += new System.Windows.Forms.DragEventHandler(this.dataGridView_DragDrop);
+      this.dataGridView.DragEnter += new System.Windows.Forms.DragEventHandler(this.dataGridView_DragEnter);
       // 
       // RunNameColumn
@@ -136,4 +139,5 @@
       // OKBExperimentUploadView
       // 
+      this.AllowDrop = true;
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
Index: branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/Views/OKBExperimentUploadView.cs
===================================================================
--- branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/Views/OKBExperimentUploadView.cs	(revision 7742)
+++ branches/OKB (trunk integration)/HeuristicLab.Clients.OKB/3.3/RunCreation/Views/OKBExperimentUploadView.cs	(revision 7839)
@@ -35,10 +35,9 @@
 namespace HeuristicLab.Clients.OKB.RunCreation {
   [View("OKBExperimentUpload View")]
-  [Content(typeof(Experiment), false)]
   [Content(typeof(RunCollection), false)]
   [Content(typeof(IOptimizer), false)]
   public partial class OKBExperimentUploadView : ItemView {
-    public new IItem Content {
-      get { return base.Content; }
+    public new IOptimizer Content {
+      get { return (IOptimizer)base.Content; }
       set {
         base.Content = value;
@@ -69,13 +68,18 @@
         ClearRuns();
       } else {
-        if (Content is Experiment) {
-          runs.AddRange((Content as Experiment).Runs);
-        } else if (Content is RunCollection) {
-          runs.AddRange((Content as RunCollection));
-        } else if (Content is IOptimizer) {
-          runs.AddRange((Content as IOptimizer).Runs);
-        }
-
+        AddRuns(Content);
         DisplayRuns();
+      }
+    }
+
+    private void AddRuns(IItem item) {
+      if (item is Experiment) {
+        runs.AddRange((item as Experiment).Runs);
+      } else if (item is RunCollection) {
+        runs.AddRange((item as RunCollection));
+      } else if (item is IOptimizer) {
+        runs.AddRange((item as IOptimizer).Runs);
+      } else if (item is IRun) {
+        runs.Add(item as IRun);
       }
     }
@@ -124,4 +128,5 @@
       cmbProblem.DisplayMember = "Name";
 
+      dataGridView.Rows.Clear();
       foreach (IRun run in runs) {
         int idx = dataGridView.Rows.Add(run.Name);
@@ -268,4 +273,25 @@
       selectedProblem = null;
     }
+
+    private void dataGridView_DragEnter(object sender, DragEventArgs e) {
+      e.Effect = DragDropEffects.None;
+      if (e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) is IRun
+        || e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) is IOptimizer) {
+        if ((e.KeyState & 32) == 32) e.Effect = DragDropEffects.Link;  // ALT key
+        else if ((e.KeyState & 4) == 4) e.Effect = DragDropEffects.Move;  // SHIFT key
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Copy)) e.Effect = DragDropEffects.Copy;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Move)) e.Effect = DragDropEffects.Move;
+        else if (e.AllowedEffect.HasFlag(DragDropEffects.Link)) e.Effect = DragDropEffects.Link;
+      }
+    }
+
+    private void dataGridView_DragDrop(object sender, DragEventArgs e) {
+      if (e.Effect != DragDropEffects.None) {
+        IItem optimizer = e.Data.GetData(HeuristicLab.Common.Constants.DragDropDataFormat) as IItem;
+        if (e.Effect.HasFlag(DragDropEffects.Copy)) optimizer = (IItem)optimizer.Clone();
+        AddRuns(optimizer);
+        DisplayRuns();
+      }
+    }
   }
 }
