Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs	(revision 2837)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.Designer.cs	(revision 2838)
@@ -45,10 +45,9 @@
     /// </summary>
     private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(ViewHost));
       this.viewPanel = new System.Windows.Forms.Panel();
       this.messageLabel = new System.Windows.Forms.Label();
       this.viewsLabel = new System.Windows.Forms.Label();
-      this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
-      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.viewContextMenuStrip = new HeuristicLab.MainForm.WindowsForms.ViewContextMenuStrip();
       this.SuspendLayout();
       // 
@@ -76,21 +75,18 @@
       // 
       this.viewsLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.viewsLabel.ContextMenuStrip = this.contextMenuStrip;
-      this.viewsLabel.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Windows;
+      this.viewsLabel.ContextMenuStrip = this.viewContextMenuStrip;
+      this.viewsLabel.Image = ((System.Drawing.Image)(resources.GetObject("viewsLabel.Image")));
       this.viewsLabel.Location = new System.Drawing.Point(211, 0);
       this.viewsLabel.Name = "viewsLabel";
       this.viewsLabel.Size = new System.Drawing.Size(16, 16);
       this.viewsLabel.TabIndex = 0;
-      this.toolTip.SetToolTip(this.viewsLabel, "Double-click to open a new window of the current view.\r\nRight-click to change cur" +
-              "rent view.");
       this.viewsLabel.DoubleClick += new System.EventHandler(this.viewsLabel_DoubleClick);
       // 
-      // contextMenuStrip
+      // viewContextMenuStrip
       // 
-      this.contextMenuStrip.Name = "contextMenuStrip";
-      this.contextMenuStrip.ShowCheckMargin = true;
-      this.contextMenuStrip.ShowImageMargin = false;
-      this.contextMenuStrip.Size = new System.Drawing.Size(61, 4);
-      this.contextMenuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.contextMenuStrip_ItemClicked);
+      this.viewContextMenuStrip.Item = null;
+      this.viewContextMenuStrip.Name = "viewContextMenuStrip";
+      this.viewContextMenuStrip.Size = new System.Drawing.Size(61, 4);
+      this.viewContextMenuStrip.ItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.viewContextMenuStrip_ItemClicked);
       // 
       // ViewHost
@@ -112,6 +108,5 @@
     private System.Windows.Forms.Label viewsLabel;
     private System.Windows.Forms.Label messageLabel;
-    private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
-    private System.Windows.Forms.ToolTip toolTip;
+    private HeuristicLab.MainForm.WindowsForms.ViewContextMenuStrip viewContextMenuStrip;
 
   }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.cs	(revision 2837)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ViewHost.cs	(revision 2838)
@@ -29,10 +29,4 @@
 namespace HeuristicLab.Core.Views {
   public sealed partial class ViewHost : UserControl {
-    private Dictionary<Type, ToolStripMenuItem> typeMenuItemTable;
-
-    public IEnumerable<Type> AvailableViewTypes {
-      get { return typeMenuItemTable.Keys; }
-    }
-
     private Type viewType;
     public Type ViewType {
@@ -54,4 +48,5 @@
         if (value != content) {
           content = value;
+          viewContextMenuStrip.Item = content;
           Initialize();
         }
@@ -60,8 +55,7 @@
 
     public ViewHost() {
-      typeMenuItemTable = new Dictionary<Type, ToolStripMenuItem>();
+      InitializeComponent();
       viewType = null;
       content = null;
-      InitializeComponent();
       Initialize();
     }
@@ -70,8 +64,7 @@
       viewsLabel.Enabled = false;
       viewsLabel.Visible = false;
-      typeMenuItemTable.Clear();
-      contextMenuStrip.Items.Clear();
-      contextMenuStrip.Enabled = false;
+      viewContextMenuStrip.Enabled = false;
       messageLabel.Visible = false;
+
       if (viewPanel.Controls.Count > 0) viewPanel.Controls[0].Dispose();
       viewPanel.Controls.Clear();
@@ -80,21 +73,10 @@
 
       if (Content != null) {
-        var viewTypes = from t in MainFormManager.GetViewTypes(Content.GetType())
-                        orderby t.Name ascending
-                        select t;
-        foreach (Type v in viewTypes) {
-          ToolStripMenuItem item = new ToolStripMenuItem(v.GetPrettyName());
-          item.Name = v.FullName;
-          item.ToolTipText = v.GetPrettyName(true);
-          item.Tag = v;
-          contextMenuStrip.Items.Add(item);
-          typeMenuItemTable.Add(v, item);
-        }
-        if (contextMenuStrip.Items.Count == 0) {
+        if (viewContextMenuStrip.Items.Count == 0) {
           messageLabel.Visible = true;
         } else {
           viewsLabel.Enabled = true;
           viewsLabel.Visible = true;
-          contextMenuStrip.Enabled = true;
+          viewContextMenuStrip.Enabled = true;
           messageLabel.Visible = false;
         }
@@ -102,6 +84,6 @@
         if (!ViewCanShowContent(viewType, Content)) {
           viewType = MainFormManager.GetDefaultViewType(Content.GetType());
-          if ((viewType == null) && (contextMenuStrip.Items.Count > 0))  // create first available view if default view is not available
-            viewType = (Type)contextMenuStrip.Items[0].Tag;
+          if ((viewType == null) && (viewContextMenuStrip.Items.Count > 0))  // create first available view if default view is not available
+            viewType = (Type)viewContextMenuStrip.Items[0].Tag;
         }
         UpdateView();
@@ -121,11 +103,5 @@
                                                   Content.GetType().GetPrettyName()));
 
-      foreach (ToolStripMenuItem item in typeMenuItemTable.Values) {
-        item.Checked = false;
-        item.Enabled = true;
-      }
-      typeMenuItemTable[viewType].Checked = true;
-      typeMenuItemTable[viewType].Enabled = false;
-
+      UpdateActiveMenuItem();
       Control view = (Control)MainFormManager.CreateView(viewType, Content);
       viewPanel.Controls.Add(view);
@@ -136,4 +112,16 @@
     }
 
+    private void UpdateActiveMenuItem() {
+      foreach (KeyValuePair<Type, ToolStripMenuItem> item in viewContextMenuStrip.MenuItems) {
+        if (item.Key == viewType) {
+          item.Value.Checked = true;
+          item.Value.Enabled = false;
+        } else {
+          item.Value.Checked = false;
+          item.Value.Enabled = true;
+        }
+      }
+    }
+
     private bool ViewCanShowContent(Type viewType, object content) {
       if (content == null) // every view can display null
@@ -141,11 +129,12 @@
       if (viewType == null)
         return false;
-      return ContentAttribute.CanViewType(viewType, Content.GetType()) && typeMenuItemTable.ContainsKey(viewType);
+      return ContentAttribute.CanViewType(viewType, Content.GetType()) && viewContextMenuStrip.MenuItems.Any(item => item.Key == viewType);
     }
 
     private void viewsLabel_DoubleClick(object sender, EventArgs e) {
-      MainFormManager.CreateView(viewPanel.Tag.GetType(), Content).Show();
+      MainFormManager.CreateView(viewType, Content).Show();
     }
-    private void contextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) {
+
+    private void viewContextMenuStrip_ItemClicked(object sender, ToolStripItemClickedEventArgs e) {
       Type viewType = (Type)e.ClickedItem.Tag;
       ViewType = viewType;
