Index: trunk/sources/HeuristicLab.MainForm.Test/3.2/ButtonItems/OpenToolStripButtonItem.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm.Test/3.2/ButtonItems/OpenToolStripButtonItem.cs	(revision 2512)
+++ trunk/sources/HeuristicLab.MainForm.Test/3.2/ButtonItems/OpenToolStripButtonItem.cs	(revision 2514)
@@ -6,5 +6,5 @@
 
 namespace HeuristicLab.MainForm.Test {
-  public class OpenToolStripButtonItem : ToolBarItemBase, ITestUserInterfaceItemProvider {
+  public class OpenToolStripButtonItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, ITestUserInterfaceItemProvider {
     public override int Position {
       get { return 20; }
Index: trunk/sources/HeuristicLab.MainForm.Test/3.2/ButtonItems/SeparatorToolStripButtonItem.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm.Test/3.2/ButtonItems/SeparatorToolStripButtonItem.cs	(revision 2514)
+++ trunk/sources/HeuristicLab.MainForm.Test/3.2/ButtonItems/SeparatorToolStripButtonItem.cs	(revision 2514)
@@ -0,0 +1,13 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.MainForm.Test {
+  public class SeparatorToolStripButtonItem : ToolBarSeparatorItemBase, ITestUserInterfaceItemProvider {
+    public override int Position {
+      get { return 15; }
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.MainForm.Test/3.2/HeuristicLab.MainForm.Test-3.2.csproj
===================================================================
--- trunk/sources/HeuristicLab.MainForm.Test/3.2/HeuristicLab.MainForm.Test-3.2.csproj	(revision 2512)
+++ trunk/sources/HeuristicLab.MainForm.Test/3.2/HeuristicLab.MainForm.Test-3.2.csproj	(revision 2514)
@@ -83,4 +83,5 @@
   <ItemGroup>
     <Compile Include="Actions\NewEditorAction.cs" />
+    <Compile Include="ButtonItems\SeparatorToolStripButtonItem.cs" />
     <Compile Include="ButtonItems\NewEditorToolStripButtonItem.cs" />
     <Compile Include="ButtonItems\NewFormToolStripButtonItem.cs" />
@@ -107,4 +108,5 @@
       <DependentUpon>FormView.cs</DependentUpon>
     </Compile>
+    <Compile Include="MenuItems\SeparatorMenuItem.cs" />
     <Compile Include="MenuItems\ExitToolStripMenuItem.cs" />
     <Compile Include="MenuItems\NewFormToolStripMenuItem.cs" />
Index: trunk/sources/HeuristicLab.MainForm.Test/3.2/MenuItems/SeparatorMenuItem.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm.Test/3.2/MenuItems/SeparatorMenuItem.cs	(revision 2514)
+++ trunk/sources/HeuristicLab.MainForm.Test/3.2/MenuItems/SeparatorMenuItem.cs	(revision 2514)
@@ -0,0 +1,21 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.Common.Resources;
+
+namespace HeuristicLab.MainForm.Test {
+  public class SeparatorMenuItem : MenuSeparatorItemBase, ITestUserInterfaceItemProvider {
+    public override IEnumerable<string> Structure {
+      get { return new string[] { "File" }; }
+    }
+
+    public override int Position {
+      get { return 1120; }
+
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs	(revision 2512)
+++ trunk/sources/HeuristicLab.MainForm.WindowsForms/3.2/MainFormBase.cs	(revision 2514)
@@ -207,41 +207,50 @@
 
       object[] items = ds.GetInstances(userInterfaceItemType);
-      IEnumerable<MenuItemBase> toolStripMenuItems =
+      IEnumerable<IMenuItem> toolStripMenuItems =
         from mi in items
-        where mi is MenuItemBase
-        orderby ((MenuItemBase)mi).Position
-        select (MenuItemBase)mi;
-      foreach (MenuItemBase menuItem in toolStripMenuItems)
+        where mi is IMenuItem
+        orderby ((IMenuItem)mi).Position
+        select (IMenuItem)mi;
+      foreach (IMenuItem menuItem in toolStripMenuItems)
         AddToolStripMenuItem(menuItem);
 
       items = ds.GetInstances(userInterfaceItemType);
-      IEnumerable<ToolBarItemBase> toolStripButtonItems =
+      IEnumerable<IToolBarItem> toolStripButtonItems =
         from bi in items
-        where bi is ToolBarItemBase
-        orderby ((ToolBarItemBase)bi).Position
-        select (ToolBarItemBase)bi;
-      foreach (ToolBarItemBase toolStripButtonItem in toolStripButtonItems)
+        where bi is IToolBarItem
+        orderby ((IToolBarItem)bi).Position
+        select (IToolBarItem)bi;
+      foreach (IToolBarItem toolStripButtonItem in toolStripButtonItems)
         AddToolStripButtonItem(toolStripButtonItem);
     }
 
-    private void AddToolStripMenuItem(MenuItemBase menuItem) {
-      ToolStripMenuItem item = new ToolStripMenuItem();
-      SetToolStripItemProperties(item, menuItem);
-      menuItem.ToolStripItem = item;
-      item.ShortcutKeys = menuItem.ShortCutKeys;
-      item.DisplayStyle = menuItem.ToolStripItemDisplayStyle;
-      this.InsertItem(menuItem.Structure, typeof(ToolStripMenuItem), item, menuStrip.Items);
-    }
-
-    private void AddToolStripButtonItem(ToolBarItemBase buttonItem) {
-      ToolStripItem item;
-      if (buttonItem.IsDropDownButton)
-        item = new ToolStripDropDownButton();
-      else
-        item = new ToolStripButton();
-
-      SetToolStripItemProperties(item, buttonItem);
-      item.DisplayStyle = buttonItem.ToolStripItemDisplayStyle;
-      buttonItem.ToolStripItem = item;
+    private void AddToolStripMenuItem(IMenuItem menuItem) {
+      if (menuItem is MenuItemBase) {
+        ToolStripMenuItem item = new ToolStripMenuItem();
+        SetToolStripItemProperties(item, menuItem);
+        ((MenuItemBase)menuItem).ToolStripItem = item;
+        item.ShortcutKeys = ((MenuItemBase)menuItem).ShortCutKeys;
+        item.DisplayStyle = ((MenuItemBase)menuItem).ToolStripItemDisplayStyle;
+        this.InsertItem(menuItem.Structure, typeof(ToolStripMenuItem), item, menuStrip.Items);
+      } else if (menuItem is MenuSeparatorItemBase) {
+        this.InsertItem(menuItem.Structure, typeof(ToolStripMenuItem), new ToolStripSeparator(), menuStrip.Items);
+      }
+     }
+
+    private void AddToolStripButtonItem(IToolBarItem buttonItem) {
+      ToolStripItem item = null;
+
+      if (buttonItem is ToolBarItemBase) {
+        if (((ToolBarItemBase)buttonItem).IsDropDownButton)
+          item = new ToolStripDropDownButton();
+        else
+          item = new ToolStripButton();
+
+        SetToolStripItemProperties(item, buttonItem);
+        item.DisplayStyle = ((ToolBarItemBase)buttonItem).ToolStripItemDisplayStyle;
+        ((ToolBarItemBase)buttonItem).ToolStripItem = item;
+      } else if (buttonItem is IToolBarSeparatorItem) 
+        item = new ToolStripSeparator();
+      
       this.InsertItem(buttonItem.Structure, typeof(ToolStripDropDownButton), item, toolStrip.Items);
     }
Index: trunk/sources/HeuristicLab.MainForm/3.2/HeuristicLab.MainForm-3.2.csproj
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.2/HeuristicLab.MainForm-3.2.csproj	(revision 2512)
+++ trunk/sources/HeuristicLab.MainForm/3.2/HeuristicLab.MainForm-3.2.csproj	(revision 2514)
@@ -81,8 +81,12 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="ToolBarSeparatorItemBase.cs" />
+    <Compile Include="Interfaces\IToolBarSeparatorItem.cs" />
     <Compile Include="Interfaces\IMenuItem.cs" />
+    <Compile Include="Interfaces\IMenuSeparatorItem.cs" />
     <Compile Include="Interfaces\IToolBarItem.cs" />
     <Compile Include="MainFormManager.cs" />
     <Compile Include="MenuItemBase.cs" />
+    <Compile Include="MenuSeparatorItemBase.cs" />
     <Compile Include="ToolBarItemBase.cs" />
     <Compile Include="HeuristicLabMainFormPlugin.cs" />
Index: trunk/sources/HeuristicLab.MainForm/3.2/Interfaces/IMenuSeparatorItem.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.2/Interfaces/IMenuSeparatorItem.cs	(revision 2514)
+++ trunk/sources/HeuristicLab.MainForm/3.2/Interfaces/IMenuSeparatorItem.cs	(revision 2514)
@@ -0,0 +1,9 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public interface IMenuSeparatorItem : IMenuItem {
+  }
+}
Index: trunk/sources/HeuristicLab.MainForm/3.2/Interfaces/IToolBarSeparatorItem.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.2/Interfaces/IToolBarSeparatorItem.cs	(revision 2514)
+++ trunk/sources/HeuristicLab.MainForm/3.2/Interfaces/IToolBarSeparatorItem.cs	(revision 2514)
@@ -0,0 +1,9 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public interface IToolBarSeparatorItem : IToolBarItem {
+  }
+}
Index: trunk/sources/HeuristicLab.MainForm/3.2/MenuSeparatorItemBase.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.2/MenuSeparatorItemBase.cs	(revision 2514)
+++ trunk/sources/HeuristicLab.MainForm/3.2/MenuSeparatorItemBase.cs	(revision 2514)
@@ -0,0 +1,40 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public abstract class MenuSeparatorItemBase : IMenuSeparatorItem {
+    public abstract IEnumerable<string> Structure { get; }
+    public abstract int Position { get; }
+
+
+    public string Name {
+      get { return string.Empty; }
+    }
+
+    public System.Drawing.Image Image {
+      get { return null; }
+    }
+
+    public string ToolTipText {
+      get { return string.Empty; }
+    }
+
+    public void Execute() {
+      throw new NotImplementedException();
+    }
+
+    public void ActiveViewChanged(object sender, EventArgs e) {
+      throw new NotImplementedException();
+    }
+
+    public void ViewChanged(object sender, EventArgs e) {
+      throw new NotImplementedException();
+    }
+
+    public void MainFormChanged(object sender, EventArgs e) {
+      throw new NotImplementedException();
+    }
+  }
+}
Index: trunk/sources/HeuristicLab.MainForm/3.2/ToolBarSeparatorItemBase.cs
===================================================================
--- trunk/sources/HeuristicLab.MainForm/3.2/ToolBarSeparatorItemBase.cs	(revision 2514)
+++ trunk/sources/HeuristicLab.MainForm/3.2/ToolBarSeparatorItemBase.cs	(revision 2514)
@@ -0,0 +1,42 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+
+namespace HeuristicLab.MainForm {
+  public abstract class ToolBarSeparatorItemBase : IToolBarSeparatorItem {
+    public abstract int Position { get; }
+
+    public IEnumerable<string> Structure {
+      get { return new List<string>(); }
+    }
+
+    public string Name {
+      get { return string.Empty; }
+    }
+
+    public System.Drawing.Image Image {
+      get { return null; }
+    }
+
+    public string ToolTipText {
+      get { return string.Empty; }
+    }
+
+    public void Execute() {
+      throw new NotImplementedException();
+    }
+
+    public void ActiveViewChanged(object sender, EventArgs e) {
+      throw new NotImplementedException();
+    }
+
+    public void ViewChanged(object sender, EventArgs e) {
+      throw new NotImplementedException();
+    }
+
+    public void MainFormChanged(object sender, EventArgs e) {
+      throw new NotImplementedException();
+    }
+  }
+}
