Index: /trunk/sources/HeuristicLab.Core.Views/3.3/IItemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/IItemView.cs	(revision 2554)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/IItemView.cs	(revision 2555)
@@ -40,6 +40,4 @@
     /// </summary>
     event EventHandler ItemChanged;
-
-    event EventHandler Closed;
   }
 }
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.cs	(revision 2554)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.cs	(revision 2555)
@@ -112,11 +112,4 @@
     }
 
-    public event EventHandler Closed;
-    public override void OnClosed(object sender, EventArgs e) {
-      base.OnClosed(sender, e);
-      if (Closed != null)
-        Closed(this, e);
-    }
-
     /// <summary>
     /// Asynchron call of GUI updating.
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs	(revision 2554)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs	(revision 2555)
@@ -46,4 +46,5 @@
       waitingCursors = 0;
       newDocumentsCounter = 1;
+      // NOTE: Events fired by the main form are registered in HeuristicLabOptimizerApplication.
     }
 
@@ -51,11 +52,10 @@
       if (newItemDialog == null) newItemDialog = new NewItemDialog();
       if (newItemDialog.ShowDialog() == DialogResult.OK) {
-        IItemView view = MainFormManager.CreateDefaultView(newItemDialog.Item) as IItemView;
-        if (view != null) {
-          view.Closed += new EventHandler(ViewClosed);
+        IView view = MainFormManager.CreateDefaultView(newItemDialog.Item);
+        if (view is IItemView) {
           view.Caption = "Item" + newDocumentsCounter.ToString() + ".hl";
           newDocumentsCounter++;
-          MainFormManager.MainForm.ShowView(view);
         }
+        MainFormManager.MainForm.ShowView(view);
       }
     }
@@ -140,7 +140,7 @@
     }
 
-    private static void ViewClosed(object sender, EventArgs e) {
-      IItemView view = (IItemView)sender;
-      view.Closed -= new EventHandler(ViewClosed);
+    // NOTE: This event is fired by the main form. It is registered in HeuristicLabOptimizerApplication.
+    internal static void ViewClosed(object sender, ViewEventArgs e) {
+      IItemView view = e.View as IItemView;
       files.Remove(view);
     }
@@ -187,5 +187,4 @@
                 IItemView view = MainFormManager.CreateDefaultView(item) as IItemView;
                 if (view != null) {
-                  view.Closed += new EventHandler(ViewClosed);
                   view.Caption = Path.GetFileName(filename);
                   files.Add(view, new FileInfo(filename));
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerApplication.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerApplication.cs	(revision 2554)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerApplication.cs	(revision 2555)
@@ -27,4 +27,5 @@
 using HeuristicLab.PluginInfrastructure;
 using HeuristicLab.Common.Resources;
+using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
 
@@ -34,4 +35,5 @@
     public override void Run() {
       OptimizerMainForm mainForm = new OptimizerMainForm(typeof(IOptimizerUserInterfaceItemProvider));
+      mainForm.ViewClosed += new EventHandler<ViewEventArgs>(FileManager.ViewClosed);
       Application.Run(mainForm);
     }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs	(revision 2554)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs	(revision 2555)
@@ -8,4 +8,6 @@
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
 
 namespace HeuristicLab.Optimizer.MenuItems {
@@ -31,5 +33,9 @@
     }
     public override void ActiveViewChanged(object sender, EventArgs e) {
-      ToolStripItem.Enabled = MainFormManager.MainForm.Views.FirstOrDefault() != null;
+      var views = from v in MainFormManager.MainForm.Views
+                  where v is IItemView
+                  where CreatableAttribute.IsCreatable(((IItemView)v).Item.GetType())
+                  select v;
+      ToolStripItem.Enabled = views.FirstOrDefault() != null;
     }
 
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs	(revision 2554)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs	(revision 2555)
@@ -8,4 +8,6 @@
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
 
 namespace HeuristicLab.Optimizer {
@@ -28,5 +30,9 @@
     }
     public override void ActiveViewChanged(object sender, EventArgs e) {
-      ToolStripItem.Enabled = MainFormManager.MainForm.Views.FirstOrDefault() != null;
+      var views = from v in MainFormManager.MainForm.Views
+                  where v is IItemView
+                  where CreatableAttribute.IsCreatable(((IItemView)v).Item.GetType())
+                  select v;
+      ToolStripItem.Enabled = views.FirstOrDefault() != null;
     }
 
