Index: /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs
===================================================================
--- /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 10088)
+++ /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ItemCollectionView.cs	(revision 10089)
@@ -219,14 +219,23 @@
     #region ListView Events
     protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      removeButton.Enabled = (Content != null) && !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
+      removeButton.Enabled = Content != null && !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
       AdjustListViewColumnSizes();
-      if (showDetailsCheckBox.Checked) {
-        if (itemsListView.SelectedItems.Count == 1) {
-          T item = (T)itemsListView.SelectedItems[0].Tag;
-          detailsGroupBox.Enabled = true;
-          viewHost.Content = item;
+      if (itemsListView.SelectedItems.Count == 1) {
+        var item = (T)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        if (outermostViewHost != null && outermostViewHost.HotlinkingEnabled) {
+          var oldCrumbs = outermostViewHost.Breadcrumbs;
+          var newCrumbs = BuildBreadcrumbTrail();
+          mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+          outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
         } else {
-          viewHost.Content = null;
-          detailsGroupBox.Enabled = false;
+          if (showDetailsCheckBox.Checked) {
+            detailsGroupBox.Enabled = true;
+            viewHost.Content = item;
+          } else {
+            viewHost.Content = null;
+            detailsGroupBox.Enabled = false;
+          }
         }
       }
@@ -245,23 +254,13 @@
     protected virtual void itemsListView_DoubleClick(object sender, EventArgs e) {
       if (itemsListView.SelectedItems.Count == 1) {
-        var item = itemsListView.SelectedItems[0].Tag as T;
-        if (item != null) {
-          ViewHost outmostViewHost = null;
-          for (var control = Parent; control != null; control = control.Parent) {
-            var vh = control as ViewHost;
-            if (vh != null) outmostViewHost = vh;
-          }
-          if (outmostViewHost != null) {
-            var oldCrumbs = outmostViewHost.Breadcrumbs;
-            var newCrumbs = BuildBreadcrumbTrail();
-            outmostViewHost.Content = null;
-            var viewType = MainFormManager.GetDefaultViewType(item.GetType());
-            outmostViewHost.ViewType = viewType;
-            outmostViewHost.Content = item;
-            outmostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
-            outmostViewHost.ActiveView.ReadOnly = ReadOnly;
-            outmostViewHost.ActiveView.Locked = Locked;
-          }
-        }
+        var item = (T)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        var oldCrumbs = outermostViewHost.Breadcrumbs;
+        var newCrumbs = BuildBreadcrumbTrail();
+        mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+        outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+        outermostViewHost.ActiveView.ReadOnly = ReadOnly;
+        outermostViewHost.ActiveView.Locked = Locked;
       }
     }
Index: /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ItemListView.cs
===================================================================
--- /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 10088)
+++ /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ItemListView.cs	(revision 10089)
@@ -242,13 +242,23 @@
                              (Content != null) && !Content.IsReadOnly && !ReadOnly;
       AdjustListViewColumnSizes();
-
-      if (showDetailsCheckBox.Checked) {
-        if (itemsListView.SelectedItems.Count == 1) {
-          T item = (T)itemsListView.SelectedItems[0].Tag;
-          detailsGroupBox.Enabled = true;
-          viewHost.Content = item;
+      if (itemsListView.SelectedItems.Count == 1) {
+        var item = (T)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        if (outermostViewHost != null && outermostViewHost.HotlinkingEnabled) {
+          var oldCrumbs = outermostViewHost.Breadcrumbs;
+          var newCrumbs = BuildBreadcrumbTrail();
+          mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+          outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+          outermostViewHost.ActiveView.ReadOnly = ReadOnly;
+          outermostViewHost.ActiveView.Locked = Locked;
         } else {
-          viewHost.Content = null;
-          detailsGroupBox.Enabled = false;
+          if (showDetailsCheckBox.Checked) {
+            detailsGroupBox.Enabled = true;
+            viewHost.Content = item;
+          } else {
+            viewHost.Content = null;
+            detailsGroupBox.Enabled = false;
+          }
         }
       }
@@ -266,23 +276,13 @@
     protected virtual void itemsListView_DoubleClick(object sender, EventArgs e) {
       if (itemsListView.SelectedItems.Count == 1) {
-        var item = itemsListView.SelectedItems[0].Tag as T;
-        if (item != null) {
-          ViewHost outmostViewHost = null;
-          for (var control = Parent; control != null; control = control.Parent) {
-            var vh = control as ViewHost;
-            if (vh != null) outmostViewHost = vh;
-          }
-          if (outmostViewHost != null) {
-            var oldCrumbs = outmostViewHost.Breadcrumbs;
-            var newCrumbs = BuildBreadcrumbTrail();
-            outmostViewHost.Content = null;
-            var viewType = MainFormManager.GetDefaultViewType(item.GetType());
-            outmostViewHost.ViewType = viewType;
-            outmostViewHost.Content = item;
-            outmostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
-            outmostViewHost.ActiveView.ReadOnly = ReadOnly;
-            outmostViewHost.ActiveView.Locked = Locked;
-          }
-        }
+        var item = (T)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        var oldCrumbs = outermostViewHost.Breadcrumbs;
+        var newCrumbs = BuildBreadcrumbTrail();
+        mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+        outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+        outermostViewHost.ActiveView.ReadOnly = ReadOnly;
+        outermostViewHost.ActiveView.Locked = Locked;
       }
     }
Index: /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ParameterCollectionView.cs
===================================================================
--- /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ParameterCollectionView.cs	(revision 10088)
+++ /branches/Breadcrumbs/HeuristicLab.Core.Views/3.3/ParameterCollectionView.cs	(revision 10089)
@@ -147,29 +147,40 @@
       }
     }
-    protected override void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      base.itemsListView_SelectedIndexChanged(sender, e);
-      SetEnabledStateOfControls();
+    protected virtual void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
+      removeButton.Enabled = Content != null && !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
+      AdjustListViewColumnSizes();
+      if (itemsListView.SelectedItems.Count == 1) {
+        var item = (IParameter)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        if (outermostViewHost != null && outermostViewHost.HotlinkingEnabled) {
+          var oldCrumbs = outermostViewHost.Breadcrumbs;
+          var newCrumbs = BuildBreadcrumbTrail();
+          mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+          outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+          outermostViewHost.ActiveView.ReadOnly = ReadOnly || (item.Hidden && !AllowEditingOfHiddenParameters);
+          outermostViewHost.ActiveView.Locked = Locked;
+        } else {
+          if (showDetailsCheckBox.Checked) {
+            detailsGroupBox.Enabled = true;
+            viewHost.Content = item;
+          } else {
+            viewHost.Content = null;
+            detailsGroupBox.Enabled = false;
+          }
+        }
+      }
     }
     protected override void itemsListView_DoubleClick(object sender, EventArgs e) {
       if (itemsListView.SelectedItems.Count == 1) {
-        var item = itemsListView.SelectedItems[0].Tag as IParameter;
-        if (item != null) {
-          ViewHost outmostViewHost = null;
-          for (var control = Parent; control != null; control = control.Parent) {
-            var vh = control as ViewHost;
-            if (vh != null) outmostViewHost = vh;
-          }
-          if (outmostViewHost != null) {
-            var oldCrumbs = outmostViewHost.Breadcrumbs;
-            var newCrumbs = BuildBreadcrumbTrail();
-            outmostViewHost.Content = null;
-            var viewType = MainFormManager.GetDefaultViewType(item.GetType());
-            outmostViewHost.ViewType = viewType;
-            outmostViewHost.Content = item;
-            outmostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
-            outmostViewHost.ActiveView.ReadOnly = ReadOnly || (item.Hidden && !AllowEditingOfHiddenParameters);
-            outmostViewHost.ActiveView.Locked = Locked;
-          }
-        }
+        var item = (IParameter)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        var oldCrumbs = outermostViewHost.Breadcrumbs;
+        var newCrumbs = BuildBreadcrumbTrail();
+        mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+        outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+        outermostViewHost.ActiveView.ReadOnly = ReadOnly || (item.Hidden && !AllowEditingOfHiddenParameters);
+        outermostViewHost.ActiveView.Locked = Locked;
       }
     }
Index: /branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewHost.cs
===================================================================
--- /branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewHost.cs	(revision 10088)
+++ /branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/Controls/ViewHost.cs	(revision 10089)
@@ -58,4 +58,6 @@
     }
 
+    public bool HotlinkingEnabled { get; set; }
+
     private IContentView cachedView;
     private IContentView activeView;
@@ -130,5 +132,5 @@
     }
 
-    private bool isOutmostViewHost;
+    private bool isOutermostViewHost;
     public IEnumerable<IContent> Breadcrumbs { get { return breadcrumbControl.Breadcrumbs; } }
 
@@ -210,5 +212,5 @@
     }
     private void ViewHost_VisibleChanged(object sender, EventArgs e) {
-      PerformOuterViewHostDetection();
+      PerformOutermostViewHostDetection();
     }
     private void viewContextMenuStrip_ShowBreadcrumbsChanged(object sender, EventArgs e) {
@@ -375,12 +377,9 @@
     }
 
-    private void PerformOuterViewHostDetection() {
-      var outmostViewHost = this;
-      for (var parent = Parent; parent != null; parent = parent.Parent) {
-        var vh = parent as ViewHost;
-        if (vh != null) outmostViewHost = vh;
-      }
-      isOutmostViewHost = outmostViewHost == this;
-      viewContextMenuStrip.ShowBreadcrumbsToolStripMenuItem.Checked = isOutmostViewHost;
+    private void PerformOutermostViewHostDetection() {
+      var mainForm = MainFormManager.GetMainForm<MainForm>();
+      var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+      isOutermostViewHost = outermostViewHost == this;
+      viewContextMenuStrip.ShowBreadcrumbsToolStripMenuItem.Checked = isOutermostViewHost;
     }
     #endregion
Index: /branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs
===================================================================
--- /branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs	(revision 10088)
+++ /branches/Breadcrumbs/HeuristicLab.MainForm.WindowsForms/3.3/MainForms/MainForm.cs	(revision 10089)
@@ -223,4 +223,13 @@
     }
 
+    public T GetOutermostViewOfType<T>(Control childControl) where T : class, IView {
+      T outermostView = null;
+      for (var control = childControl; control != null; control = control.Parent) {
+        var vh = control as T;
+        if (vh != null) outermostView = vh;
+      }
+      return outermostView;
+    }
+
     public IContentView ShowContent(IContent content) {
       if (content == null) throw new ArgumentNullException("Content cannot be null.");
@@ -230,5 +239,5 @@
     }
 
-    public IContentView ShowContent<T>(T content, bool reuseExistingView, IEqualityComparer<T> comparer = null) where T : class,IContent {
+    public IContentView ShowContent<T>(T content, bool reuseExistingView, IEqualityComparer<T> comparer = null) where T : class, IContent {
       if (content == null) throw new ArgumentNullException("Content cannot be null.");
       if (!reuseExistingView) return ShowContent(content);
@@ -262,4 +271,12 @@
         return view;
       }
+    }
+
+    public void ShowContentInSpecificViewHost(IContent content, ViewHost viewHost) {
+      if (viewHost == null) return;
+      viewHost.Content = null;
+      var viewType = MainFormManager.GetDefaultViewType(content.GetType());
+      viewHost.ViewType = viewType;
+      viewHost.Content = content;
     }
 
@@ -550,6 +567,5 @@
       try {
         ((IActionUserInterfaceItem)item.Tag).Execute();
-      }
-      catch (Exception ex) {
+      } catch (Exception ex) {
         ErrorHandling.ShowErrorDialog((Control)MainFormManager.MainForm, ex);
       }
Index: /branches/Breadcrumbs/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionView.cs
===================================================================
--- /branches/Breadcrumbs/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionView.cs	(revision 10088)
+++ /branches/Breadcrumbs/HeuristicLab.Optimization.Views/3.3/RunCollectionViews/RunCollectionView.cs	(revision 10089)
@@ -237,16 +237,27 @@
     #region ListView Events
     private void itemsListView_SelectedIndexChanged(object sender, EventArgs e) {
-      removeButton.Enabled = itemsListView.SelectedItems.Count > 0 && (Content != null) && !Content.IsReadOnly && !ReadOnly;
+      removeButton.Enabled = Content != null && !Content.IsReadOnly && !ReadOnly && itemsListView.SelectedItems.Count > 0;
       // for performance reason (multiple selection fires this handler for every selected item)
       if (itemsListView.SelectedIndices.Count <= 1)
         AdjustListViewColumnSizes();
-      if (showDetailsCheckBox.Checked) {
-        if (itemsListView.SelectedItems.Count == 1) {
-          IRun item = (IRun)itemsListView.SelectedItems[0].Tag;
-          detailsGroupBox.Enabled = true;
-          viewHost.Content = item;
+      if (itemsListView.SelectedItems.Count == 1) {
+        var item = (IRun)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        if (outermostViewHost != null && outermostViewHost.HotlinkingEnabled) {
+          var oldCrumbs = outermostViewHost.Breadcrumbs;
+          var newCrumbs = BuildBreadcrumbTrail();
+          mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+          outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+          outermostViewHost.ActiveView.ReadOnly = ReadOnly;
+          outermostViewHost.ActiveView.Locked = Locked;
         } else {
-          viewHost.Content = null;
-          detailsGroupBox.Enabled = false;
+          if (showDetailsCheckBox.Checked) {
+            detailsGroupBox.Enabled = true;
+            viewHost.Content = item;
+          } else {
+            viewHost.Content = null;
+            detailsGroupBox.Enabled = false;
+          }
         }
       }
@@ -266,23 +277,13 @@
     private void itemsListView_DoubleClick(object sender, EventArgs e) {
       if (itemsListView.SelectedItems.Count == 1) {
-        var item = itemsListView.SelectedItems[0].Tag as IRun;
-        if (item != null) {
-          ViewHost outmostViewHost = null;
-          for (var control = Parent; control != null; control = control.Parent) {
-            var vh = control as ViewHost;
-            if (vh != null) outmostViewHost = vh;
-          }
-          if (outmostViewHost != null) {
-            var oldCrumbs = outmostViewHost.Breadcrumbs;
-            var newCrumbs = BuildBreadcrumbTrail();
-            outmostViewHost.Content = null;
-            var viewType = MainFormManager.GetDefaultViewType(item.GetType());
-            outmostViewHost.ViewType = viewType;
-            outmostViewHost.Content = item;
-            outmostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
-            outmostViewHost.ActiveView.ReadOnly = ReadOnly;
-            outmostViewHost.ActiveView.Locked = Locked;
-          }
-        }
+        var item = (IRun)itemsListView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        var oldCrumbs = outermostViewHost.Breadcrumbs;
+        var newCrumbs = BuildBreadcrumbTrail();
+        mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+        outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+        outermostViewHost.ActiveView.ReadOnly = ReadOnly;
+        outermostViewHost.ActiveView.Locked = Locked;
       }
     }
Index: /branches/Breadcrumbs/HeuristicLab.Optimization.Views/3.3/RunView.cs
===================================================================
--- /branches/Breadcrumbs/HeuristicLab.Optimization.Views/3.3/RunView.cs	(revision 10088)
+++ /branches/Breadcrumbs/HeuristicLab.Optimization.Views/3.3/RunView.cs	(revision 10089)
@@ -130,11 +130,23 @@
 
     private void listView_SelectedIndexChanged(object sender, EventArgs e) {
-      if (showDetailsCheckBox.Checked) {
-        if (listView.SelectedItems.Count == 1) {
-          detailsGroupBox.Enabled = true;
-          viewHost.Content = listView.SelectedItems[0].Tag as IContent;
+      if (listView.SelectedItems.Count == 1) {
+        var item = (IItem)listView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        if (outermostViewHost != null && outermostViewHost.HotlinkingEnabled) {
+          var oldCrumbs = outermostViewHost.Breadcrumbs;
+          var newCrumbs = BuildBreadcrumbTrail();
+          mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+          outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+          outermostViewHost.ActiveView.ReadOnly = ReadOnly;
+          outermostViewHost.ActiveView.Locked = Locked;
         } else {
-          viewHost.Content = null;
-          detailsGroupBox.Enabled = false;
+          if (showDetailsCheckBox.Checked) {
+            detailsGroupBox.Enabled = true;
+            viewHost.Content = item;
+          } else {
+            viewHost.Content = null;
+            detailsGroupBox.Enabled = false;
+          }
         }
       }
@@ -142,23 +154,13 @@
     private void listView_DoubleClick(object sender, EventArgs e) {
       if (listView.SelectedItems.Count == 1) {
-        var item = listView.SelectedItems[0].Tag as IItem;
-        if (item != null) {
-          ViewHost outmostViewHost = null;
-          for (var control = Parent; control != null; control = control.Parent) {
-            var vh = control as ViewHost;
-            if (vh != null) outmostViewHost = vh;
-          }
-          if (outmostViewHost != null) {
-            var oldCrumbs = outmostViewHost.Breadcrumbs;
-            var newCrumbs = BuildBreadcrumbTrail();
-            outmostViewHost.Content = null;
-            var viewType = MainFormManager.GetDefaultViewType(item.GetType());
-            outmostViewHost.ViewType = viewType;
-            outmostViewHost.Content = item;
-            outmostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
-            outmostViewHost.ActiveView.ReadOnly = ReadOnly;
-            outmostViewHost.ActiveView.Locked = Locked;
-          }
-        }
+        var item = (IItem)listView.SelectedItems[0].Tag;
+        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
+        var outermostViewHost = mainForm.GetOutermostViewOfType<ViewHost>(this);
+        var oldCrumbs = outermostViewHost.Breadcrumbs;
+        var newCrumbs = BuildBreadcrumbTrail();
+        mainForm.ShowContentInSpecificViewHost(item, outermostViewHost);
+        outermostViewHost.UpdateBreadcrumbTrail(oldCrumbs, newCrumbs.Concat(new[] { item }));
+        outermostViewHost.ActiveView.ReadOnly = ReadOnly;
+        outermostViewHost.ActiveView.Locked = Locked;
       }
     }
