Index: /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockForm.Designer.cs
===================================================================
--- /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockForm.Designer.cs	(revision 13882)
+++ /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockForm.Designer.cs	(revision 13883)
@@ -34,13 +34,21 @@
     /// </summary>
     private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
       System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DockForm));
       this.viewPanel = new System.Windows.Forms.Panel();
+      this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.closeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.closeAllToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.closeAllButThisToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
+      this.cloneToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.contextMenuStrip.SuspendLayout();
       this.SuspendLayout();
       // 
       // viewPanel
       // 
-      this.viewPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.viewPanel.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
+            | System.Windows.Forms.AnchorStyles.Left) 
+            | System.Windows.Forms.AnchorStyles.Right)));
       this.viewPanel.Location = new System.Drawing.Point(12, 12);
       this.viewPanel.Name = "viewPanel";
@@ -48,7 +56,51 @@
       this.viewPanel.TabIndex = 0;
       // 
+      // contextMenuStrip
+      // 
+      this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.closeToolStripMenuItem,
+            this.closeAllToolStripMenuItem,
+            this.closeAllButThisToolStripMenuItem,
+            this.toolStripSeparator1,
+            this.cloneToolStripMenuItem});
+      this.contextMenuStrip.Name = "contextMenuStrip";
+      this.contextMenuStrip.Size = new System.Drawing.Size(167, 120);
+      this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
+      // 
+      // closeToolStripMenuItem
+      // 
+      this.closeToolStripMenuItem.Name = "closeToolStripMenuItem";
+      this.closeToolStripMenuItem.Size = new System.Drawing.Size(166, 22);
+      this.closeToolStripMenuItem.Text = "Close";
+      this.closeToolStripMenuItem.Click += new System.EventHandler(this.closeToolStripMenuItem_Click);
+      // 
+      // closeAllToolStripMenuItem
+      // 
+      this.closeAllToolStripMenuItem.Name = "closeAllToolStripMenuItem";
+      this.closeAllToolStripMenuItem.Size = new System.Drawing.Size(166, 22);
+      this.closeAllToolStripMenuItem.Text = "Close All";
+      this.closeAllToolStripMenuItem.Click += new System.EventHandler(this.closeAllToolStripMenuItem_Click);
+      // 
+      // closeAllButThisToolStripMenuItem
+      // 
+      this.closeAllButThisToolStripMenuItem.Name = "closeAllButThisToolStripMenuItem";
+      this.closeAllButThisToolStripMenuItem.Size = new System.Drawing.Size(166, 22);
+      this.closeAllButThisToolStripMenuItem.Text = "Close All But This";
+      this.closeAllButThisToolStripMenuItem.Click += new System.EventHandler(this.closeAllButThisToolStripMenuItem_Click);
+      // 
+      // toolStripSeparator1
+      // 
+      this.toolStripSeparator1.Name = "toolStripSeparator1";
+      this.toolStripSeparator1.Size = new System.Drawing.Size(163, 6);
+      // 
+      // cloneToolStripMenuItem
+      // 
+      this.cloneToolStripMenuItem.Name = "cloneToolStripMenuItem";
+      this.cloneToolStripMenuItem.Size = new System.Drawing.Size(166, 22);
+      this.cloneToolStripMenuItem.Text = "Create Copy";
+      this.cloneToolStripMenuItem.Click += new System.EventHandler(this.cloneToolStripMenuItem_Click);
+      // 
       // DockForm
       // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Inherit;
       this.ClientSize = new System.Drawing.Size(632, 446);
@@ -59,5 +111,8 @@
       this.ShowInTaskbar = false;
       this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+      this.TabPageContextMenuStrip = this.contextMenuStrip;
+      this.contextMenuStrip.ResumeLayout(false);
       this.ResumeLayout(false);
+
     }
 
@@ -65,4 +120,10 @@
 
     private System.Windows.Forms.Panel viewPanel;
+    private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
+    private System.Windows.Forms.ToolStripMenuItem closeToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem closeAllToolStripMenuItem;
+    private System.Windows.Forms.ToolStripMenuItem closeAllButThisToolStripMenuItem;
+    private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
+    private System.Windows.Forms.ToolStripMenuItem cloneToolStripMenuItem;
   }
 }
Index: /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockForm.cs
===================================================================
--- /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockForm.cs	(revision 13882)
+++ /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockForm.cs	(revision 13883)
@@ -21,5 +21,8 @@
 
 using System;
+using System.Collections.Generic;
+using System.Linq;
 using System.Windows.Forms;
+using HeuristicLab.Common;
 using WeifenLuo.WinFormsUI.Docking;
 
@@ -29,7 +32,9 @@
   /// </summary>
   internal partial class DockForm : DockContent {
-    public DockForm(IView view) {
+    public DockForm(IView view, bool allowContextMenu) {
       InitializeComponent();
       this.view = view;
+      this.allowContextMenu = allowContextMenu;
+
       if (view != null) {
         if (view is UserControl) {
@@ -87,4 +92,5 @@
       get { return this.view; }
     }
+    private readonly bool allowContextMenu;
 
     private void UpdateText() {
@@ -111,4 +117,52 @@
     }
     #endregion
+
+    #region Context Menu Events
+    private void contextMenuStrip_Opening(object sender, System.ComponentModel.CancelEventArgs e) {
+      if (!allowContextMenu) {
+        e.Cancel = true;
+        return;
+      }
+
+      var contentView = View as IContentView;
+      var content = contentView != null ? contentView.Content : null;
+
+      cloneToolStripMenuItem.Enabled = contentView != null && !contentView.Locked && content is IDeepCloneable;
+    }
+
+    private void closeToolStripMenuItem_Click(object sender, EventArgs e) {
+      Close();
+    }
+    private void closeAllToolStripMenuItem_Click(object sender, EventArgs e) {
+      foreach (var dockForm in CurrentDockForms) {
+        dockForm.Close();
+      }
+    }
+    private void closeAllButThisToolStripMenuItem_Click(object sender, EventArgs e) {
+      foreach (var dockForm in CurrentDockForms.Except(this.ToEnumerable())) {
+        dockForm.Close();
+      }
+    }
+    private IEnumerable<DockForm> CurrentDockForms {
+      get {
+        var dockForms = Pane.Contents.OfType<DockForm>().Where(c => c.Pane == Pane); // Pane.Contents contains DockForms that are not placed on that pane
+        return dockForms.ToList(); // .ToList() necessary because closing a DockForm removes it from the Content collection
+      }
+    }
+
+    private void cloneToolStripMenuItem_Click(object sender, EventArgs e) {
+      var contentView = View as IContentView;
+      if (contentView == null) return;
+
+      var cloneable = contentView.Content as IDeepCloneable;
+      if (cloneable == null) return;
+
+      var clone = (IContent)cloneable.Clone();
+
+      var viewHost = contentView as ViewHost;
+      var newView = viewHost != null ? viewHost.ViewType : contentView.GetType();
+      MainFormManager.MainForm.ShowContent(clone, newView);
+    }
+    #endregion
   }
 }
Index: /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockingMainForm.cs
===================================================================
--- /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockingMainForm.cs	(revision 13882)
+++ /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/DockingMainForm.cs	(revision 13883)
@@ -25,11 +25,16 @@
 namespace HeuristicLab.MainForm.WindowsForms {
   public partial class DockingMainForm : MainForm {
+
+    public bool AllowContexMenu { get; set; }
+
     public DockingMainForm()
       : base() {
       InitializeComponent();
+      AllowContexMenu = true;
     }
     public DockingMainForm(Type userInterfaceItemType)
       : base(userInterfaceItemType) {
       InitializeComponent();
+      AllowContexMenu = true;
     }
     public DockingMainForm(Type userInterfaceItemType, bool showContentInViewHost)
@@ -60,5 +65,5 @@
 
     protected override Form CreateForm(IView view) {
-      return new DockForm(view);
+      return new DockForm(view, AllowContexMenu);
     }
 
Index: /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs
===================================================================
--- /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs	(revision 13882)
+++ /stable/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs	(revision 13883)
@@ -214,5 +214,5 @@
     }
 
-    internal Form GetForm(IView view) {
+    protected internal Form GetForm(IView view) {
       if (views.ContainsKey(view))
         return views[view];
