Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 2545)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 2546)
@@ -38,5 +38,4 @@
 		{EE2034D9-6E27-48A1-B855-42D45F69A4FC} = {EE2034D9-6E27-48A1-B855-42D45F69A4FC}
 		{A9E282EA-180F-4233-B809-AEDF0787545C} = {A9E282EA-180F-4233-B809-AEDF0787545C}
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609} = {D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE} = {23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}
 		{BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937} = {BBAB9DF5-5EF3-4BA8-ADE9-B36E82114937}
@@ -59,6 +58,4 @@
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Operators-3.3", "HeuristicLab.Operators\3.3\HeuristicLab.Operators-3.3.csproj", "{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.AdvancedOptimizationFrontend-3.3", "HeuristicLab.AdvancedOptimizationFrontend\3.3\HeuristicLab.AdvancedOptimizationFrontend-3.3.csproj", "{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}"
 EndProject
 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.SequentialEngine-3.3", "HeuristicLab.SequentialEngine\3.3\HeuristicLab.SequentialEngine-3.3.csproj", "{DC3D7072-7999-4719-B65D-3997744D5DC1}"
@@ -222,16 +219,4 @@
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|x86.ActiveCfg = Release|x86
 		{23DA7FF4-D5B8-41B6-AA96-F0561D24F3EE}.Release|x86.Build.0 = Release|x86
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Debug|Any CPU.Build.0 = Debug|Any CPU
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Debug|x64.ActiveCfg = Debug|x64
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Debug|x64.Build.0 = Debug|x64
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Debug|x86.ActiveCfg = Debug|x86
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Debug|x86.Build.0 = Debug|x86
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Release|Any CPU.ActiveCfg = Release|Any CPU
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Release|Any CPU.Build.0 = Release|Any CPU
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Release|x64.ActiveCfg = Release|x64
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Release|x64.Build.0 = Release|x64
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Release|x86.ActiveCfg = Release|x86
-		{D4E8C5EC-DB4A-4FF5-AE45-770A88B6D609}.Release|x86.Build.0 = Release|x86
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
 		{DC3D7072-7999-4719-B65D-3997744D5DC1}.Debug|Any CPU.Build.0 = Debug|Any CPU
Index: /trunk/sources/HeuristicLab 3.3/CopyAssemblies.cmd
===================================================================
--- /trunk/sources/HeuristicLab 3.3/CopyAssemblies.cmd	(revision 2545)
+++ /trunk/sources/HeuristicLab 3.3/CopyAssemblies.cmd	(revision 2546)
@@ -7,5 +7,4 @@
 mkdir plugins\backup
 
-copy "%SolutionDir%\HeuristicLab.AdvancedOptimizationFrontend\3.3\%Outdir%\HeuristicLab.AdvancedOptimizationFrontend-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Charting\3.3\%Outdir%\HeuristicLab.Charting-3.3.dll" .\plugins
 copy "%SolutionDir%\HeuristicLab.Charting.Data\3.3\%Outdir%\HeuristicLab.Charting.Data-3.3.dll" .\plugins
Index: /trunk/sources/HeuristicLab.Common.Resources/3.2/HeuristicLab.Common.Resources-3.2.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Common.Resources/3.2/HeuristicLab.Common.Resources-3.2.csproj	(revision 2545)
+++ /trunk/sources/HeuristicLab.Common.Resources/3.2/HeuristicLab.Common.Resources-3.2.csproj	(revision 2546)
@@ -101,5 +101,5 @@
   <ItemGroup>
     <EmbeddedResource Include="Resources.resx">
-      <Generator>ResXFileCodeGenerator</Generator>
+      <Generator>PublicResXFileCodeGenerator</Generator>
       <LastGenOutput>Resources.Designer.cs</LastGenOutput>
       <SubType>Designer</SubType>
@@ -171,4 +171,16 @@
   <ItemGroup>
     <None Include="Resources\RefreshDocument.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\ShowDetails.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\ShowLargeIcons.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\ShowSmallIcons.png" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Resources\HeuristicLab.png" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /trunk/sources/HeuristicLab.Common.Resources/3.2/Resources.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Common.Resources/3.2/Resources.Designer.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Common.Resources/3.2/Resources.Designer.cs	(revision 2546)
@@ -30,5 +30,5 @@
         
         [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
-        public Resources() {
+        internal Resources() {
         }
         
@@ -124,4 +124,11 @@
         }
         
+        public static System.Drawing.Bitmap HeuristicLab {
+            get {
+                object obj = ResourceManager.GetObject("HeuristicLab", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         public static System.Drawing.Icon HeuristicLabIcon {
             get {
@@ -201,4 +208,25 @@
         }
         
+        public static System.Drawing.Bitmap ShowDetails {
+            get {
+                object obj = ResourceManager.GetObject("ShowDetails", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ShowLargeIcons {
+            get {
+                object obj = ResourceManager.GetObject("ShowLargeIcons", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Bitmap ShowSmallIcons {
+            get {
+                object obj = ResourceManager.GetObject("ShowSmallIcons", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
         public static System.Drawing.Bitmap UndoIcon {
             get {
Index: /trunk/sources/HeuristicLab.Common.Resources/3.2/Resources.resx
===================================================================
--- /trunk/sources/HeuristicLab.Common.Resources/3.2/Resources.resx	(revision 2545)
+++ /trunk/sources/HeuristicLab.Common.Resources/3.2/Resources.resx	(revision 2546)
@@ -146,4 +146,7 @@
     <value>Resources\FunctionIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="HeuristicLab" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\HeuristicLab.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="HeuristicLabIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>Resources\HeuristicLab.ico;System.Drawing.Icon, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
@@ -179,4 +182,13 @@
     <value>Resources\SaveIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
   </data>
+  <data name="ShowDetails" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\ShowDetails.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ShowLargeIcons" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\ShowLargeIcons.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="ShowSmallIcons" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Resources\ShowSmallIcons.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
   <data name="UndoIcon" type="System.Resources.ResXFileRef, System.Windows.Forms">
     <value>Resources\UndoIcon.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
Index: unk/sources/HeuristicLab.Core.Views/3.3/EditorBase.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EditorBase.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,62 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Core.Views {
-  partial class EditorBase {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.SuspendLayout();
-      // 
-      // EditorBase
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "EditorBase";
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/EditorBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EditorBase.cs	(revision 2545)
+++ 	(revision )
@@ -1,124 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Threading;
-using System.Windows.Forms;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// Base class for views that can load and save data.
-  /// </summary>
-  public partial class EditorBase : ViewBase, IEditor {
-    private string myFilename;
-    /// <summary>
-    /// Gets or sets the filename of the current editor.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnFilenameChanged"/> in the setter if the filename is new.</remarks>
-    public string Filename {
-      get { return myFilename; }
-      set {
-        if (value != myFilename) {
-          myFilename = value;
-          OnFilenameChanged();
-        }
-      }
-    }
-
-    /// <summary>
-    /// Gets or sets, if the contained item should be compressed.
-    /// </summary>
-    public bool Compressed { get; set; }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="EditorBase"/> with the caption "Editor".
-    /// </summary>
-    public EditorBase() {
-      InitializeComponent();
-      Caption = "Editor";
-    }
-
-    /// <summary>
-    /// Asynchronously saves the contained object to a file.
-    /// </summary>
-    /// <remarks>The filename to save the contained item to is given by <see cref="Filename"/>.</remarks>
-    public void Save() {
-      Enabled = false;
-      ThreadPool.QueueUserWorkItem((o) => {
-        try {
-          if (Compressed)
-            PersistenceManager.SaveCompressed(Item, Filename);
-          else
-            PersistenceManager.Save(Item, Filename);
-        } catch (Exception e) {
-          MessageBox.Show(String.Format(
-            "Sorry couldn't save file \"{0}\".\n The following exception occurred: {1}",
-            Filename, e.ToString()),
-            "Reader Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
-        } finally {
-          Invoke(new Action(() => Enabled = true));
-          OnSaveFinished();
-        }
-      });
-    }
-
-    /// <summary>
-    /// Updates all controls with the latest data of the model.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.UpdateControls"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (Item == null)
-        Caption = "Editor";
-      else
-        Caption = "Editor (" + Item.GetType().Name + ")";
-    }
-
-    /// <summary>
-    /// Occurs when the filename is changed.
-    /// </summary>
-    public event EventHandler FilenameChanged;
-    /// <summary>
-    /// Fires a new <c>FilenameChanged</c> event.
-    /// </summary>
-    protected virtual void OnFilenameChanged() {
-      if (FilenameChanged != null)
-        FilenameChanged(this, new EventArgs());
-    }
-
-    /// <summary>
-    /// Occurs after a save operation is finished.
-    /// </summary>
-    public event EventHandler SaveFinished;
-
-    /// <summary>
-    /// Fires a new <c>SaveFinished</c> event.
-    /// </summary>
-    protected virtual void OnSaveFinished() {
-      SaveFinished(this, new EventArgs());
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/EditorBase.resx
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EditorBase.resx	(revision 2545)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: unk/sources/HeuristicLab.Core.Views/3.3/EngineBaseEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseEditor.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,214 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Core.Views {
-  partial class EngineBaseEditor {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.executionTimeTextBox = new System.Windows.Forms.TextBox();
-      this.executionTimeLabel = new System.Windows.Forms.Label();
-      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
-      this.operatorGraphGroupBox = new System.Windows.Forms.GroupBox();
-      this.operatorGraphView = new HeuristicLab.Core.Views.OperatorGraphView();
-      this.globalScopeGroupBox = new System.Windows.Forms.GroupBox();
-      this.scopeView = new HeuristicLab.Core.Views.ScopeView();
-      this.resetButton = new System.Windows.Forms.Button();
-      this.abortButton = new System.Windows.Forms.Button();
-      this.executeButton = new System.Windows.Forms.Button();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      this.operatorGraphGroupBox.SuspendLayout();
-      this.globalScopeGroupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // executionTimeTextBox
-      // 
-      this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.executionTimeTextBox.Location = new System.Drawing.Point(499, 460);
-      this.executionTimeTextBox.Name = "executionTimeTextBox";
-      this.executionTimeTextBox.ReadOnly = true;
-      this.executionTimeTextBox.Size = new System.Drawing.Size(141, 20);
-      this.executionTimeTextBox.TabIndex = 5;
-      // 
-      // executionTimeLabel
-      // 
-      this.executionTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.executionTimeLabel.AutoSize = true;
-      this.executionTimeLabel.Location = new System.Drawing.Point(496, 444);
-      this.executionTimeLabel.Name = "executionTimeLabel";
-      this.executionTimeLabel.Size = new System.Drawing.Size(83, 13);
-      this.executionTimeLabel.TabIndex = 4;
-      this.executionTimeLabel.Text = "&Execution Time:";
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.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.splitContainer1.Location = new System.Drawing.Point(0, 0);
-      this.splitContainer1.Name = "splitContainer1";
-      // 
-      // splitContainer1.Panel1
-      // 
-      this.splitContainer1.Panel1.Controls.Add(this.operatorGraphGroupBox);
-      // 
-      // splitContainer1.Panel2
-      // 
-      this.splitContainer1.Panel2.Controls.Add(this.globalScopeGroupBox);
-      this.splitContainer1.Size = new System.Drawing.Size(640, 441);
-      this.splitContainer1.SplitterDistance = 320;
-      this.splitContainer1.TabIndex = 0;
-      // 
-      // operatorGraphGroupBox
-      // 
-      this.operatorGraphGroupBox.Controls.Add(this.operatorGraphView);
-      this.operatorGraphGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.operatorGraphGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.operatorGraphGroupBox.Name = "operatorGraphGroupBox";
-      this.operatorGraphGroupBox.Size = new System.Drawing.Size(320, 441);
-      this.operatorGraphGroupBox.TabIndex = 0;
-      this.operatorGraphGroupBox.TabStop = false;
-      this.operatorGraphGroupBox.Text = "Operator &Graph";
-      // 
-      // operatorGraphView
-      // 
-      this.operatorGraphView.Caption = "Operator Graph";
-      this.operatorGraphView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.operatorGraphView.Location = new System.Drawing.Point(3, 16);
-      this.operatorGraphView.Name = "operatorGraphView";
-      this.operatorGraphView.OperatorGraph = null;
-      this.operatorGraphView.Size = new System.Drawing.Size(314, 422);
-      this.operatorGraphView.TabIndex = 0;
-      // 
-      // globalScopeGroupBox
-      // 
-      this.globalScopeGroupBox.Controls.Add(this.scopeView);
-      this.globalScopeGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.globalScopeGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.globalScopeGroupBox.Name = "globalScopeGroupBox";
-      this.globalScopeGroupBox.Size = new System.Drawing.Size(316, 441);
-      this.globalScopeGroupBox.TabIndex = 0;
-      this.globalScopeGroupBox.TabStop = false;
-      this.globalScopeGroupBox.Text = "Global &Scope";
-      // 
-      // scopeView
-      // 
-      this.scopeView.Caption = "Scope";
-      this.scopeView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scopeView.Location = new System.Drawing.Point(3, 16);
-      this.scopeView.Name = "scopeView";
-      this.scopeView.Scope = null;
-      this.scopeView.Size = new System.Drawing.Size(310, 422);
-      this.scopeView.TabIndex = 0;
-      // 
-      // resetButton
-      // 
-      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.resetButton.Location = new System.Drawing.Point(196, 457);
-      this.resetButton.Name = "resetButton";
-      this.resetButton.Size = new System.Drawing.Size(92, 23);
-      this.resetButton.TabIndex = 3;
-      this.resetButton.Text = "&Reset";
-      this.resetButton.UseVisualStyleBackColor = true;
-      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
-      // 
-      // abortButton
-      // 
-      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.abortButton.Enabled = false;
-      this.abortButton.Location = new System.Drawing.Point(98, 457);
-      this.abortButton.Name = "abortButton";
-      this.abortButton.Size = new System.Drawing.Size(92, 23);
-      this.abortButton.TabIndex = 2;
-      this.abortButton.Text = "&Abort";
-      this.abortButton.UseVisualStyleBackColor = true;
-      this.abortButton.Click += new System.EventHandler(this.abortButton_Click);
-      // 
-      // executeButton
-      // 
-      this.executeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.executeButton.Location = new System.Drawing.Point(0, 457);
-      this.executeButton.Name = "executeButton";
-      this.executeButton.Size = new System.Drawing.Size(92, 23);
-      this.executeButton.TabIndex = 1;
-      this.executeButton.Text = "&Execute";
-      this.executeButton.UseVisualStyleBackColor = true;
-      this.executeButton.Click += new System.EventHandler(this.executeButton_Click);
-      // 
-      // EngineBaseEditor
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.executionTimeTextBox);
-      this.Controls.Add(this.executionTimeLabel);
-      this.Controls.Add(this.splitContainer1);
-      this.Controls.Add(this.resetButton);
-      this.Controls.Add(this.abortButton);
-      this.Controls.Add(this.executeButton);
-      this.Name = "EngineBaseEditor";
-      this.Size = new System.Drawing.Size(640, 480);
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      this.splitContainer1.ResumeLayout(false);
-      this.operatorGraphGroupBox.ResumeLayout(false);
-      this.globalScopeGroupBox.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    protected System.Windows.Forms.TextBox executionTimeTextBox;
-    protected System.Windows.Forms.Label executionTimeLabel;
-    protected System.Windows.Forms.SplitContainer splitContainer1;
-    protected System.Windows.Forms.GroupBox operatorGraphGroupBox;
-    protected System.Windows.Forms.GroupBox globalScopeGroupBox;
-    protected System.Windows.Forms.Button resetButton;
-    protected System.Windows.Forms.Button abortButton;
-    protected System.Windows.Forms.Button executeButton;
-    protected HeuristicLab.Core.Views.OperatorGraphView operatorGraphView;
-    protected HeuristicLab.Core.Views.ScopeView scopeView;
-
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/EngineBaseEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseEditor.cs	(revision 2545)
+++ 	(revision )
@@ -1,173 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Common;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// Base class for editors of engines.
-  /// </summary>
-  [Content(typeof(EngineBase), true)]
-  public partial class EngineBaseEditor : EditorBase {
-    private int executionTimeCounter;
-
-    /// <summary>
-    /// Gets or sets the current engine.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.</remarks>
-    public IEngine Engine {
-      get { return (IEngine)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="EngineBaseEditor"/>.
-    /// </summary>
-    public EngineBaseEditor() {
-      InitializeComponent();
-    }
-
-    /// <summary>
-    /// Removes the event handlers from the underlying <see cref="IEngine"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void RemoveItemEvents() {
-      Engine.Initialized -= new EventHandler(Engine_Initialized);
-      Engine.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
-      Engine.ExecutionTimeChanged -= new EventHandler(Engine_ExecutionTimeChanged);
-      Engine.Finished -= new EventHandler(Engine_Finished);
-      operatorGraphView.OperatorGraph = null;
-      scopeView.Scope = null;
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds event handlers to the underlying <see cref="IEngine"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      Engine.Initialized += new EventHandler(Engine_Initialized);
-      Engine.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
-      Engine.ExecutionTimeChanged += new EventHandler(Engine_ExecutionTimeChanged);
-      Engine.Finished += new EventHandler(Engine_Finished);
-      operatorGraphView.OperatorGraph = Engine.OperatorGraph;
-      scopeView.Scope = Engine.GlobalScope;
-    }
-
-    /// <summary>
-    /// Updates all controls with the latest data of the model.
-    /// </summary>
-    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      abortButton.Enabled = false;
-      if (Engine == null) {
-        executeButton.Enabled = false;
-        resetButton.Enabled = false;
-        executionTimeTextBox.Enabled = false;
-      } else {
-        executeButton.Enabled = true;
-        resetButton.Enabled = true;
-        executionTimeCounter = 0;
-        executionTimeTextBox.Text = Engine.ExecutionTime.ToString();
-        executionTimeTextBox.Enabled = true;
-      }
-    }
-
-    #region Engine Events
-    private void Engine_Initialized(object sender, EventArgs e) {
-      Refresh();
-    }
-    private delegate void OnExceptionEventDelegate(object sender, EventArgs<Exception> e);
-    private void Engine_ExceptionOccurred(object sender, EventArgs<Exception> e) {
-      if (InvokeRequired)
-        Invoke(new OnExceptionEventDelegate(Engine_ExceptionOccurred), sender, e);
-      else
-        Auxiliary.ShowErrorMessageBox(e.Value);
-    }
-    private void Engine_ExecutionTimeChanged(object sender, EventArgs e) {
-      executionTimeCounter++;
-      if (executionTimeCounter == 1000)
-        UpdateExecutionTimeTextBox();
-    }
-    private void Engine_Finished(object sender, EventArgs e) {
-      UpdateExecutionTimeTextBox();
-      if (globalScopeGroupBox.Controls.Count > 0) {
-        ScopeView scopeEditor = (ScopeView)globalScopeGroupBox.Controls[0];
-        if (!scopeEditor.AutomaticUpdating)
-          scopeEditor.Refresh();
-      }
-      EnableDisableControls();
-    }
-    private void UpdateExecutionTimeTextBox() {
-      if (InvokeRequired)
-        Invoke(new MethodInvoker(UpdateExecutionTimeTextBox));
-      else {
-        executionTimeCounter = 0;
-        executionTimeTextBox.Text = Engine.ExecutionTime.ToString();
-      }
-    }
-    private void EnableDisableControls() {
-      if (InvokeRequired)
-        Invoke(new MethodInvoker(EnableDisableControls));
-      else {
-        executeButton.Enabled = true;
-        abortButton.Enabled = false;
-        resetButton.Enabled = true;
-        operatorGraphGroupBox.Enabled = true;
-        globalScopeGroupBox.Enabled = true;
-      }
-    }
-    #endregion
-
-    #region Button events
-    private void executeButton_Click(object sender, EventArgs e) {
-      executeButton.Enabled = false;
-      abortButton.Enabled = true;
-      resetButton.Enabled = false;
-      operatorGraphGroupBox.Enabled = false;
-      globalScopeGroupBox.Enabled = false;
-      Engine.Execute();
-    }
-    private void abortButton_Click(object sender, EventArgs e) {
-      Engine.Abort();
-    }
-    private void resetButton_Click(object sender, EventArgs e) {
-      Engine.Reset();
-      UpdateExecutionTimeTextBox();
-      if (globalScopeGroupBox.Controls.Count > 0) {
-        ScopeView scopeEditor = (ScopeView)globalScopeGroupBox.Controls[0];
-        if (!scopeEditor.AutomaticUpdating)
-          scopeEditor.Refresh();
-      }
-    }
-    #endregion
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/EngineBaseEditor.resx
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseEditor.resx	(revision 2545)
+++ 	(revision )
@@ -1,123 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-</root>
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.Designer.cs	(revision 2546)
@@ -0,0 +1,214 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Core.Views {
+  partial class EngineBaseView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.executionTimeTextBox = new System.Windows.Forms.TextBox();
+      this.executionTimeLabel = new System.Windows.Forms.Label();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.operatorGraphGroupBox = new System.Windows.Forms.GroupBox();
+      this.operatorGraphView = new HeuristicLab.Core.Views.OperatorGraphView();
+      this.globalScopeGroupBox = new System.Windows.Forms.GroupBox();
+      this.scopeView = new HeuristicLab.Core.Views.ScopeView();
+      this.resetButton = new System.Windows.Forms.Button();
+      this.abortButton = new System.Windows.Forms.Button();
+      this.executeButton = new System.Windows.Forms.Button();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.operatorGraphGroupBox.SuspendLayout();
+      this.globalScopeGroupBox.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // executionTimeTextBox
+      // 
+      this.executionTimeTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.executionTimeTextBox.Location = new System.Drawing.Point(499, 460);
+      this.executionTimeTextBox.Name = "executionTimeTextBox";
+      this.executionTimeTextBox.ReadOnly = true;
+      this.executionTimeTextBox.Size = new System.Drawing.Size(141, 20);
+      this.executionTimeTextBox.TabIndex = 5;
+      // 
+      // executionTimeLabel
+      // 
+      this.executionTimeLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.executionTimeLabel.AutoSize = true;
+      this.executionTimeLabel.Location = new System.Drawing.Point(496, 444);
+      this.executionTimeLabel.Name = "executionTimeLabel";
+      this.executionTimeLabel.Size = new System.Drawing.Size(83, 13);
+      this.executionTimeLabel.TabIndex = 4;
+      this.executionTimeLabel.Text = "&Execution Time:";
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.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.splitContainer1.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer1.Name = "splitContainer1";
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.operatorGraphGroupBox);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.globalScopeGroupBox);
+      this.splitContainer1.Size = new System.Drawing.Size(640, 441);
+      this.splitContainer1.SplitterDistance = 320;
+      this.splitContainer1.TabIndex = 0;
+      // 
+      // operatorGraphGroupBox
+      // 
+      this.operatorGraphGroupBox.Controls.Add(this.operatorGraphView);
+      this.operatorGraphGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.operatorGraphGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.operatorGraphGroupBox.Name = "operatorGraphGroupBox";
+      this.operatorGraphGroupBox.Size = new System.Drawing.Size(320, 441);
+      this.operatorGraphGroupBox.TabIndex = 0;
+      this.operatorGraphGroupBox.TabStop = false;
+      this.operatorGraphGroupBox.Text = "Operator &Graph";
+      // 
+      // operatorGraphView
+      // 
+      this.operatorGraphView.Caption = "Operator Graph";
+      this.operatorGraphView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.operatorGraphView.Location = new System.Drawing.Point(3, 16);
+      this.operatorGraphView.Name = "operatorGraphView";
+      this.operatorGraphView.OperatorGraph = null;
+      this.operatorGraphView.Size = new System.Drawing.Size(314, 422);
+      this.operatorGraphView.TabIndex = 0;
+      // 
+      // globalScopeGroupBox
+      // 
+      this.globalScopeGroupBox.Controls.Add(this.scopeView);
+      this.globalScopeGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.globalScopeGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.globalScopeGroupBox.Name = "globalScopeGroupBox";
+      this.globalScopeGroupBox.Size = new System.Drawing.Size(316, 441);
+      this.globalScopeGroupBox.TabIndex = 0;
+      this.globalScopeGroupBox.TabStop = false;
+      this.globalScopeGroupBox.Text = "Global &Scope";
+      // 
+      // scopeView
+      // 
+      this.scopeView.Caption = "Scope";
+      this.scopeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scopeView.Location = new System.Drawing.Point(3, 16);
+      this.scopeView.Name = "scopeView";
+      this.scopeView.Scope = null;
+      this.scopeView.Size = new System.Drawing.Size(310, 422);
+      this.scopeView.TabIndex = 0;
+      // 
+      // resetButton
+      // 
+      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.resetButton.Location = new System.Drawing.Point(196, 457);
+      this.resetButton.Name = "resetButton";
+      this.resetButton.Size = new System.Drawing.Size(92, 23);
+      this.resetButton.TabIndex = 3;
+      this.resetButton.Text = "&Reset";
+      this.resetButton.UseVisualStyleBackColor = true;
+      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
+      // 
+      // abortButton
+      // 
+      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.abortButton.Enabled = false;
+      this.abortButton.Location = new System.Drawing.Point(98, 457);
+      this.abortButton.Name = "abortButton";
+      this.abortButton.Size = new System.Drawing.Size(92, 23);
+      this.abortButton.TabIndex = 2;
+      this.abortButton.Text = "&Abort";
+      this.abortButton.UseVisualStyleBackColor = true;
+      this.abortButton.Click += new System.EventHandler(this.abortButton_Click);
+      // 
+      // executeButton
+      // 
+      this.executeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.executeButton.Location = new System.Drawing.Point(0, 457);
+      this.executeButton.Name = "executeButton";
+      this.executeButton.Size = new System.Drawing.Size(92, 23);
+      this.executeButton.TabIndex = 1;
+      this.executeButton.Text = "&Execute";
+      this.executeButton.UseVisualStyleBackColor = true;
+      this.executeButton.Click += new System.EventHandler(this.executeButton_Click);
+      // 
+      // EngineBaseEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.executionTimeTextBox);
+      this.Controls.Add(this.executionTimeLabel);
+      this.Controls.Add(this.splitContainer1);
+      this.Controls.Add(this.resetButton);
+      this.Controls.Add(this.abortButton);
+      this.Controls.Add(this.executeButton);
+      this.Name = "EngineBaseEditor";
+      this.Size = new System.Drawing.Size(640, 480);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.operatorGraphGroupBox.ResumeLayout(false);
+      this.globalScopeGroupBox.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    protected System.Windows.Forms.TextBox executionTimeTextBox;
+    protected System.Windows.Forms.Label executionTimeLabel;
+    protected System.Windows.Forms.SplitContainer splitContainer1;
+    protected System.Windows.Forms.GroupBox operatorGraphGroupBox;
+    protected System.Windows.Forms.GroupBox globalScopeGroupBox;
+    protected System.Windows.Forms.Button resetButton;
+    protected System.Windows.Forms.Button abortButton;
+    protected System.Windows.Forms.Button executeButton;
+    protected HeuristicLab.Core.Views.OperatorGraphView operatorGraphView;
+    protected HeuristicLab.Core.Views.ScopeView scopeView;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.cs	(revision 2546)
@@ -0,0 +1,173 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Core.Views {
+  /// <summary>
+  /// Base class for editors of engines.
+  /// </summary>
+  [Content(typeof(EngineBase), true)]
+  public partial class EngineBaseView : ItemViewBase {
+    private int executionTimeCounter;
+
+    /// <summary>
+    /// Gets or sets the current engine.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.</remarks>
+    public IEngine Engine {
+      get { return (IEngine)Item; }
+      set { base.Item = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="EngineBaseEditor"/>.
+    /// </summary>
+    public EngineBaseView() {
+      InitializeComponent();
+    }
+
+    /// <summary>
+    /// Removes the event handlers from the underlying <see cref="IEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void RemoveItemEvents() {
+      Engine.Initialized -= new EventHandler(Engine_Initialized);
+      Engine.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
+      Engine.ExecutionTimeChanged -= new EventHandler(Engine_ExecutionTimeChanged);
+      Engine.Finished -= new EventHandler(Engine_Finished);
+      operatorGraphView.OperatorGraph = null;
+      scopeView.Scope = null;
+      base.RemoveItemEvents();
+    }
+    /// <summary>
+    /// Adds event handlers to the underlying <see cref="IEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="ViewBase"/>.</remarks>
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      Engine.Initialized += new EventHandler(Engine_Initialized);
+      Engine.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
+      Engine.ExecutionTimeChanged += new EventHandler(Engine_ExecutionTimeChanged);
+      Engine.Finished += new EventHandler(Engine_Finished);
+      operatorGraphView.OperatorGraph = Engine.OperatorGraph;
+      scopeView.Scope = Engine.GlobalScope;
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      abortButton.Enabled = false;
+      if (Engine == null) {
+        executeButton.Enabled = false;
+        resetButton.Enabled = false;
+        executionTimeTextBox.Enabled = false;
+      } else {
+        executeButton.Enabled = true;
+        resetButton.Enabled = true;
+        executionTimeCounter = 0;
+        executionTimeTextBox.Text = Engine.ExecutionTime.ToString();
+        executionTimeTextBox.Enabled = true;
+      }
+    }
+
+    #region Engine Events
+    private void Engine_Initialized(object sender, EventArgs e) {
+      Refresh();
+    }
+    private delegate void OnExceptionEventDelegate(object sender, EventArgs<Exception> e);
+    private void Engine_ExceptionOccurred(object sender, EventArgs<Exception> e) {
+      if (InvokeRequired)
+        Invoke(new OnExceptionEventDelegate(Engine_ExceptionOccurred), sender, e);
+      else
+        Auxiliary.ShowErrorMessageBox(e.Value);
+    }
+    private void Engine_ExecutionTimeChanged(object sender, EventArgs e) {
+      executionTimeCounter++;
+      if (executionTimeCounter == 1000)
+        UpdateExecutionTimeTextBox();
+    }
+    private void Engine_Finished(object sender, EventArgs e) {
+      UpdateExecutionTimeTextBox();
+      if (globalScopeGroupBox.Controls.Count > 0) {
+        ScopeView scopeEditor = (ScopeView)globalScopeGroupBox.Controls[0];
+        if (!scopeEditor.AutomaticUpdating)
+          scopeEditor.Refresh();
+      }
+      EnableDisableControls();
+    }
+    private void UpdateExecutionTimeTextBox() {
+      if (InvokeRequired)
+        Invoke(new MethodInvoker(UpdateExecutionTimeTextBox));
+      else {
+        executionTimeCounter = 0;
+        executionTimeTextBox.Text = Engine.ExecutionTime.ToString();
+      }
+    }
+    private void EnableDisableControls() {
+      if (InvokeRequired)
+        Invoke(new MethodInvoker(EnableDisableControls));
+      else {
+        executeButton.Enabled = true;
+        abortButton.Enabled = false;
+        resetButton.Enabled = true;
+        operatorGraphGroupBox.Enabled = true;
+        globalScopeGroupBox.Enabled = true;
+      }
+    }
+    #endregion
+
+    #region Button events
+    private void executeButton_Click(object sender, EventArgs e) {
+      executeButton.Enabled = false;
+      abortButton.Enabled = true;
+      resetButton.Enabled = false;
+      operatorGraphGroupBox.Enabled = false;
+      globalScopeGroupBox.Enabled = false;
+      Engine.Execute();
+    }
+    private void abortButton_Click(object sender, EventArgs e) {
+      Engine.Abort();
+    }
+    private void resetButton_Click(object sender, EventArgs e) {
+      Engine.Reset();
+      UpdateExecutionTimeTextBox();
+      if (globalScopeGroupBox.Controls.Count > 0) {
+        ScopeView scopeEditor = (ScopeView)globalScopeGroupBox.Controls[0];
+        if (!scopeEditor.AutomaticUpdating)
+          scopeEditor.Refresh();
+      }
+    }
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.resx	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/EngineBaseView.resx	(revision 2546)
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/HeuristicLab.Core.Views-3.3.csproj	(revision 2546)
@@ -70,18 +70,12 @@
       <DependentUpon>ChooseTypeDialog.cs</DependentUpon>
     </Compile>
-    <Compile Include="EditorBase.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="EditorBase.Designer.cs">
-      <DependentUpon>EditorBase.cs</DependentUpon>
-    </Compile>
-    <Compile Include="EngineBaseEditor.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="EngineBaseEditor.Designer.cs">
-      <DependentUpon>EngineBaseEditor.cs</DependentUpon>
+    <Compile Include="EngineBaseView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="EngineBaseView.Designer.cs">
+      <DependentUpon>EngineBaseView.cs</DependentUpon>
     </Compile>
     <Compile Include="HeuristicLabCoreViewsPlugin.cs" />
-    <Compile Include="IEditor.cs" />
+    <Compile Include="IItemView.cs" />
     <Compile Include="ItemBaseView.cs">
       <SubType>UserControl</SubType>
@@ -90,5 +84,10 @@
       <DependentUpon>ItemBaseView.cs</DependentUpon>
     </Compile>
-    <Compile Include="IView.cs" />
+    <Compile Include="ItemViewBase.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="ItemViewBase.Designer.cs">
+      <DependentUpon>ItemViewBase.cs</DependentUpon>
+    </Compile>
     <Compile Include="OperatorBaseDescriptionView.cs">
       <SubType>UserControl</SubType>
@@ -121,9 +120,9 @@
       <DependentUpon>OperatorGraphView.cs</DependentUpon>
     </Compile>
-    <Compile Include="OperatorLibraryEditor.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="OperatorLibraryEditor.Designer.cs">
-      <DependentUpon>OperatorLibraryEditor.cs</DependentUpon>
+    <Compile Include="OperatorLibraryView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="OperatorLibraryView.Designer.cs">
+      <DependentUpon>OperatorLibraryView.cs</DependentUpon>
     </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
@@ -151,10 +150,4 @@
     <Compile Include="VariableView.Designer.cs">
       <DependentUpon>VariableView.cs</DependentUpon>
-    </Compile>
-    <Compile Include="ViewBase.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="ViewBase.Designer.cs">
-      <DependentUpon>ViewBase.cs</DependentUpon>
     </Compile>
   </ItemGroup>
@@ -205,9 +198,6 @@
       <DependentUpon>ChooseTypeDialog.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="EditorBase.resx">
-      <DependentUpon>EditorBase.cs</DependentUpon>
-    </EmbeddedResource>
-    <EmbeddedResource Include="EngineBaseEditor.resx">
-      <DependentUpon>EngineBaseEditor.cs</DependentUpon>
+    <EmbeddedResource Include="EngineBaseView.resx">
+      <DependentUpon>EngineBaseView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="ItemBaseView.resx">
@@ -229,6 +219,6 @@
       <DependentUpon>OperatorGraphView.cs</DependentUpon>
     </EmbeddedResource>
-    <EmbeddedResource Include="OperatorLibraryEditor.resx">
-      <DependentUpon>OperatorLibraryEditor.cs</DependentUpon>
+    <EmbeddedResource Include="OperatorLibraryView.resx">
+      <DependentUpon>OperatorLibraryView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="ScopeView.resx">
Index: unk/sources/HeuristicLab.Core.Views/3.3/IEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/IEditor.cs	(revision 2545)
+++ 	(revision )
@@ -1,58 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// Interface to represent an editor.
-  /// </summary>
-  public interface IEditor : IView {
-
-    /// <summary>
-    /// Gets or sets the filename.
-    /// </summary>
-    string Filename { get; set; }
-
-    /// <summary>
-    /// Gets or sets, it the contained item should be compressed.
-    /// </summary>
-    bool Compressed { get; set; }
-
-    /// <summary>
-    /// Saves the contained object to a file.
-    /// </summary>
-    /// <remarks>The filename to save the contained item to is given by <see cref="Filename"/>.</remarks>
-    void Save();
-
-    /// <summary>
-    /// Occurs when the filename was changed.
-    /// </summary>
-    event EventHandler FilenameChanged;
-
-    /// <summary>
-    /// Occurs after a save operation is finished.
-    /// </summary>
-    event EventHandler SaveFinished;
-  }
-}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/IItemView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/IItemView.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/IItemView.cs	(revision 2546)
@@ -0,0 +1,43 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Core.Views {
+  /// <summary>
+  /// An interface for all kinds visual representations of items (objects, operators...).
+  /// </summary>
+  public interface IItemView : IView {
+    /// <summary>
+    /// Gets the current item instance.
+    /// </summary>
+    IItem Item { get; }
+
+    /// <summary>
+    /// Occurs when the item was changed.
+    /// </summary>
+    event EventHandler ItemChanged;
+  }
+}
Index: unk/sources/HeuristicLab.Core.Views/3.3/IView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/IView.cs	(revision 2545)
+++ 	(revision )
@@ -1,42 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-using HeuristicLab.PluginInfrastructure;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// An interface for all kinds visual representations of items (objects, operators...).
-  /// </summary>
-  public interface IView : IControl, HeuristicLab.MainForm.IView{
-    /// <summary>
-    /// Gets the current item instance.
-    /// </summary>
-    IItem Item { get; }
-
-    /// <summary>
-    /// Occurs when the item was changed.
-    /// </summary>
-    event EventHandler ItemChanged;
-  }
-}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemBaseView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemBaseView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemBaseView.cs	(revision 2546)
@@ -34,5 +34,5 @@
   /// </summary>
   [Content(typeof(ItemBase), true)]
-  public partial class ItemBaseView : ViewBase {
+  public partial class ItemBaseView : ItemViewBase {
     /// <summary>
     /// Initializes a new instance of <see cref="ItemBaseView"/>.
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.Designer.cs	(revision 2546)
@@ -0,0 +1,57 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+
+namespace HeuristicLab.Core.Views {
+  partial class ItemViewBase {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (Item != null)
+        RemoveItemEvents();
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      components = new System.ComponentModel.Container();
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+    }
+
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ItemViewBase.cs	(revision 2546)
@@ -0,0 +1,167 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Xml;
+using System.Windows.Forms;
+using HeuristicLab.MainForm.WindowsForms;
+
+namespace HeuristicLab.Core.Views {
+  /// <summary>
+  /// Base class for all visual representations.
+  /// </summary>
+  public partial class ItemViewBase : ViewBase, IItemView {
+    private IItem myItem;
+    /// <summary>
+    /// Gets or sets the item to represent visually.
+    /// </summary>
+    /// <remarks>Calls <see cref="OnItemChanged"/>, <see cref="Refresh"/>, 
+    /// <see cref="RemoveItemEvents"/> (if the current item is not null) and 
+    /// <see cref="AddItemEvents"/> (if the new item is not null) in the setter.</remarks>
+    public IItem Item {
+      get { return myItem; }
+      protected set {
+        if (value != myItem) {
+          if (myItem != null)
+            RemoveItemEvents();
+          myItem = value;
+          if (myItem != null)
+            AddItemEvents();
+          OnItemChanged();
+          Refresh();
+        }
+      }
+    }
+    private string myCaption;
+    /// <summary>
+    /// Gets or sets the caption of the current instance.
+    /// </summary>
+    /// <remarks>Call <see cref="OnCaptionChanged"/> in the setter if a new item is set.</remarks>
+    public string Caption {
+      get { return myCaption; }
+      set {
+        if (value != myCaption) {
+          myCaption = value;
+          OnCaptionChanged();
+        }
+      }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="ViewBase"/> with the caption "View".
+    /// </summary>
+    public ItemViewBase() {
+      InitializeComponent();
+      Caption = "View";
+    }
+
+    /// <summary>
+    /// Removes the eventhandlers from the current instance.
+    /// </summary>
+    protected virtual void RemoveItemEvents() { }
+    /// <summary>
+    /// Adds eventhandlers to the current instance.
+    /// </summary>
+    protected virtual void AddItemEvents() { }
+
+    /// <summary>
+    /// Refreshes the current view.
+    /// </summary>
+    /// <remarks>Creates a new <see cref="MethodInvoker"/> if an invoke is required 
+    /// (see <see cref="Control.InvokeRequired"/>.<br/>
+    /// Otherwise calls <see cref="UpdateControls"/> and <see cref="Control.Refresh"/> of base class 
+    /// <see cref="System.Windows.Forms.UserControl"/>.</remarks>
+    public override void Refresh() {
+      if (InvokeRequired) {
+        Invoke(new MethodInvoker(Refresh));
+      } else {
+        UpdateControls();
+        base.Refresh();
+      }
+    }
+    /// <summary>
+    /// Updates the controls with the latest values of the model.
+    /// </summary>
+    protected virtual void UpdateControls() {
+      if (Item == null)
+        Caption = "View";
+      else
+        Caption = "View (" + Item.GetType().Name + ")";
+      
+    }
+
+    /// <summary>
+    /// Occurs when the current item was changed.
+    /// </summary>
+    public event EventHandler ItemChanged;
+    /// <summary>
+    /// Fires a new <c>ItemChanged</c> event.
+    /// </summary>
+    protected virtual void OnItemChanged() {
+      if (ItemChanged != null)
+        ItemChanged(this, new EventArgs());
+    }
+    /// <summary>
+    /// Occurs when the current caption was changed.
+    /// </summary>
+    public event EventHandler CaptionChanged;
+    /// <summary>
+    /// Fires a new <c>CaptionChanged</c> event.
+    /// </summary>
+    protected virtual void OnCaptionChanged() {
+      if (CaptionChanged != null)
+        CaptionChanged(this, new EventArgs());
+    }
+
+    /// <summary>
+    /// Asynchron call of GUI updating.
+    /// </summary>
+    /// <param name="method">The delegate to invoke.</param>
+    protected new void Invoke(Delegate method) {
+      // enforce context switch to improve GUI response time
+      System.Threading.Thread.Sleep(0);
+
+      // prevent blocking of worker thread in Invoke, if the control is disposed
+      IAsyncResult result = BeginInvoke(method);
+      while ((!result.AsyncWaitHandle.WaitOne(100, false)) && (!IsDisposed)) { }
+      if (!IsDisposed) EndInvoke(result);
+    }
+    /// <summary>
+    /// Asynchron call of GUI updating.
+    /// </summary>
+    /// <param name="method">The delegate to invoke.</param>
+    /// <param name="args">The invoke arguments.</param>
+    protected new void Invoke(Delegate method, params object[] args) {
+      // enforce context switch to improve GUI response time
+      System.Threading.Thread.Sleep(0);
+
+      // prevent blocking of worker thread in Invoke, if the control is disposed
+      IAsyncResult result = BeginInvoke(method, args);
+      while ((!result.AsyncWaitHandle.WaitOne(100, false)) && (!IsDisposed)) { }
+      if (!IsDisposed) EndInvoke(result);
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseDescriptionView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseDescriptionView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseDescriptionView.cs	(revision 2546)
@@ -32,5 +32,5 @@
   /// The visual representation of the description of operators.
   /// </summary>
-  public partial class OperatorBaseDescriptionView : ViewBase {
+  public partial class OperatorBaseDescriptionView : ItemViewBase {
     /// <summary>
     /// Gets or sets the operator whose description should be displayed.
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseVariableInfosView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseVariableInfosView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseVariableInfosView.cs	(revision 2546)
@@ -34,5 +34,5 @@
   /// The visual representation of the information of the variables of an operator.
   /// </summary>
-  public partial class OperatorBaseVariableInfosView : ViewBase {
+  public partial class OperatorBaseVariableInfosView : ItemViewBase {
     /// <summary>
     /// Gets or sets the operator whose variable infos should be represented visually.
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseVariablesView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseVariablesView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseVariablesView.cs	(revision 2546)
@@ -34,5 +34,5 @@
   /// The visual representation of the variables of an operator.
   /// </summary>
-  public partial class OperatorBaseVariablesView : ViewBase {
+  public partial class OperatorBaseVariablesView : ItemViewBase {
     private ChooseItemDialog chooseItemDialog;
 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorBaseView.cs	(revision 2546)
@@ -35,5 +35,5 @@
   /// </summary>
   [Content(typeof(OperatorBase), true)]
-  public partial class OperatorBaseView : ViewBase {
+  public partial class OperatorBaseView : ItemViewBase {
     /// <summary>
     /// Gets or sets the operator to represent visually. 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorGraphView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorGraphView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorGraphView.cs	(revision 2546)
@@ -36,5 +36,5 @@
   /// </summary>
   [Content(typeof(OperatorGraph), true)]
-  public partial class OperatorGraphView : ViewBase {
+  public partial class OperatorGraphView : ItemViewBase {
     private ChooseOperatorDialog chooseOperatorDialog;
     private Dictionary<IOperator, IList<TreeNode>> operatorNodeTable;
@@ -184,7 +184,6 @@
       if (operatorsListView.SelectedItems.Count == 1) {
         IOperator op = (IOperator)operatorsListView.SelectedItems[0].Tag;
-        IView view = (IView)MainFormManager.CreateDefaultView(op);
-        if (view != null)
-          PluginManager.ControlManager.ShowControl(view);
+        IView view = MainFormManager.CreateDefaultView(op);
+        if (view != null) MainFormManager.MainForm.ShowView(view);
       }
     }
@@ -376,5 +375,5 @@
       if (operatorsListView.SelectedItems.Count == 1) {
         IOperator op = (IOperator)operatorsListView.SelectedItems[0].Tag;
-        IView view = (IView)MainFormManager.CreateDefaultView(op);
+        IView view = MainFormManager.CreateDefaultView(op);
         if (view != null) {
           viewToolStripMenuItem.Enabled = true;
@@ -388,6 +387,6 @@
     }
     private void viewToolStripMenuItem_Click(object sender, EventArgs e) {
-      IView view = (IView)((ToolStripMenuItem)sender).Tag;
-      PluginManager.ControlManager.ShowControl(view);
+      IView view = ((ToolStripMenuItem)sender).Tag as IView;
+      if (view != null) MainFormManager.MainForm.ShowView(view);
     }
     private void initialOperatorToolStripMenuItem_Click(object sender, EventArgs e) {
@@ -408,5 +407,5 @@
       if (graphTreeView.SelectedNode != null) {
         IOperator op = (IOperator)graphTreeView.SelectedNode.Tag;
-        IView view = (IView)MainFormManager.CreateDefaultView(op);
+        IView view = MainFormManager.CreateDefaultView(op);
         if (view != null) {
           viewToolStripMenuItem1.Enabled = true;
Index: unk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryEditor.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,196 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Core.Views {
-  partial class OperatorLibraryEditor {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (chooseOperatorDialog != null) chooseOperatorDialog.Dispose();
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.components = new System.ComponentModel.Container();
-      this.operatorsGroupBox = new System.Windows.Forms.GroupBox();
-      this.operatorsTreeView = new System.Windows.Forms.TreeView();
-      this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
-      this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.removeButton = new System.Windows.Forms.Button();
-      this.addGroupButton = new System.Windows.Forms.Button();
-      this.addOperatorButton = new System.Windows.Forms.Button();
-      this.importButton = new System.Windows.Forms.Button();
-      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.operatorsGroupBox.SuspendLayout();
-      this.contextMenuStrip.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // operatorsGroupBox
-      // 
-      this.operatorsGroupBox.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.operatorsGroupBox.Controls.Add(this.operatorsTreeView);
-      this.operatorsGroupBox.Enabled = false;
-      this.operatorsGroupBox.Location = new System.Drawing.Point(0, 0);
-      this.operatorsGroupBox.Name = "operatorsGroupBox";
-      this.operatorsGroupBox.Size = new System.Drawing.Size(522, 366);
-      this.operatorsGroupBox.TabIndex = 0;
-      this.operatorsGroupBox.TabStop = false;
-      this.operatorsGroupBox.Text = "&Operators";
-      // 
-      // operatorsTreeView
-      // 
-      this.operatorsTreeView.AllowDrop = true;
-      this.operatorsTreeView.ContextMenuStrip = this.contextMenuStrip;
-      this.operatorsTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.operatorsTreeView.HideSelection = false;
-      this.operatorsTreeView.LabelEdit = true;
-      this.operatorsTreeView.Location = new System.Drawing.Point(3, 16);
-      this.operatorsTreeView.Name = "operatorsTreeView";
-      this.operatorsTreeView.ShowNodeToolTips = true;
-      this.operatorsTreeView.Size = new System.Drawing.Size(516, 347);
-      this.operatorsTreeView.TabIndex = 0;
-      this.operatorsTreeView.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.operatorsTreeView_AfterLabelEdit);
-      this.operatorsTreeView.DoubleClick += new System.EventHandler(this.operatorsTreeView_DoubleClick);
-      this.operatorsTreeView.DragDrop += new System.Windows.Forms.DragEventHandler(this.operatorsTreeView_DragDrop);
-      this.operatorsTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.operatorsTreeView_AfterSelect);
-      this.operatorsTreeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.operatorsTreeView_MouseDown);
-      this.operatorsTreeView.DragEnter += new System.Windows.Forms.DragEventHandler(this.operatorsTreeView_DragEnter);
-      this.operatorsTreeView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.operatorsTreeView_KeyDown);
-      this.operatorsTreeView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.operatorsTreeView_ItemDrag);
-      this.operatorsTreeView.DragOver += new System.Windows.Forms.DragEventHandler(this.operatorsTreeView_DragOver);
-      // 
-      // contextMenuStrip
-      // 
-      this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.viewToolStripMenuItem});
-      this.contextMenuStrip.Name = "contextMenuStrip";
-      this.contextMenuStrip.Size = new System.Drawing.Size(120, 26);
-      this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
-      // 
-      // viewToolStripMenuItem
-      // 
-      this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
-      this.viewToolStripMenuItem.Size = new System.Drawing.Size(119, 22);
-      this.viewToolStripMenuItem.Text = "&View...";
-      this.viewToolStripMenuItem.Click += new System.EventHandler(this.viewToolStripMenuItem_Click);
-      // 
-      // removeButton
-      // 
-      this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.removeButton.Enabled = false;
-      this.removeButton.Location = new System.Drawing.Point(220, 372);
-      this.removeButton.Name = "removeButton";
-      this.removeButton.Size = new System.Drawing.Size(104, 23);
-      this.removeButton.TabIndex = 3;
-      this.removeButton.Text = "&Remove";
-      this.removeButton.UseVisualStyleBackColor = true;
-      this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
-      // 
-      // addGroupButton
-      // 
-      this.addGroupButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.addGroupButton.Enabled = false;
-      this.addGroupButton.Location = new System.Drawing.Point(0, 372);
-      this.addGroupButton.Name = "addGroupButton";
-      this.addGroupButton.Size = new System.Drawing.Size(104, 23);
-      this.addGroupButton.TabIndex = 1;
-      this.addGroupButton.Text = "&Add &Group...";
-      this.addGroupButton.UseVisualStyleBackColor = true;
-      this.addGroupButton.Click += new System.EventHandler(this.addGroupButton_Click);
-      // 
-      // addOperatorButton
-      // 
-      this.addOperatorButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.addOperatorButton.Enabled = false;
-      this.addOperatorButton.Location = new System.Drawing.Point(110, 372);
-      this.addOperatorButton.Name = "addOperatorButton";
-      this.addOperatorButton.Size = new System.Drawing.Size(104, 23);
-      this.addOperatorButton.TabIndex = 2;
-      this.addOperatorButton.Text = "Add &Operator...";
-      this.addOperatorButton.UseVisualStyleBackColor = true;
-      this.addOperatorButton.Click += new System.EventHandler(this.addOperatorButton_Click);
-      // 
-      // importButton
-      // 
-      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.importButton.Location = new System.Drawing.Point(330, 372);
-      this.importButton.Name = "importButton";
-      this.importButton.Size = new System.Drawing.Size(104, 23);
-      this.importButton.TabIndex = 4;
-      this.importButton.Text = "&Import...";
-      this.importButton.UseVisualStyleBackColor = true;
-      this.importButton.Click += new System.EventHandler(this.importButton_Click);
-      // 
-      // openFileDialog
-      // 
-      this.openFileDialog.DefaultExt = "hl";
-      this.openFileDialog.FileName = "item";
-      this.openFileDialog.Filter = "HeuristicLab files|*.hl|All files|*.*";
-      this.openFileDialog.Title = "Import ...";
-      // 
-      // OperatorLibraryEditor
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.importButton);
-      this.Controls.Add(this.operatorsGroupBox);
-      this.Controls.Add(this.addGroupButton);
-      this.Controls.Add(this.removeButton);
-      this.Controls.Add(this.addOperatorButton);
-      this.Name = "OperatorLibraryEditor";
-      this.Size = new System.Drawing.Size(522, 395);
-      this.operatorsGroupBox.ResumeLayout(false);
-      this.contextMenuStrip.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.GroupBox operatorsGroupBox;
-    private System.Windows.Forms.TreeView operatorsTreeView;
-    private System.Windows.Forms.Button removeButton;
-    private System.Windows.Forms.Button addGroupButton;
-    private System.Windows.Forms.Button addOperatorButton;
-    private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
-    private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
-    private System.Windows.Forms.Button importButton;
-    private System.Windows.Forms.OpenFileDialog openFileDialog;
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryEditor.cs	(revision 2545)
+++ 	(revision )
@@ -1,348 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// Visual representation of the class <see cref="IOperatorLibrary"/>.
-  /// </summary>
-  [Content(typeof(OperatorLibrary), true)]
-  public partial class OperatorLibraryEditor : EditorBase {
-    private ChooseOperatorDialog chooseOperatorDialog;
-
-    /// <summary>
-    /// Gets or sets the operator library that should be displayed.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.</remarks>
-    public IOperatorLibrary OperatorLibrary {
-      get { return (IOperatorLibrary)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="OperatorLibraryEditor"/> with caption 
-    /// <c>Operator Library</c>.
-    /// </summary>
-    public OperatorLibraryEditor() {
-      InitializeComponent();
-      operatorsTreeView.TreeViewNodeSorter = new NodeSorter();
-      Caption = "Operator Library";
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="OperatorLibraryEditor"/> with the 
-    /// specified <paramref name="operatorLibrary"/>.
-    /// </summary>
-    /// <param name="operatorLibrary">The operator library to display.</param>
-    public OperatorLibraryEditor(IOperatorLibrary operatorLibrary)
-      : this() {
-      OperatorLibrary = operatorLibrary;
-    }
-
-    private class NodeSorter : IComparer {
-      public int Compare(object x, object y) {
-        TreeNode tx = x as TreeNode;
-        TreeNode ty = y as TreeNode;
-
-        int result = string.Compare(tx.Text, ty.Text);
-        if (result == 0)
-          result = tx.Index.CompareTo(ty.Index);
-        return result;
-      }
-    }
-
-    /// <summary>
-    /// Updates all controls with the latest data of the model.
-    /// </summary>
-    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      operatorsTreeView.Nodes.Clear();
-      addGroupButton.Enabled = false;
-      addOperatorButton.Enabled = false;
-      removeButton.Enabled = false;
-      if (OperatorLibrary == null) {
-        Caption = "Operator Library";
-        operatorsGroupBox.Enabled = false;
-      } else {
-        Caption = OperatorLibrary.Group.Name + " (" + OperatorLibrary.GetType().Name + ")";
-        operatorsGroupBox.Enabled = true;
-        operatorsTreeView.Nodes.Add(CreateTreeNode(OperatorLibrary.Group));
-        operatorsTreeView.Sort();
-      }
-    }
-
-    private TreeNode CreateTreeNode(IOperatorGroup group) {
-      TreeNode node = new TreeNode();
-      node.Text = group.Name;
-      node.ForeColor = Color.LightGray;
-      node.Tag = group;
-
-      foreach (IOperator op in group.Operators)
-        node.Nodes.Add(CreateTreeNode(op));
-      foreach (IOperatorGroup subGroup in group.SubGroups)
-        node.Nodes.Add(CreateTreeNode(subGroup));
-      return node;
-    }
-    private TreeNode CreateTreeNode(IOperator op) {
-      TreeNode node = new TreeNode();
-      node.Text = op.Name;
-      node.ToolTipText = op.GetType().Name;
-      node.Tag = op;
-      return node;
-    }
-    private void RemoveTreeNode(TreeNode node) {
-      if (node.Tag is IOperatorGroup) {
-        IOperatorGroup group = node.Tag as IOperatorGroup;
-        IOperatorGroup parent = node.Parent.Tag as IOperatorGroup;
-        parent.RemoveSubGroup(group);
-      } else if (node.Tag is IOperator) {
-        IOperator op = node.Tag as IOperator;
-        IOperatorGroup group = node.Parent.Tag as IOperatorGroup;
-        group.RemoveOperator(op);
-      }
-      node.Remove();
-      EnableDisableButtons();
-    }
-
-    private void EnableDisableButtons() {
-      addGroupButton.Enabled = false;
-      addOperatorButton.Enabled = false;
-      removeButton.Enabled = false;
-      operatorsTreeView.Focus();
-
-      if (operatorsTreeView.SelectedNode != null) {
-        if (operatorsTreeView.SelectedNode.Parent != null)
-          removeButton.Enabled = true;
-        if (operatorsTreeView.SelectedNode.Tag is IOperatorGroup) {
-          addGroupButton.Enabled = true;
-          addOperatorButton.Enabled = true;
-        }
-      }
-    }
-
-    private void MergeOperatorLibrary(IOperatorGroup src, IOperatorGroup dest) {
-      foreach(IOperator op in src.Operators) {
-        if(!Contains(dest, op)) {
-          dest.AddOperator(op);
-        }
-      }
-
-      foreach(OperatorGroup group in src.SubGroups) {
-        bool mergedIntoExistingGroup = false;
-        // try to find a group in dest with matching name
-        foreach(OperatorGroup destGroup in dest.SubGroups) {
-          if(group.Name == destGroup.Name) {
-            MergeOperatorLibrary(group, destGroup);
-            mergedIntoExistingGroup = true;
-            break;
-          }
-        }
-        if(!mergedIntoExistingGroup) {
-          OperatorGroup newGroup = new OperatorGroup();
-          newGroup.Name = group.Name;
-          dest.AddSubGroup(newGroup);
-          MergeOperatorLibrary(group, newGroup);
-        }
-      }
-    }
-
-    private bool Contains(IOperatorGroup group, IOperator op) {
-      foreach(IOperator destOp in group.Operators) {
-        if(op.Name == destOp.Name) {
-          return true;
-        }
-      }
-      return false;
-    }
-
-
-    #region TreeView Events
-    private void operatorsTreeView_AfterSelect(object sender, TreeViewEventArgs e) {
-      EnableDisableButtons();
-    }
-    private void operatorsTreeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
-      e.CancelEdit = false;
-
-      string name = e.Label;
-      if (name != null) {
-        if (e.Node.Tag is IOperatorGroup)
-          ((IOperatorGroup)e.Node.Tag).Name = name;
-        else if (e.Node.Tag is IOperator)
-          ((IOperator)e.Node.Tag).Name = name;
-      }
-    }
-    private void operatorsTreeView_DoubleClick(object sender, EventArgs e) {
-      if (operatorsTreeView.SelectedNode != null) {
-        IOperator op = operatorsTreeView.SelectedNode.Tag as IOperator;
-        if (op != null) {
-          IView view = (IView)MainFormManager.CreateDefaultView(op);
-          if (view != null)
-            PluginManager.ControlManager.ShowControl(view);
-        }
-      }
-    }
-    #endregion
-
-    #region Button Events
-    private void addOperatorButton_Click(object sender, EventArgs e) {
-      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
-      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
-        TreeNode node = operatorsTreeView.SelectedNode;
-        IOperatorGroup group = node.Tag as IOperatorGroup;
-        group.AddOperator(chooseOperatorDialog.Operator);
-        node.Nodes.Add(CreateTreeNode(chooseOperatorDialog.Operator));
-        operatorsTreeView.Sort();
-        EnableDisableButtons();
-      }
-    }
-    private void addGroupButton_Click(object sender, EventArgs e) {
-      TreeNode node = operatorsTreeView.SelectedNode;
-      IOperatorGroup newGroup = new OperatorGroup();
-      IOperatorGroup group = node.Tag as OperatorGroup;
-      group.AddSubGroup(newGroup);
-      node.Nodes.Add(CreateTreeNode(newGroup));
-      operatorsTreeView.Sort();
-      EnableDisableButtons();
-    }
-    private void removeButton_Click(object sender, EventArgs e) {
-      TreeNode node = operatorsTreeView.SelectedNode;
-      RemoveTreeNode(node);
-    }
-    private void importButton_Click(object sender, EventArgs e) {
-      if(openFileDialog.ShowDialog() == DialogResult.OK) {
-        IOperatorLibrary loadedLibrary = (PersistenceManager.Load(openFileDialog.FileName) as IOperatorLibrary);
-        if(loadedLibrary == null) {
-          Auxiliary.ShowErrorMessageBox("The selected file does not contain an operator library");
-        } else {
-          MergeOperatorLibrary(loadedLibrary.Group, OperatorLibrary.Group);
-          Refresh();
-        }
-      }
-    }
-    #endregion
-
-    #region Key Events
-    private void operatorsTreeView_KeyDown(object sender, KeyEventArgs e) {
-      TreeNode node = operatorsTreeView.SelectedNode;
-      if ((e.KeyCode == Keys.Delete) && (node != null) && (node.Parent != null))
-        RemoveTreeNode(operatorsTreeView.SelectedNode);
-      if ((e.KeyCode == Keys.F2) && (node != null))
-        node.BeginEdit();
-    }
-    #endregion
-
-
-    #region Mouse Events
-    private void operatorsTreeView_MouseDown(object sender, MouseEventArgs e) {
-      if (e.Button != MouseButtons.Right) return;
-      TreeNode clickedNode = operatorsTreeView.GetNodeAt(e.X, e.Y);
-      if (clickedNode != null) {
-        operatorsTreeView.SelectedNode = clickedNode;
-        operatorsTreeView.Refresh();
-      }
-    }
-    #endregion
-
-
-    #region Context Menu Events
-    private void contextMenuStrip_Opening(object sender, CancelEventArgs e) {
-      viewToolStripMenuItem.Enabled = false;
-      if (operatorsTreeView.SelectedNode != null) {
-        IOperator op = operatorsTreeView.SelectedNode.Tag as IOperator;
-        if (op != null) {
-          IView view = (IView)MainFormManager.CreateDefaultView(op);
-          if (view != null) {
-            viewToolStripMenuItem.Enabled = true;
-            viewToolStripMenuItem.Tag = view;
-          }
-        }
-      }
-    }
-    private void viewToolStripMenuItem_Click(object sender, EventArgs e) {
-      IView view = (IView)viewToolStripMenuItem.Tag;
-      PluginManager.ControlManager.ShowControl(view);
-    }
-    #endregion
-
-    #region Drag and Drop Events
-    private void operatorsTreeView_ItemDrag(object sender, ItemDragEventArgs e) {
-      TreeNode node = (TreeNode)e.Item;
-      IOperator op = node.Tag as IOperator;
-      if (op != null) {
-        DataObject data = new DataObject();
-        data.SetData("IOperator", op);
-        data.SetData("DragSource", operatorsTreeView);
-        DoDragDrop(data, DragDropEffects.Copy);
-      }
-    }
-    private void operatorsTreeView_DragEnter(object sender, DragEventArgs e) {
-      e.Effect = DragDropEffects.None;
-      if (e.Data.GetDataPresent("IOperator")) {
-        Point p = operatorsTreeView.PointToClient(new Point(e.X, e.Y));
-        TreeNode node = operatorsTreeView.GetNodeAt(p);
-        if ((node != null) && (node.Tag is IOperatorGroup))
-          e.Effect = DragDropEffects.Copy;
-      }
-    }
-    private void operatorsTreeView_DragOver(object sender, DragEventArgs e) {
-      e.Effect = DragDropEffects.None;
-      if (e.Data.GetDataPresent("IOperator")) {
-        Point p = operatorsTreeView.PointToClient(new Point(e.X, e.Y));
-        TreeNode node = operatorsTreeView.GetNodeAt(p);
-        if ((node != null) && (node.Tag is IOperatorGroup))
-          e.Effect = DragDropEffects.Copy;
-      }
-    }
-    private void operatorsTreeView_DragDrop(object sender, DragEventArgs e) {
-      if (e.Effect != DragDropEffects.None) {
-        if (e.Data.GetDataPresent("IOperator")) {
-          IOperator op = (IOperator)e.Data.GetData("IOperator");
-          Point p = operatorsTreeView.PointToClient(new Point(e.X, e.Y));
-          TreeNode node = operatorsTreeView.GetNodeAt(p);
-          if (node != null) {
-            op = (IOperator)op.Clone();
-
-            while (op.SubOperators.Count > 0)
-              op.RemoveSubOperator(0);
-
-            IOperatorGroup group = (IOperatorGroup)node.Tag;
-            group.AddOperator(op);
-            node.Nodes.Add(CreateTreeNode(op));
-            operatorsTreeView.Sort();
-            EnableDisableButtons();
-          }
-        }
-      }
-    }
-    #endregion
-
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryEditor.resx
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryEditor.resx	(revision 2545)
+++ 	(revision )
@@ -1,129 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>17, 17</value>
-  </metadata>
-  <metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>139, 17</value>
-  </metadata>
-  <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>277, 17</value>
-  </metadata>
-</root>
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.Designer.cs	(revision 2546)
@@ -0,0 +1,196 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Core.Views {
+  partial class OperatorLibraryView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (chooseOperatorDialog != null) chooseOperatorDialog.Dispose();
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      this.operatorsGroupBox = new System.Windows.Forms.GroupBox();
+      this.operatorsTreeView = new System.Windows.Forms.TreeView();
+      this.contextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components);
+      this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.removeButton = new System.Windows.Forms.Button();
+      this.addGroupButton = new System.Windows.Forms.Button();
+      this.addOperatorButton = new System.Windows.Forms.Button();
+      this.importButton = new System.Windows.Forms.Button();
+      this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
+      this.operatorsGroupBox.SuspendLayout();
+      this.contextMenuStrip.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // operatorsGroupBox
+      // 
+      this.operatorsGroupBox.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.operatorsGroupBox.Controls.Add(this.operatorsTreeView);
+      this.operatorsGroupBox.Enabled = false;
+      this.operatorsGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.operatorsGroupBox.Name = "operatorsGroupBox";
+      this.operatorsGroupBox.Size = new System.Drawing.Size(522, 366);
+      this.operatorsGroupBox.TabIndex = 0;
+      this.operatorsGroupBox.TabStop = false;
+      this.operatorsGroupBox.Text = "&Operators";
+      // 
+      // operatorsTreeView
+      // 
+      this.operatorsTreeView.AllowDrop = true;
+      this.operatorsTreeView.ContextMenuStrip = this.contextMenuStrip;
+      this.operatorsTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.operatorsTreeView.HideSelection = false;
+      this.operatorsTreeView.LabelEdit = true;
+      this.operatorsTreeView.Location = new System.Drawing.Point(3, 16);
+      this.operatorsTreeView.Name = "operatorsTreeView";
+      this.operatorsTreeView.ShowNodeToolTips = true;
+      this.operatorsTreeView.Size = new System.Drawing.Size(516, 347);
+      this.operatorsTreeView.TabIndex = 0;
+      this.operatorsTreeView.AfterLabelEdit += new System.Windows.Forms.NodeLabelEditEventHandler(this.operatorsTreeView_AfterLabelEdit);
+      this.operatorsTreeView.DoubleClick += new System.EventHandler(this.operatorsTreeView_DoubleClick);
+      this.operatorsTreeView.DragDrop += new System.Windows.Forms.DragEventHandler(this.operatorsTreeView_DragDrop);
+      this.operatorsTreeView.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.operatorsTreeView_AfterSelect);
+      this.operatorsTreeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.operatorsTreeView_MouseDown);
+      this.operatorsTreeView.DragEnter += new System.Windows.Forms.DragEventHandler(this.operatorsTreeView_DragEnter);
+      this.operatorsTreeView.KeyDown += new System.Windows.Forms.KeyEventHandler(this.operatorsTreeView_KeyDown);
+      this.operatorsTreeView.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.operatorsTreeView_ItemDrag);
+      this.operatorsTreeView.DragOver += new System.Windows.Forms.DragEventHandler(this.operatorsTreeView_DragOver);
+      // 
+      // contextMenuStrip
+      // 
+      this.contextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
+            this.viewToolStripMenuItem});
+      this.contextMenuStrip.Name = "contextMenuStrip";
+      this.contextMenuStrip.Size = new System.Drawing.Size(120, 26);
+      this.contextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.contextMenuStrip_Opening);
+      // 
+      // viewToolStripMenuItem
+      // 
+      this.viewToolStripMenuItem.Name = "viewToolStripMenuItem";
+      this.viewToolStripMenuItem.Size = new System.Drawing.Size(119, 22);
+      this.viewToolStripMenuItem.Text = "&View...";
+      this.viewToolStripMenuItem.Click += new System.EventHandler(this.viewToolStripMenuItem_Click);
+      // 
+      // removeButton
+      // 
+      this.removeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.removeButton.Enabled = false;
+      this.removeButton.Location = new System.Drawing.Point(220, 372);
+      this.removeButton.Name = "removeButton";
+      this.removeButton.Size = new System.Drawing.Size(104, 23);
+      this.removeButton.TabIndex = 3;
+      this.removeButton.Text = "&Remove";
+      this.removeButton.UseVisualStyleBackColor = true;
+      this.removeButton.Click += new System.EventHandler(this.removeButton_Click);
+      // 
+      // addGroupButton
+      // 
+      this.addGroupButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.addGroupButton.Enabled = false;
+      this.addGroupButton.Location = new System.Drawing.Point(0, 372);
+      this.addGroupButton.Name = "addGroupButton";
+      this.addGroupButton.Size = new System.Drawing.Size(104, 23);
+      this.addGroupButton.TabIndex = 1;
+      this.addGroupButton.Text = "&Add &Group...";
+      this.addGroupButton.UseVisualStyleBackColor = true;
+      this.addGroupButton.Click += new System.EventHandler(this.addGroupButton_Click);
+      // 
+      // addOperatorButton
+      // 
+      this.addOperatorButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.addOperatorButton.Enabled = false;
+      this.addOperatorButton.Location = new System.Drawing.Point(110, 372);
+      this.addOperatorButton.Name = "addOperatorButton";
+      this.addOperatorButton.Size = new System.Drawing.Size(104, 23);
+      this.addOperatorButton.TabIndex = 2;
+      this.addOperatorButton.Text = "Add &Operator...";
+      this.addOperatorButton.UseVisualStyleBackColor = true;
+      this.addOperatorButton.Click += new System.EventHandler(this.addOperatorButton_Click);
+      // 
+      // importButton
+      // 
+      this.importButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.importButton.Location = new System.Drawing.Point(330, 372);
+      this.importButton.Name = "importButton";
+      this.importButton.Size = new System.Drawing.Size(104, 23);
+      this.importButton.TabIndex = 4;
+      this.importButton.Text = "&Import...";
+      this.importButton.UseVisualStyleBackColor = true;
+      this.importButton.Click += new System.EventHandler(this.importButton_Click);
+      // 
+      // openFileDialog
+      // 
+      this.openFileDialog.DefaultExt = "hl";
+      this.openFileDialog.FileName = "item";
+      this.openFileDialog.Filter = "HeuristicLab files|*.hl|All files|*.*";
+      this.openFileDialog.Title = "Import ...";
+      // 
+      // OperatorLibraryEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.importButton);
+      this.Controls.Add(this.operatorsGroupBox);
+      this.Controls.Add(this.addGroupButton);
+      this.Controls.Add(this.removeButton);
+      this.Controls.Add(this.addOperatorButton);
+      this.Name = "OperatorLibraryEditor";
+      this.Size = new System.Drawing.Size(522, 395);
+      this.operatorsGroupBox.ResumeLayout(false);
+      this.contextMenuStrip.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.GroupBox operatorsGroupBox;
+    private System.Windows.Forms.TreeView operatorsTreeView;
+    private System.Windows.Forms.Button removeButton;
+    private System.Windows.Forms.Button addGroupButton;
+    private System.Windows.Forms.Button addOperatorButton;
+    private System.Windows.Forms.ContextMenuStrip contextMenuStrip;
+    private System.Windows.Forms.ToolStripMenuItem viewToolStripMenuItem;
+    private System.Windows.Forms.Button importButton;
+    private System.Windows.Forms.OpenFileDialog openFileDialog;
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.cs	(revision 2546)
@@ -0,0 +1,347 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Core.Views {
+  /// <summary>
+  /// Visual representation of the class <see cref="IOperatorLibrary"/>.
+  /// </summary>
+  [Content(typeof(OperatorLibrary), true)]
+  public partial class OperatorLibraryView : ItemViewBase {
+    private ChooseOperatorDialog chooseOperatorDialog;
+
+    /// <summary>
+    /// Gets or sets the operator library that should be displayed.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.</remarks>
+    public IOperatorLibrary OperatorLibrary {
+      get { return (IOperatorLibrary)Item; }
+      set { base.Item = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="OperatorLibraryEditor"/> with caption 
+    /// <c>Operator Library</c>.
+    /// </summary>
+    public OperatorLibraryView() {
+      InitializeComponent();
+      operatorsTreeView.TreeViewNodeSorter = new NodeSorter();
+      Caption = "Operator Library";
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="OperatorLibraryEditor"/> with the 
+    /// specified <paramref name="operatorLibrary"/>.
+    /// </summary>
+    /// <param name="operatorLibrary">The operator library to display.</param>
+    public OperatorLibraryView(IOperatorLibrary operatorLibrary)
+      : this() {
+      OperatorLibrary = operatorLibrary;
+    }
+
+    private class NodeSorter : IComparer {
+      public int Compare(object x, object y) {
+        TreeNode tx = x as TreeNode;
+        TreeNode ty = y as TreeNode;
+
+        int result = string.Compare(tx.Text, ty.Text);
+        if (result == 0)
+          result = tx.Index.CompareTo(ty.Index);
+        return result;
+      }
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      operatorsTreeView.Nodes.Clear();
+      addGroupButton.Enabled = false;
+      addOperatorButton.Enabled = false;
+      removeButton.Enabled = false;
+      if (OperatorLibrary == null) {
+        Caption = "Operator Library";
+        operatorsGroupBox.Enabled = false;
+      } else {
+        Caption = OperatorLibrary.Group.Name + " (" + OperatorLibrary.GetType().Name + ")";
+        operatorsGroupBox.Enabled = true;
+        operatorsTreeView.Nodes.Add(CreateTreeNode(OperatorLibrary.Group));
+        operatorsTreeView.Sort();
+      }
+    }
+
+    private TreeNode CreateTreeNode(IOperatorGroup group) {
+      TreeNode node = new TreeNode();
+      node.Text = group.Name;
+      node.ForeColor = Color.LightGray;
+      node.Tag = group;
+
+      foreach (IOperator op in group.Operators)
+        node.Nodes.Add(CreateTreeNode(op));
+      foreach (IOperatorGroup subGroup in group.SubGroups)
+        node.Nodes.Add(CreateTreeNode(subGroup));
+      return node;
+    }
+    private TreeNode CreateTreeNode(IOperator op) {
+      TreeNode node = new TreeNode();
+      node.Text = op.Name;
+      node.ToolTipText = op.GetType().Name;
+      node.Tag = op;
+      return node;
+    }
+    private void RemoveTreeNode(TreeNode node) {
+      if (node.Tag is IOperatorGroup) {
+        IOperatorGroup group = node.Tag as IOperatorGroup;
+        IOperatorGroup parent = node.Parent.Tag as IOperatorGroup;
+        parent.RemoveSubGroup(group);
+      } else if (node.Tag is IOperator) {
+        IOperator op = node.Tag as IOperator;
+        IOperatorGroup group = node.Parent.Tag as IOperatorGroup;
+        group.RemoveOperator(op);
+      }
+      node.Remove();
+      EnableDisableButtons();
+    }
+
+    private void EnableDisableButtons() {
+      addGroupButton.Enabled = false;
+      addOperatorButton.Enabled = false;
+      removeButton.Enabled = false;
+      operatorsTreeView.Focus();
+
+      if (operatorsTreeView.SelectedNode != null) {
+        if (operatorsTreeView.SelectedNode.Parent != null)
+          removeButton.Enabled = true;
+        if (operatorsTreeView.SelectedNode.Tag is IOperatorGroup) {
+          addGroupButton.Enabled = true;
+          addOperatorButton.Enabled = true;
+        }
+      }
+    }
+
+    private void MergeOperatorLibrary(IOperatorGroup src, IOperatorGroup dest) {
+      foreach(IOperator op in src.Operators) {
+        if(!Contains(dest, op)) {
+          dest.AddOperator(op);
+        }
+      }
+
+      foreach(OperatorGroup group in src.SubGroups) {
+        bool mergedIntoExistingGroup = false;
+        // try to find a group in dest with matching name
+        foreach(OperatorGroup destGroup in dest.SubGroups) {
+          if(group.Name == destGroup.Name) {
+            MergeOperatorLibrary(group, destGroup);
+            mergedIntoExistingGroup = true;
+            break;
+          }
+        }
+        if(!mergedIntoExistingGroup) {
+          OperatorGroup newGroup = new OperatorGroup();
+          newGroup.Name = group.Name;
+          dest.AddSubGroup(newGroup);
+          MergeOperatorLibrary(group, newGroup);
+        }
+      }
+    }
+
+    private bool Contains(IOperatorGroup group, IOperator op) {
+      foreach(IOperator destOp in group.Operators) {
+        if(op.Name == destOp.Name) {
+          return true;
+        }
+      }
+      return false;
+    }
+
+
+    #region TreeView Events
+    private void operatorsTreeView_AfterSelect(object sender, TreeViewEventArgs e) {
+      EnableDisableButtons();
+    }
+    private void operatorsTreeView_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) {
+      e.CancelEdit = false;
+
+      string name = e.Label;
+      if (name != null) {
+        if (e.Node.Tag is IOperatorGroup)
+          ((IOperatorGroup)e.Node.Tag).Name = name;
+        else if (e.Node.Tag is IOperator)
+          ((IOperator)e.Node.Tag).Name = name;
+      }
+    }
+    private void operatorsTreeView_DoubleClick(object sender, EventArgs e) {
+      if (operatorsTreeView.SelectedNode != null) {
+        IOperator op = operatorsTreeView.SelectedNode.Tag as IOperator;
+        if (op != null) {
+          IView view = MainFormManager.CreateDefaultView(op);
+          if (view != null) MainFormManager.MainForm.ShowView(view);
+        }
+      }
+    }
+    #endregion
+
+    #region Button Events
+    private void addOperatorButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        TreeNode node = operatorsTreeView.SelectedNode;
+        IOperatorGroup group = node.Tag as IOperatorGroup;
+        group.AddOperator(chooseOperatorDialog.Operator);
+        node.Nodes.Add(CreateTreeNode(chooseOperatorDialog.Operator));
+        operatorsTreeView.Sort();
+        EnableDisableButtons();
+      }
+    }
+    private void addGroupButton_Click(object sender, EventArgs e) {
+      TreeNode node = operatorsTreeView.SelectedNode;
+      IOperatorGroup newGroup = new OperatorGroup();
+      IOperatorGroup group = node.Tag as OperatorGroup;
+      group.AddSubGroup(newGroup);
+      node.Nodes.Add(CreateTreeNode(newGroup));
+      operatorsTreeView.Sort();
+      EnableDisableButtons();
+    }
+    private void removeButton_Click(object sender, EventArgs e) {
+      TreeNode node = operatorsTreeView.SelectedNode;
+      RemoveTreeNode(node);
+    }
+    private void importButton_Click(object sender, EventArgs e) {
+      if(openFileDialog.ShowDialog() == DialogResult.OK) {
+        IOperatorLibrary loadedLibrary = (PersistenceManager.Load(openFileDialog.FileName) as IOperatorLibrary);
+        if(loadedLibrary == null) {
+          Auxiliary.ShowErrorMessageBox("The selected file does not contain an operator library");
+        } else {
+          MergeOperatorLibrary(loadedLibrary.Group, OperatorLibrary.Group);
+          Refresh();
+        }
+      }
+    }
+    #endregion
+
+    #region Key Events
+    private void operatorsTreeView_KeyDown(object sender, KeyEventArgs e) {
+      TreeNode node = operatorsTreeView.SelectedNode;
+      if ((e.KeyCode == Keys.Delete) && (node != null) && (node.Parent != null))
+        RemoveTreeNode(operatorsTreeView.SelectedNode);
+      if ((e.KeyCode == Keys.F2) && (node != null))
+        node.BeginEdit();
+    }
+    #endregion
+
+
+    #region Mouse Events
+    private void operatorsTreeView_MouseDown(object sender, MouseEventArgs e) {
+      if (e.Button != MouseButtons.Right) return;
+      TreeNode clickedNode = operatorsTreeView.GetNodeAt(e.X, e.Y);
+      if (clickedNode != null) {
+        operatorsTreeView.SelectedNode = clickedNode;
+        operatorsTreeView.Refresh();
+      }
+    }
+    #endregion
+
+
+    #region Context Menu Events
+    private void contextMenuStrip_Opening(object sender, CancelEventArgs e) {
+      viewToolStripMenuItem.Enabled = false;
+      if (operatorsTreeView.SelectedNode != null) {
+        IOperator op = operatorsTreeView.SelectedNode.Tag as IOperator;
+        if (op != null) {
+          IItemView view = (IItemView)MainFormManager.CreateDefaultView(op);
+          if (view != null) {
+            viewToolStripMenuItem.Enabled = true;
+            viewToolStripMenuItem.Tag = view;
+          }
+        }
+      }
+    }
+    private void viewToolStripMenuItem_Click(object sender, EventArgs e) {
+      IView view = viewToolStripMenuItem.Tag as IView;
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    #endregion
+
+    #region Drag and Drop Events
+    private void operatorsTreeView_ItemDrag(object sender, ItemDragEventArgs e) {
+      TreeNode node = (TreeNode)e.Item;
+      IOperator op = node.Tag as IOperator;
+      if (op != null) {
+        DataObject data = new DataObject();
+        data.SetData("IOperator", op);
+        data.SetData("DragSource", operatorsTreeView);
+        DoDragDrop(data, DragDropEffects.Copy);
+      }
+    }
+    private void operatorsTreeView_DragEnter(object sender, DragEventArgs e) {
+      e.Effect = DragDropEffects.None;
+      if (e.Data.GetDataPresent("IOperator")) {
+        Point p = operatorsTreeView.PointToClient(new Point(e.X, e.Y));
+        TreeNode node = operatorsTreeView.GetNodeAt(p);
+        if ((node != null) && (node.Tag is IOperatorGroup))
+          e.Effect = DragDropEffects.Copy;
+      }
+    }
+    private void operatorsTreeView_DragOver(object sender, DragEventArgs e) {
+      e.Effect = DragDropEffects.None;
+      if (e.Data.GetDataPresent("IOperator")) {
+        Point p = operatorsTreeView.PointToClient(new Point(e.X, e.Y));
+        TreeNode node = operatorsTreeView.GetNodeAt(p);
+        if ((node != null) && (node.Tag is IOperatorGroup))
+          e.Effect = DragDropEffects.Copy;
+      }
+    }
+    private void operatorsTreeView_DragDrop(object sender, DragEventArgs e) {
+      if (e.Effect != DragDropEffects.None) {
+        if (e.Data.GetDataPresent("IOperator")) {
+          IOperator op = (IOperator)e.Data.GetData("IOperator");
+          Point p = operatorsTreeView.PointToClient(new Point(e.X, e.Y));
+          TreeNode node = operatorsTreeView.GetNodeAt(p);
+          if (node != null) {
+            op = (IOperator)op.Clone();
+
+            while (op.SubOperators.Count > 0)
+              op.RemoveSubOperator(0);
+
+            IOperatorGroup group = (IOperatorGroup)node.Tag;
+            group.AddOperator(op);
+            node.Nodes.Add(CreateTreeNode(op));
+            operatorsTreeView.Sort();
+            EnableDisableButtons();
+          }
+        }
+      }
+    }
+    #endregion
+
+  }
+}
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.resx
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.resx	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/OperatorLibraryView.resx	(revision 2546)
@@ -0,0 +1,129 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <metadata name="saveFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <metadata name="contextMenuStrip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>139, 17</value>
+  </metadata>
+  <metadata name="openFileDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>277, 17</value>
+  </metadata>
+</root>
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/ScopeView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ScopeView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/ScopeView.cs	(revision 2546)
@@ -36,5 +36,5 @@
   /// </summary>
   [Content(typeof(Scope), true)]
-  public partial class ScopeView : ViewBase {
+  public partial class ScopeView : ItemViewBase {
     private Dictionary<IScope, TreeNode> scopeNodeTable;
     private Dictionary<IScope, bool> scopeExpandedTable;
@@ -133,5 +133,5 @@
       if(scopesTreeView.SelectedNode != null && scopesTreeView.SelectedNode.Tag != null) {
         IScope scope = (IScope)scopesTreeView.SelectedNode.Tag;
-        PluginManager.ControlManager.ShowControl(new VariablesScopeView(scope));
+        MainFormManager.MainForm.ShowView(new VariablesScopeView(scope));
       }
     }
@@ -201,9 +201,10 @@
     private void variablesToolStripMenuItem_Click(object sender, EventArgs e) {
       IScope scope = (IScope)scopesTreeView.SelectedNode.Tag;
-      PluginManager.ControlManager.ShowControl(new VariablesScopeView(scope));
+      MainFormManager.MainForm.ShowView(new VariablesScopeView(scope));
     }
     private void showViewToolStripMenuItem_Click(object sender, EventArgs e) {
       IItem item = (IItem)((ToolStripMenuItem)sender).Tag;
-      PluginManager.ControlManager.ShowControl((IControl)MainFormManager.CreateDefaultView(item));
+      IView view = MainFormManager.CreateDefaultView(item);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
     }
     #endregion
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/VariableInfoView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/VariableInfoView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/VariableInfoView.cs	(revision 2546)
@@ -34,5 +34,5 @@
   /// </summary>
   [Content(typeof(VariableInfo), true)]
-  public partial class VariableInfoView : ViewBase {
+  public partial class VariableInfoView : ItemViewBase {
     /// <summary>
     /// Gets or sets the variable information to represent visually.
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/VariableView.cs	(revision 2546)
@@ -34,5 +34,5 @@
   /// </summary>
   [Content(typeof(Variable), true)]
-  public partial class VariableView : ViewBase {
+  public partial class VariableView : ItemViewBase {
     private ChooseItemDialog chooseItemDialog;
 
Index: /trunk/sources/HeuristicLab.Core.Views/3.3/VariablesScopeView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/VariablesScopeView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core.Views/3.3/VariablesScopeView.cs	(revision 2546)
@@ -35,5 +35,5 @@
   /// </summary>
   [Content(typeof(Scope))]
-  public partial class VariablesScopeView : ViewBase {
+  public partial class VariablesScopeView : ItemViewBase {
     private ChooseItemDialog chooseItemDialog;
 
Index: unk/sources/HeuristicLab.Core.Views/3.3/ViewBase.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ViewBase.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,57 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-
-namespace HeuristicLab.Core.Views {
-  partial class ViewBase {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (Item != null)
-        RemoveItemEvents();
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      components = new System.ComponentModel.Container();
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-    }
-
-    #endregion
-  }
-}
Index: unk/sources/HeuristicLab.Core.Views/3.3/ViewBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core.Views/3.3/ViewBase.cs	(revision 2545)
+++ 	(revision )
@@ -1,166 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Xml;
-using System.Windows.Forms;
-
-namespace HeuristicLab.Core.Views {
-  /// <summary>
-  /// Base class for all visual representations.
-  /// </summary>
-  public partial class ViewBase : HeuristicLab.MainForm.WindowsForms.ViewBase, IView {
-    private IItem myItem;
-    /// <summary>
-    /// Gets or sets the item to represent visually.
-    /// </summary>
-    /// <remarks>Calls <see cref="OnItemChanged"/>, <see cref="Refresh"/>, 
-    /// <see cref="RemoveItemEvents"/> (if the current item is not null) and 
-    /// <see cref="AddItemEvents"/> (if the new item is not null) in the setter.</remarks>
-    public IItem Item {
-      get { return myItem; }
-      protected set {
-        if (value != myItem) {
-          if (myItem != null)
-            RemoveItemEvents();
-          myItem = value;
-          if (myItem != null)
-            AddItemEvents();
-          OnItemChanged();
-          Refresh();
-        }
-      }
-    }
-    private string myCaption;
-    /// <summary>
-    /// Gets or sets the caption of the current instance.
-    /// </summary>
-    /// <remarks>Call <see cref="OnCaptionChanged"/> in the setter if a new item is set.</remarks>
-    public string Caption {
-      get { return myCaption; }
-      set {
-        if (value != myCaption) {
-          myCaption = value;
-          OnCaptionChanged();
-        }
-      }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ViewBase"/> with the caption "View".
-    /// </summary>
-    public ViewBase() {
-      InitializeComponent();
-      Caption = "View";
-    }
-
-    /// <summary>
-    /// Removes the eventhandlers from the current instance.
-    /// </summary>
-    protected virtual void RemoveItemEvents() { }
-    /// <summary>
-    /// Adds eventhandlers to the current instance.
-    /// </summary>
-    protected virtual void AddItemEvents() { }
-
-    /// <summary>
-    /// Refreshes the current view.
-    /// </summary>
-    /// <remarks>Creates a new <see cref="MethodInvoker"/> if an invoke is required 
-    /// (see <see cref="Control.InvokeRequired"/>.<br/>
-    /// Otherwise calls <see cref="UpdateControls"/> and <see cref="Control.Refresh"/> of base class 
-    /// <see cref="System.Windows.Forms.UserControl"/>.</remarks>
-    public override void Refresh() {
-      if (InvokeRequired) {
-        Invoke(new MethodInvoker(Refresh));
-      } else {
-        UpdateControls();
-        base.Refresh();
-      }
-    }
-    /// <summary>
-    /// Updates the controls with the latest values of the model.
-    /// </summary>
-    protected virtual void UpdateControls() {
-      if (Item == null)
-        Caption = "View";
-      else
-        Caption = "View (" + Item.GetType().Name + ")";
-      
-    }
-
-    /// <summary>
-    /// Occurs when the current item was changed.
-    /// </summary>
-    public event EventHandler ItemChanged;
-    /// <summary>
-    /// Fires a new <c>ItemChanged</c> event.
-    /// </summary>
-    protected virtual void OnItemChanged() {
-      if (ItemChanged != null)
-        ItemChanged(this, new EventArgs());
-    }
-    /// <summary>
-    /// Occurs when the current caption was changed.
-    /// </summary>
-    public event EventHandler CaptionChanged;
-    /// <summary>
-    /// Fires a new <c>CaptionChanged</c> event.
-    /// </summary>
-    protected virtual void OnCaptionChanged() {
-      if (CaptionChanged != null)
-        CaptionChanged(this, new EventArgs());
-    }
-
-    /// <summary>
-    /// Asynchron call of GUI updating.
-    /// </summary>
-    /// <param name="method">The delegate to invoke.</param>
-    protected new void Invoke(Delegate method) {
-      // enforce context switch to improve GUI response time
-      System.Threading.Thread.Sleep(0);
-
-      // prevent blocking of worker thread in Invoke, if the control is disposed
-      IAsyncResult result = BeginInvoke(method);
-      while ((!result.AsyncWaitHandle.WaitOne(100, false)) && (!IsDisposed)) { }
-      if (!IsDisposed) EndInvoke(result);
-    }
-    /// <summary>
-    /// Asynchron call of GUI updating.
-    /// </summary>
-    /// <param name="method">The delegate to invoke.</param>
-    /// <param name="args">The invoke arguments.</param>
-    protected new void Invoke(Delegate method, params object[] args) {
-      // enforce context switch to improve GUI response time
-      System.Threading.Thread.Sleep(0);
-
-      // prevent blocking of worker thread in Invoke, if the control is disposed
-      IAsyncResult result = BeginInvoke(method, args);
-      while ((!result.AsyncWaitHandle.WaitOne(100, false)) && (!IsDisposed)) { }
-      if (!IsDisposed) EndInvoke(result);
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.Core/3.3/Attributes/CreatableAttribute.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Attributes/CreatableAttribute.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core/3.3/Attributes/CreatableAttribute.cs	(revision 2546)
@@ -0,0 +1,58 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+
+namespace HeuristicLab.Core {
+  [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
+  public sealed class CreatableAttribute : Attribute {
+    private string category;
+    public string Category {
+      get {
+        return category;
+      }
+      set {
+        if (value == null) throw new ArgumentNullException("Category", "CreataleAttribute.Category must not be null");
+        category = value;
+      }
+    }
+
+    public CreatableAttribute() {
+      Category = "Other Items";
+    }
+    public CreatableAttribute(string category)
+      : this() {
+      Category = category;
+    }
+
+    public static bool IsCreatable(Type type) {
+      object[] attribs = type.GetCustomAttributes(typeof(CreatableAttribute), false);
+      return attribs.Length > 0;
+    }
+    public static string GetCategory(Type type) {
+      object[] attribs = type.GetCustomAttributes(typeof(CreatableAttribute), false);
+      if (attribs.Length > 0) return ((CreatableAttribute)attribs[0]).Category;
+      else return null;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core/3.3/Attributes/ItemAttribute.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Attributes/ItemAttribute.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Core/3.3/Attributes/ItemAttribute.cs	(revision 2546)
@@ -0,0 +1,54 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Resources;
+using System.Drawing;
+
+namespace HeuristicLab.Core {
+  [AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
+  public sealed class ItemAttribute : Attribute {
+    public string Name { get; set; }
+    public string Description { get; set; }
+
+    public ItemAttribute() {
+      Name = null;
+      Description = null;
+    }
+    public ItemAttribute(string name, string description) {
+      Name = name;
+      Description = description;
+    }
+
+    public static string GetName(Type type) {
+      object[] attribs = type.GetCustomAttributes(typeof(ItemAttribute), true);
+      if (attribs.Length > 0) return ((ItemAttribute)attribs[0]).Name;
+      else return null;
+    }
+    public static string GetDescription(Type type) {
+      object[] attribs = type.GetCustomAttributes(typeof(ItemAttribute), true);
+      if (attribs.Length > 0) return ((ItemAttribute)attribs[0]).Description;
+      else return null;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core/3.3/HeuristicLab.Core-3.3.csproj	(revision 2546)
@@ -95,12 +95,14 @@
     </Reference>
     <Reference Include="System.Data" />
+    <Reference Include="System.Drawing" />
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
     <Compile Include="AtomicOperation.cs" />
+    <Compile Include="Attributes\ItemAttribute.cs" />
     <Compile Include="CompositeOperation.cs" />
     <Compile Include="Cloner.cs" />
+    <Compile Include="Attributes\CreatableAttribute.cs" />
     <Compile Include="Interfaces\ICloner.cs" />
-    <Compile Include="Interfaces\IEditable.cs" />
     <Compile Include="Interfaces\IOperation.cs" />
     <Compile Include="Interfaces\IOperatorLibrary.cs" />
@@ -136,4 +138,8 @@
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\..\HeuristicLab.Common.Resources\3.2\HeuristicLab.Common.Resources-3.2.csproj">
+      <Project>{0E27A536-1C4A-4624-A65E-DC4F4F23E3E1}</Project>
+      <Name>HeuristicLab.Common.Resources-3.2</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.Common\3.2\HeuristicLab.Common-3.2.csproj">
       <Project>{1FC004FC-59AF-4249-B1B6-FF25873A20E4}</Project>
Index: /trunk/sources/HeuristicLab.Core/3.3/HeuristicLabCorePlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/HeuristicLabCorePlugin.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core/3.3/HeuristicLabCorePlugin.cs	(revision 2546)
@@ -32,4 +32,5 @@
   [PluginFile(Filename = "HeuristicLab.Core-3.3.dll", Filetype = PluginFileType.Assembly)]
   [Dependency(Dependency = "HeuristicLab.Common-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Common.Resources-3.2")]
   [Dependency(Dependency = "HeuristicLab.Persistence-3.3")]
   public class HeuristicLabCorePlugin : PluginBase {
Index: unk/sources/HeuristicLab.Core/3.3/Interfaces/IEditable.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IEditable.cs	(revision 2545)
+++ 	(revision )
@@ -1,31 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.Text;
-
-namespace HeuristicLab.Core {
-  /// <summary>
-  /// Marker interface for items that can be edited.
-  /// </summary>
-  public interface IEditable { }
-}
Index: /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core/3.3/Interfaces/IItem.cs	(revision 2546)
@@ -23,4 +23,5 @@
 using System.Collections.Generic;
 using System.Text;
+using System.Drawing;
 
 namespace HeuristicLab.Core {
@@ -29,4 +30,8 @@
   /// </summary>
   public interface IItem : ICloneable {
+    string Name { get; }
+    string Description { get; }
+    Image Image { get; }
+
     /// <summary>
     /// Creates a deep clone of this item.
Index: /trunk/sources/HeuristicLab.Core/3.3/ItemBase.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/ItemBase.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core/3.3/ItemBase.cs	(revision 2546)
@@ -24,5 +24,8 @@
 using System.Text;
 using System.Xml;
+using System.Drawing;
+using System.Resources;
 using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
+using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.Core {
@@ -30,6 +33,27 @@
   /// Represents the base class for all basic item types.
   /// </summary>
+  [Item("ItemBase", "Base class for all HeuristicLab items.")]
   [EmptyStorableClass]
   public abstract class ItemBase : IItem {
+    public virtual string Name {
+      get {
+        if (ItemAttribute.GetName(this.GetType()) != null)
+          return ItemAttribute.GetName(this.GetType());
+        else
+          return this.GetType().Name;
+      }
+    }
+    public virtual string Description {
+      get {
+        if (ItemAttribute.GetDescription(this.GetType()) != null)
+          return ItemAttribute.GetDescription(this.GetType());
+        else
+          return "No description available.";
+      }
+    }
+    public virtual Image Image {
+      get { return Resources.HeuristicLab; }
+    }
+
     /// <summary>
     /// Creates a deep clone of this instance.
Index: /trunk/sources/HeuristicLab.Core/3.3/OperatorLibrary.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/OperatorLibrary.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core/3.3/OperatorLibrary.cs	(revision 2546)
@@ -30,4 +30,6 @@
   /// Represents a library of operators consisting of one <see cref="IOperatorGroup"/>.
   /// </summary>
+  [Creatable("Libraries")]
+  [Item("Operator Library", "A library that contains multiple operators.")]
   public class OperatorLibrary : ItemBase, IOperatorLibrary {
 
Index: /trunk/sources/HeuristicLab.Core/3.3/PersistenceManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Core/3.3/PersistenceManager.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Core/3.3/PersistenceManager.cs	(revision 2546)
@@ -36,5 +36,5 @@
   public static class PersistenceManager {
     /// <summary>
-    /// Saves the specified <paramref name="instance"/> in the specified file through creating an 
+    /// Saves the specified <paramref name="instance"/> in th specified file through creating an 
     /// <see cref="XmlDocument"/>.
     /// </summary>
@@ -78,35 +78,4 @@
       return (IItem)XmlParser.Deserialize(stream);
     }
-
-    /// <summary>
-    /// Builds a meaningful string for the given <paramref name="type"/> with the namespace information, 
-    /// all its arguments, the assembly name...
-    /// </summary>
-    /// <param name="type">The type for which a string should be created.</param>
-    /// <returns>A string value of this type containing different additional information.</returns>
-    public static string BuildTypeString(Type type) {
-      string assembly = type.Assembly.FullName;
-      assembly = assembly.Substring(0, assembly.IndexOf(", "));
-
-      StringBuilder builder = new StringBuilder();
-      builder.Append(type.Namespace);
-      builder.Append(".");
-      builder.Append(type.Name);
-      Type[] args = type.GetGenericArguments();
-      if (args.Length > 0) {
-        builder.Append("[[");
-        builder.Append(BuildTypeString(args[0]));
-        builder.Append("]");
-        for (int i = 1; i < args.Length; i++) {
-          builder.Append(",[");
-          builder.Append(BuildTypeString(args[i]));
-          builder.Append("]");
-        }
-        builder.Append("]");
-      }
-      builder.Append(", ");
-      builder.Append(assembly);
-      return builder.ToString();
-    }
   }
 }
Index: /trunk/sources/HeuristicLab.Data/3.3/ArrayDataBaseView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/ArrayDataBaseView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/ArrayDataBaseView.cs	(revision 2546)
@@ -34,5 +34,5 @@
   /// The visual representation of the class <see cref="ArrayDataBase"/>.
   /// </summary>
-  public partial class ArrayDataBaseView : ViewBase {
+  public partial class ArrayDataBaseView : ItemViewBase {
     /// <summary>
     /// Gets or sets the instance of the array to represent.
Index: /trunk/sources/HeuristicLab.Data/3.3/BoolDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/BoolDataView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/BoolDataView.cs	(revision 2546)
@@ -36,5 +36,5 @@
   /// </summary>
   [Content(typeof(BoolData), true)]
-  public partial class BoolDataView : ViewBase {
+  public partial class BoolDataView : ItemViewBase {
     /// <summary>
     /// Gets or sets the boolean value to represent visually.
Index: /trunk/sources/HeuristicLab.Data/3.3/DoubleDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/DoubleDataView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/DoubleDataView.cs	(revision 2546)
@@ -36,5 +36,5 @@
   /// </summary>
   [Content(typeof(DoubleData), true)]
-  public partial class DoubleDataView : ViewBase {
+  public partial class DoubleDataView : ItemViewBase {
     /// <summary>
     /// Gets or sets the double value to represent visually.
Index: /trunk/sources/HeuristicLab.Data/3.3/IntDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/IntDataView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/IntDataView.cs	(revision 2546)
@@ -36,5 +36,5 @@
   /// </summary>
   [Content(typeof(IntData), true)]
-  public partial class IntDataView : ViewBase {
+  public partial class IntDataView : ItemViewBase {
     /// <summary>
     /// Gets or set the int value to represent visually.
Index: /trunk/sources/HeuristicLab.Data/3.3/ItemDictionaryView_T.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/ItemDictionaryView_T.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/ItemDictionaryView_T.cs	(revision 2546)
@@ -18,5 +18,5 @@
   /// <typeparam name="V">The type of the values of the dictionary.</typeparam>
   [Content(typeof(ItemDictionary<IItem, IItem>), true)]
-  public partial class ItemDictionaryView<K, V> : ViewBase
+  public partial class ItemDictionaryView<K, V> : ItemViewBase
     where K : IItem
     where V : IItem {
Index: /trunk/sources/HeuristicLab.Data/3.3/ItemListView_T.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/ItemListView_T.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/ItemListView_T.cs	(revision 2546)
@@ -37,5 +37,5 @@
   /// </summary>
   /// <typeparam name="T">The type of the items in the list.</typeparam>
-  public partial class ItemListView<T> : ViewBase where T : IItem {
+  public partial class ItemListView<T> : ItemViewBase where T : IItem {
     private ChooseItemDialog chooseItemDialog;
 
Index: /trunk/sources/HeuristicLab.Data/3.3/MatrixDataBaseView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/MatrixDataBaseView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/MatrixDataBaseView.cs	(revision 2546)
@@ -34,5 +34,5 @@
   /// The basic visual representation of a two-dimensional matrix.
   /// </summary>
-  public partial class MatrixDataBaseView : ViewBase {
+  public partial class MatrixDataBaseView : ItemViewBase {
 
     /// <summary>
Index: /trunk/sources/HeuristicLab.Data/3.3/StringDataView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Data/3.3/StringDataView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Data/3.3/StringDataView.cs	(revision 2546)
@@ -36,5 +36,5 @@
   /// </summary>
   [Content(typeof(StringData), true)]
-  public partial class StringDataView : ViewBase {
+  public partial class StringDataView : ItemViewBase {
     /// <summary>
     /// Gets or sets the string value to represent visually.
Index: /trunk/sources/HeuristicLab.Logging/3.3/LinechartView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Logging/3.3/LinechartView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Logging/3.3/LinechartView.cs	(revision 2546)
@@ -40,5 +40,5 @@
   /// </summary>
   [Content(typeof(Linechart), true)]
-  public partial class LinechartView : ViewBase {
+  public partial class LinechartView : ItemViewBase {
     private double maxY = double.MinValue, minY = double.MaxValue;
     private static int[] colors = new int[] {
Index: /trunk/sources/HeuristicLab.Logging/3.3/LogView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Logging/3.3/LogView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Logging/3.3/LogView.cs	(revision 2546)
@@ -38,5 +38,5 @@
   /// </summary>
   [Content(typeof(Log), true)]
-  public partial class LogView : ViewBase {
+  public partial class LogView : ItemViewBase {
     /// <summary>
     /// Gets or sets the Log item to represent visually.
Index: /trunk/sources/HeuristicLab.Logging/3.3/PointXYChartView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Logging/3.3/PointXYChartView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Logging/3.3/PointXYChartView.cs	(revision 2546)
@@ -40,5 +40,5 @@
   /// </summary>
   [Content(typeof(PointXYChart), true)]
-  public partial class PointXYChartView : ViewBase {
+  public partial class PointXYChartView : ItemViewBase {
     private static int[] colors = new int[] {
       182,182,255, 
Index: /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Operators.Programmable/3.3/ProgrammableOperatorView.cs	(revision 2546)
@@ -34,5 +34,5 @@
 namespace HeuristicLab.Operators.Programmable {
   [Content(typeof(ProgrammableOperator), true)]
-  public partial class ProgrammableOperatorView : ViewBase {
+  public partial class ProgrammableOperatorView : ItemViewBase {
     public ProgrammableOperator ProgrammableOperator {
       get { return (ProgrammableOperator)Item; }
Index: /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Operators/3.3/CombinedOperatorView.cs	(revision 2546)
@@ -36,5 +36,5 @@
   /// </summary>
   [Content(typeof(CombinedOperator), true)]
-  public partial class CombinedOperatorView : ViewBase {
+  public partial class CombinedOperatorView : ItemViewBase {
     /// <summary>
     /// Gets or sets the combined operator to display.
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/FileManager.cs	(revision 2546)
@@ -0,0 +1,123 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Core;
+using HeuristicLab.Persistence.Default.Xml;
+using HeuristicLab.Core.Views;
+
+namespace HeuristicLab.Optimizer {
+  internal static class FileManager {
+
+    private class FileInfo {
+      public string Filename { get; set; }
+      public bool Compressed { get; set; }
+
+      public FileInfo(string filename, bool compressed) {
+        Filename = filename;
+        Compressed = compressed;
+      }
+      public FileInfo(string filename)
+        : this(filename, true) {
+      }
+      public FileInfo()
+        : this(string.Empty, true) {
+      }
+    }
+
+    private static Dictionary<IItem, FileInfo> files = new Dictionary<IItem, FileInfo>();
+    private static NewItemDialog newItemDialog = null;
+    private static OpenFileDialog openFileDialog = null;
+    private static SaveFileDialog saveFileDialog = null;
+
+    public static void New() {
+      if (newItemDialog == null) newItemDialog = new NewItemDialog();
+      if (newItemDialog.ShowDialog() == DialogResult.OK) {
+        MainFormManager.MainForm.ShowView(MainFormManager.CreateDefaultView(newItemDialog.Item));
+        files.Add(newItemDialog.Item, new FileInfo());
+      }
+    }
+
+    public static void Open() {
+      if (openFileDialog == null) {
+        openFileDialog = new OpenFileDialog();
+        openFileDialog.Title = "Open Item";
+        openFileDialog.FileName = "Item";
+        openFileDialog.Multiselect = true;
+        openFileDialog.DefaultExt = "hl";
+        openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
+      }
+
+      if (openFileDialog.ShowDialog() == DialogResult.OK) {
+        foreach (string file in openFileDialog.FileNames) {
+          IItem item = (IItem)XmlParser.Deserialize(file);
+          MainFormManager.MainForm.ShowView(MainFormManager.CreateDefaultView(item));
+          files.Add(item, new FileInfo(file));
+        }
+      }
+    }
+
+    public static void Save() {
+      IItemView activeView = MainFormManager.MainForm.ActiveView as IItemView;
+      if ((activeView != null) && (CreatableAttribute.IsCreatable(activeView.Item.GetType()))) {
+        Save(activeView.Item);
+      }
+    }
+    private static void Save(IItem item) {
+      if (files[item].Filename != string.Empty) {
+        if (files[item].Compressed)
+          XmlGenerator.Serialize(item, saveFileDialog.FileName, 9);
+        else
+          XmlGenerator.Serialize(item, saveFileDialog.FileName, 0);
+      } else {
+        SaveAs(item);
+      }
+    }
+
+    public static void SaveAs() {
+      IItemView activeView = MainFormManager.MainForm.ActiveView as IItemView;
+      if ((activeView != null) && (CreatableAttribute.IsCreatable(activeView.Item.GetType()))) {
+        SaveAs(activeView.Item);
+      }
+    }
+    public static void SaveAs(IItem item) {
+      if (saveFileDialog == null) {
+        saveFileDialog = new SaveFileDialog();
+        saveFileDialog.Title = "Save Item";
+        saveFileDialog.DefaultExt = "hl";
+        saveFileDialog.Filter = "Uncompressed HeuristicLab Files|*.hl|HeuristicLab Files|*.hl|All Files|*.*";
+        saveFileDialog.FilterIndex = 2;
+      }
+
+      saveFileDialog.FileName = files[item].Filename;
+      if (saveFileDialog.FileName == string.Empty) saveFileDialog.FileName = "Item";
+      if (! files[item].Compressed)
+        saveFileDialog.FilterIndex = 1;
+      else
+        saveFileDialog.FilterIndex = 2;
+
+      if (saveFileDialog.ShowDialog() == DialogResult.OK) {
+        if (saveFileDialog.FilterIndex == 1) {
+          XmlGenerator.Serialize(item, saveFileDialog.FileName, 0);
+        } else {
+          XmlGenerator.Serialize(item, saveFileDialog.FileName, 9);
+        }
+        files[item].Filename = saveFileDialog.FileName;
+        files[item].Compressed = saveFileDialog.FilterIndex != 1;
+      }
+    }
+
+    public static void SaveAll() {
+      var views = from v in MainFormManager.MainForm.Views
+                  where v is IItemView
+                  where CreatableAttribute.IsCreatable(((IItemView)v).Item.GetType())
+                  select v as IItemView;
+
+      foreach (IItemView view in views) {
+        Save(view.Item);
+      }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLab.Optimizer-3.3.csproj	(revision 2546)
@@ -51,9 +51,5 @@
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Actions\SaveAsAction.cs" />
-    <Compile Include="Actions\SaveAllAction.cs" />
-    <Compile Include="Actions\SaveAction.cs" />
-    <Compile Include="Actions\OpenAction.cs" />
-    <Compile Include="Actions\NewAction.cs" />
+    <Compile Include="FileManager.cs" />
     <Compile Include="MenuItems\CloseMenuItem.cs" />
     <Compile Include="MenuItems\CloseAllMenuItem.cs" />
@@ -68,11 +64,16 @@
     <Compile Include="MenuItems\NewMenuItem.cs" />
     <Compile Include="MenuItems\Separators.cs" />
-    <Compile Include="NewDialog.cs">
+    <Compile Include="NewItemDialog.cs">
       <SubType>Form</SubType>
     </Compile>
-    <Compile Include="NewDialog.Designer.cs">
-      <DependentUpon>NewDialog.cs</DependentUpon>
+    <Compile Include="NewItemDialog.Designer.cs">
+      <DependentUpon>NewItemDialog.cs</DependentUpon>
     </Compile>
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Properties\Resources.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>Resources.resx</DependentUpon>
+    </Compile>
     <Compile Include="ToolBarItems\SaveAllToolBarItem.cs" />
     <Compile Include="ToolBarItems\SaveToolBarItem.cs" />
@@ -89,4 +90,12 @@
       <Name>HeuristicLab.Common.Resources-3.2</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
+      <Project>{E226881D-315F-423D-B419-A766FE0D8685}</Project>
+      <Name>HeuristicLab.Core.Views-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Core\3.3\HeuristicLab.Core-3.3.csproj">
+      <Project>{C36BD924-A541-4A00-AFA8-41701378DDC5}</Project>
+      <Name>HeuristicLab.Core-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.MainForm.WindowsForms\3.2\HeuristicLab.MainForm.WindowsForms-3.2.csproj">
       <Project>{AB687BBE-1BFE-476B-906D-44237135431D}</Project>
@@ -97,4 +106,8 @@
       <Name>HeuristicLab.MainForm-3.2</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Persistence\3.3\HeuristicLab.Persistence-3.3.csproj">
+      <Project>{102BC7D3-0EF9-439C-8F6D-96FF0FDB8E1B}</Project>
+      <Name>HeuristicLab.Persistence-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
@@ -103,6 +116,10 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="NewDialog.resx">
-      <DependentUpon>NewDialog.cs</DependentUpon>
+    <EmbeddedResource Include="NewItemDialog.resx">
+      <DependentUpon>NewItemDialog.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
   </ItemGroup>
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerApplication.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerApplication.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerApplication.cs	(revision 2546)
@@ -31,5 +31,5 @@
 namespace HeuristicLab.Optimizer {
   [ClassInfo(Name = "Optimizer 3.3", Description="Next generation heuristic optimization environment.")]
-  class HeuristicLabOptimizerApplication : ApplicationBase {
+  internal class HeuristicLabOptimizerApplication : ApplicationBase {
     public override void Run() {
       DockingMainForm mainForm = new DockingMainForm(typeof(IOptimizerUserInterfaceItemProvider));
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerPlugin.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerPlugin.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/HeuristicLabOptimizerPlugin.cs	(revision 2546)
@@ -28,5 +28,8 @@
   [ClassInfo(Name = "HeuristicLab.Optimizer-3.3")]
   [PluginFile(Filename = "HeuristicLab.Optimizer-3.3.dll", Filetype = PluginFileType.Assembly)]
+  [Dependency(Dependency = "HeuristicLab.Persistence-3.3")]
   [Dependency(Dependency = "HeuristicLab.Common.Resources-3.2")]
+  [Dependency(Dependency = "HeuristicLab.Core-3.3")]
+  [Dependency(Dependency = "HeuristicLab.Core.Views-3.3")]
   [Dependency(Dependency = "HeuristicLab.MainForm-3.2")]
   [Dependency(Dependency = "HeuristicLab.MainForm.WindowsForms-3.2")]
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/CloseAllMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/CloseAllMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/CloseAllMenuItem.cs	(revision 2546)
@@ -10,15 +10,20 @@
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class CloseAllMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class CloseAllMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "Clos&e All"; }
     }
-
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override int Position {
       get { return 1700; }
+    }
+
+    public override void MainFormInitialized(object sender, EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+    public override void ActiveViewChanged(object sender, EventArgs e) {
+      ToolStripItem.Enabled = MainFormManager.MainForm.Views.FirstOrDefault() != null;
     }
 
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/CloseMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/CloseMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/CloseMenuItem.cs	(revision 2546)
@@ -10,15 +10,20 @@
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class CloseMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class CloseMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "&Close"; }
     }
-
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override int Position {
       get { return 1600; }
+    }
+
+    public override void MainFormInitialized(object sender, EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+    public override void ActiveViewChanged(object sender, EventArgs e) {
+      ToolStripItem.Enabled = MainFormManager.MainForm.Views.FirstOrDefault() != null;
     }
 
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/ExitMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/ExitMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/ExitMenuItem.cs	(revision 2546)
@@ -10,17 +10,14 @@
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class ExitMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class ExitMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override string Name {
       get { return "E&xit"; }
     }
-
     public override int Position {
       get { return 1999; }
     }
-
     public override Keys ShortCutKeys {
       get { return Keys.Control | Keys.X; }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/NewMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/NewMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/NewMenuItem.cs	(revision 2546)
@@ -9,25 +9,20 @@
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class NewMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class NewMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "&New..."; }
     }
-
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override int Position {
       get { return 1100; }
     }
-
     public override ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
       get { return ToolStripItemDisplayStyle.ImageAndText; }
     }
-
     public override Image Image {
       get { return Resources.NewIcon; }
     }
-
     public override Keys ShortCutKeys {
       get { return Keys.Control | Keys.N; }
@@ -35,5 +30,5 @@
 
     public override void Execute() {
-      Actions.NewAction.Execute();
+      FileManager.New();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/OpenMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/OpenMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/OpenMenuItem.cs	(revision 2546)
@@ -9,25 +9,20 @@
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class OpenMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class OpenMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "&Open..."; }
     }
-
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override int Position {
       get { return 1200; }
     }
-
     public override ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
       get { return ToolStripItemDisplayStyle.ImageAndText; }
     }
-
     public override Image Image {
       get { return Resources.OpenIcon; }
     }
-
     public override Keys ShortCutKeys {
       get { return Keys.Control | Keys.O; }
@@ -35,5 +30,5 @@
 
     public override void Execute() {
-      Actions.OpenAction.Execute();
+      FileManager.Open();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAllMenuItem.cs	(revision 2546)
@@ -5,31 +5,35 @@
 using System.Windows.Forms;
 using System.Drawing;
+using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class SaveAllMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class SaveAllMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "Save Al&l"; }
     }
-
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override int Position {
       get { return 1500; }
     }
-
     public override ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
       get { return ToolStripItemDisplayStyle.ImageAndText; }
     }
-
     public override Image Image {
       get { return Resources.SaveAllIcon; }
     }
 
+    public override void MainFormInitialized(object sender, EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+    public override void ActiveViewChanged(object sender, EventArgs e) {
+      ToolStripItem.Enabled = MainFormManager.MainForm.Views.FirstOrDefault() != null;
+    }
+
     public override void Execute() {
-      Actions.SaveAllAction.Execute();
+      FileManager.SaveAll();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAsMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAsMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveAsMenuItem.cs	(revision 2546)
@@ -5,31 +5,38 @@
 using System.Windows.Forms;
 using System.Drawing;
+using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class SaveAsMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class SaveAsMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "Save &As..."; }
     }
-
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override int Position {
       get { return 1400; }
     }
-
     public override ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
       get { return ToolStripItemDisplayStyle.ImageAndText; }
     }
-
     public override Keys ShortCutKeys {
       get { return Keys.Control | Keys.Shift | Keys.S; }
     }
 
+    public override void MainFormInitialized(object sender, EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+    public override void ActiveViewChanged(object sender, EventArgs e) {
+      IItemView activeView = MainFormManager.MainForm.ActiveView as IItemView;
+      ToolStripItem.Enabled = ((activeView != null) && (CreatableAttribute.IsCreatable(activeView.Item.GetType())));
+    }
+
     public override void Execute() {
-      Actions.SaveAsAction.Execute();
+      FileManager.SaveAs();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveMenuItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveMenuItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/SaveMenuItem.cs	(revision 2546)
@@ -5,35 +5,41 @@
 using System.Windows.Forms;
 using System.Drawing;
+using HeuristicLab.MainForm;
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class SaveMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class SaveMenuItem : HeuristicLab.MainForm.WindowsForms.MenuItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "&Save"; }
     }
-
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
     }
-
     public override int Position {
       get { return 1300; }
     }
-
     public override ToolStripItemDisplayStyle ToolStripItemDisplayStyle {
       get { return ToolStripItemDisplayStyle.ImageAndText; }
     }
-
     public override Image Image {
       get { return Resources.SaveIcon; }
     }
-
     public override Keys ShortCutKeys {
       get { return Keys.Control | Keys.S; }
     }
 
+    public override void MainFormInitialized(object sender, EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+    public override void ActiveViewChanged(object sender, EventArgs e) {
+      IItemView activeView = MainFormManager.MainForm.ActiveView as IItemView;
+      ToolStripItem.Enabled = ((activeView != null) && (CreatableAttribute.IsCreatable(activeView.Item.GetType())));
+    }
+
     public override void Execute() {
-      Actions.SaveAction.Execute();
+      FileManager.Save();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/Separators.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/Separators.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/MenuItems/Separators.cs	(revision 2546)
@@ -10,5 +10,5 @@
 
 namespace HeuristicLab.Optimizer.MenuItems {
-  public class SeparatorMenuItem : MenuSeparatorItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class SeparatorMenuItem : MenuSeparatorItemBase, IOptimizerUserInterfaceItemProvider {
     public override IEnumerable<string> Structure {
       get { return new string[] { "&File" }; }
Index: unk/sources/HeuristicLab.Optimizer/3.3/NewDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/NewDialog.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,79 +1,0 @@
-﻿namespace HeuristicLab.Optimizer {
-  partial class NewDialog {
-    /// <summary>
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary>
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Windows Form Designer generated code
-
-    /// <summary>
-    /// Required method for Designer support - do not modify
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.okButton = new System.Windows.Forms.Button();
-      this.cancelButton = new System.Windows.Forms.Button();
-      this.SuspendLayout();
-      // 
-      // okButton
-      // 
-      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
-      this.okButton.Enabled = false;
-      this.okButton.Location = new System.Drawing.Point(380, 315);
-      this.okButton.Name = "okButton";
-      this.okButton.Size = new System.Drawing.Size(75, 23);
-      this.okButton.TabIndex = 0;
-      this.okButton.Text = "&OK";
-      this.okButton.UseVisualStyleBackColor = true;
-      // 
-      // cancelButton
-      // 
-      this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
-      this.cancelButton.Location = new System.Drawing.Point(461, 315);
-      this.cancelButton.Name = "cancelButton";
-      this.cancelButton.Size = new System.Drawing.Size(75, 23);
-      this.cancelButton.TabIndex = 0;
-      this.cancelButton.Text = "&Cancel";
-      this.cancelButton.UseVisualStyleBackColor = true;
-      // 
-      // NewDialog
-      // 
-      this.AcceptButton = this.okButton;
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.CancelButton = this.cancelButton;
-      this.ClientSize = new System.Drawing.Size(548, 350);
-      this.Controls.Add(this.cancelButton);
-      this.Controls.Add(this.okButton);
-      this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
-      this.MaximizeBox = false;
-      this.MinimizeBox = false;
-      this.Name = "NewDialog";
-      this.ShowInTaskbar = false;
-      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
-      this.Text = "New Item";
-      this.TopMost = true;
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button okButton;
-    private System.Windows.Forms.Button cancelButton;
-  }
-}
Index: unk/sources/HeuristicLab.Optimizer/3.3/NewDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/NewDialog.cs	(revision 2545)
+++ 	(revision )
@@ -1,22 +1,0 @@
-﻿using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
-using System.Drawing;
-using System.Linq;
-using System.Text;
-using System.Windows.Forms;
-
-namespace HeuristicLab.Optimizer {
-  public partial class NewDialog : Form {
-    private Type newItemType;
-    public Type NewItemType {
-      get { return newItemType; }
-    }
-
-    public NewDialog() {
-      InitializeComponent();
-      newItemType = null;
-    }
-  }
-}
Index: unk/sources/HeuristicLab.Optimizer/3.3/NewDialog.resx
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/NewDialog.resx	(revision 2545)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.Designer.cs	(revision 2546)
@@ -0,0 +1,167 @@
+﻿namespace HeuristicLab.Optimizer {
+  partial class NewItemDialog {
+    /// <summary>
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary>
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Windows Form Designer generated code
+
+    /// <summary>
+    /// Required method for Designer support - do not modify
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.components = new System.ComponentModel.Container();
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(NewItemDialog));
+      this.okButton = new System.Windows.Forms.Button();
+      this.cancelButton = new System.Windows.Forms.Button();
+      this.itemsListView = new System.Windows.Forms.ListView();
+      this.nameColumnHeader = new System.Windows.Forms.ColumnHeader();
+      this.descriptioncolumnHeader = new System.Windows.Forms.ColumnHeader();
+      this.itemsLabel = new System.Windows.Forms.Label();
+      this.showIconsCheckBox = new System.Windows.Forms.CheckBox();
+      this.showDetailsCheckBox = new System.Windows.Forms.CheckBox();
+      this.toolTip = new System.Windows.Forms.ToolTip(this.components);
+      this.SuspendLayout();
+      // 
+      // okButton
+      // 
+      this.okButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.okButton.DialogResult = System.Windows.Forms.DialogResult.OK;
+      this.okButton.Enabled = false;
+      this.okButton.Location = new System.Drawing.Point(456, 409);
+      this.okButton.Name = "okButton";
+      this.okButton.Size = new System.Drawing.Size(75, 23);
+      this.okButton.TabIndex = 2;
+      this.okButton.Text = "&OK";
+      this.okButton.UseVisualStyleBackColor = true;
+      this.okButton.Click += new System.EventHandler(this.okButton_Click);
+      // 
+      // cancelButton
+      // 
+      this.cancelButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.cancelButton.DialogResult = System.Windows.Forms.DialogResult.Cancel;
+      this.cancelButton.Location = new System.Drawing.Point(537, 409);
+      this.cancelButton.Name = "cancelButton";
+      this.cancelButton.Size = new System.Drawing.Size(75, 23);
+      this.cancelButton.TabIndex = 3;
+      this.cancelButton.Text = "&Cancel";
+      this.cancelButton.UseVisualStyleBackColor = true;
+      // 
+      // itemsListView
+      // 
+      this.itemsListView.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.itemsListView.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.nameColumnHeader,
+            this.descriptioncolumnHeader});
+      this.itemsListView.HideSelection = false;
+      this.itemsListView.Location = new System.Drawing.Point(12, 33);
+      this.itemsListView.MultiSelect = false;
+      this.itemsListView.Name = "itemsListView";
+      this.itemsListView.Size = new System.Drawing.Size(600, 370);
+      this.itemsListView.TabIndex = 1;
+      this.itemsListView.UseCompatibleStateImageBehavior = false;
+      this.itemsListView.View = System.Windows.Forms.View.SmallIcon;
+      this.itemsListView.SelectedIndexChanged += new System.EventHandler(this.itemTypesListView_SelectedIndexChanged);
+      this.itemsListView.DoubleClick += new System.EventHandler(this.itemTypesListView_DoubleClick);
+      // 
+      // nameColumnHeader
+      // 
+      this.nameColumnHeader.Text = "Name";
+      // 
+      // descriptioncolumnHeader
+      // 
+      this.descriptioncolumnHeader.Text = "Description";
+      // 
+      // itemsLabel
+      // 
+      this.itemsLabel.AutoSize = true;
+      this.itemsLabel.Location = new System.Drawing.Point(12, 9);
+      this.itemsLabel.Name = "itemsLabel";
+      this.itemsLabel.Size = new System.Drawing.Size(35, 13);
+      this.itemsLabel.TabIndex = 0;
+      this.itemsLabel.Text = "&Items:";
+      // 
+      // showIconsCheckBox
+      // 
+      this.showIconsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.showIconsCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
+      this.showIconsCheckBox.Checked = true;
+      this.showIconsCheckBox.CheckState = System.Windows.Forms.CheckState.Checked;
+      this.showIconsCheckBox.Image = ((System.Drawing.Image)(resources.GetObject("showIconsCheckBox.Image")));
+      this.showIconsCheckBox.Location = new System.Drawing.Point(558, 3);
+      this.showIconsCheckBox.Name = "showIconsCheckBox";
+      this.showIconsCheckBox.Size = new System.Drawing.Size(24, 24);
+      this.showIconsCheckBox.TabIndex = 4;
+      this.toolTip.SetToolTip(this.showIconsCheckBox, "Show Icons");
+      this.showIconsCheckBox.UseVisualStyleBackColor = true;
+      this.showIconsCheckBox.Click += new System.EventHandler(this.showIconsCheckBox_Click);
+      // 
+      // showDetailsCheckBox
+      // 
+      this.showDetailsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.showDetailsCheckBox.Appearance = System.Windows.Forms.Appearance.Button;
+      this.showDetailsCheckBox.Image = ((System.Drawing.Image)(resources.GetObject("showDetailsCheckBox.Image")));
+      this.showDetailsCheckBox.Location = new System.Drawing.Point(588, 3);
+      this.showDetailsCheckBox.Name = "showDetailsCheckBox";
+      this.showDetailsCheckBox.Size = new System.Drawing.Size(24, 24);
+      this.showDetailsCheckBox.TabIndex = 5;
+      this.toolTip.SetToolTip(this.showDetailsCheckBox, "Show Details");
+      this.showDetailsCheckBox.UseVisualStyleBackColor = true;
+      this.showDetailsCheckBox.Click += new System.EventHandler(this.showDetailsCheckBox_Click);
+      // 
+      // NewItemDialog
+      // 
+      this.AcceptButton = this.okButton;
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.CancelButton = this.cancelButton;
+      this.ClientSize = new System.Drawing.Size(624, 444);
+      this.Controls.Add(this.showDetailsCheckBox);
+      this.Controls.Add(this.showIconsCheckBox);
+      this.Controls.Add(this.itemsLabel);
+      this.Controls.Add(this.itemsListView);
+      this.Controls.Add(this.cancelButton);
+      this.Controls.Add(this.okButton);
+      this.MaximizeBox = false;
+      this.MinimizeBox = false;
+      this.Name = "NewItemDialog";
+      this.ShowIcon = false;
+      this.ShowInTaskbar = false;
+      this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
+      this.Text = "New Item";
+      this.TopMost = true;
+      this.Load += new System.EventHandler(this.NewItemDialog_Load);
+      this.Shown += new System.EventHandler(this.NewItemDialog_Shown);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button okButton;
+    private System.Windows.Forms.Button cancelButton;
+    private System.Windows.Forms.ListView itemsListView;
+    private System.Windows.Forms.Label itemsLabel;
+    private System.Windows.Forms.CheckBox showIconsCheckBox;
+    private System.Windows.Forms.CheckBox showDetailsCheckBox;
+    private System.Windows.Forms.ToolTip toolTip;
+    private System.Windows.Forms.ColumnHeader nameColumnHeader;
+    private System.Windows.Forms.ColumnHeader descriptioncolumnHeader;
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.cs	(revision 2546)
@@ -0,0 +1,97 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.Optimizer {
+  internal partial class NewItemDialog : Form {
+    private bool initialized;
+    private List<IItem> items;
+
+    private IItem item;
+    public IItem Item {
+      get { return item; }
+    }
+
+    public NewItemDialog() {
+      initialized = false;
+      items = new List<IItem>();
+      item = null;
+      InitializeComponent();
+    }
+
+    private void NewItemDialog_Load(object sender, EventArgs e) {
+      if (!initialized) {
+        SetListViewDisplayStyleCheckBoxes();
+
+        DiscoveryService ds = new DiscoveryService();
+        var categories = from t in ds.GetTypes(typeof(IItem))
+                         where CreatableAttribute.IsCreatable(t)
+                         orderby CreatableAttribute.GetCategory(t), ItemAttribute.GetName(t) ascending
+                         group t by CreatableAttribute.GetCategory(t) into c
+                         select c;
+
+        itemsListView.SmallImageList = new ImageList();
+        foreach (var category in categories) {
+          ListViewGroup group = new ListViewGroup(category.Key);
+          itemsListView.Groups.Add(group);
+          foreach (var creatable in category) {
+            IItem i = (IItem)Activator.CreateInstance(creatable);
+            items.Add(i);
+            ListViewItem item = new ListViewItem(new string[] { i.Name, i.Description}, group);
+            itemsListView.SmallImageList.Images.Add(i.Image);
+            item.ImageIndex = itemsListView.SmallImageList.Images.Count - 1;
+            item.Tag = i;
+            itemsListView.Items.Add(item);
+          }
+        }
+        initialized = true;
+      }
+    }
+
+    private void NewItemDialog_Shown(object sender, EventArgs e) {
+      item = null;
+    }
+
+    private void itemTypesListView_SelectedIndexChanged(object sender, EventArgs e) {
+      okButton.Enabled = itemsListView.SelectedItems.Count == 1;
+    }
+
+    private void okButton_Click(object sender, EventArgs e) {
+      if (itemsListView.SelectedItems.Count == 1) {
+        item = (IItem)((IItem)itemsListView.SelectedItems[0].Tag).Clone();
+        DialogResult = DialogResult.OK;
+        Close();
+      }
+    }
+    private void itemTypesListView_DoubleClick(object sender, EventArgs e) {
+      if (itemsListView.SelectedItems.Count == 1) {
+        item = (IItem)((IItem)itemsListView.SelectedItems[0].Tag).Clone();
+        DialogResult = DialogResult.OK;
+        Close();
+      }
+    }
+
+    private void showIconsCheckBox_Click(object sender, EventArgs e) {
+      itemsListView.View = View.SmallIcon;
+      SetListViewDisplayStyleCheckBoxes();
+    }
+    private void showDetailsCheckBox_Click(object sender, EventArgs e) {
+      itemsListView.View = View.Details;
+      SetListViewDisplayStyleCheckBoxes();
+      for (int i = 0; i < itemsListView.Columns.Count; i++)
+        itemsListView.Columns[i].AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
+    }
+    private void SetListViewDisplayStyleCheckBoxes() {
+      showIconsCheckBox.Checked = itemsListView.View == View.SmallIcon;
+      showDetailsCheckBox.Checked = itemsListView.View == View.Details;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.resx
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.resx	(revision 2546)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/NewItemDialog.resx	(revision 2546)
@@ -0,0 +1,141 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="showIconsCheckBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAHdJREFUOE9j/P//
+        PwOlAGQCJZjhP5dKFlkYajFFtoP9DwwG8gDcBTDtDAwNQBMhmBiA1QCQRmINwWkAzBBCLsPrBWRvwNjo
+        LsMwAJe/sRkGcSU4BhGxgJ6gsHkB1TA0A4gJeWQ1JHgBNbEhXEYtF1CUmUCBSQkGALV/aRnqsiFZAAAA
+        AElFTkSuQmCC
+</value>
+  </data>
+  <metadata name="toolTip.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+  <data name="showDetailsCheckBox.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAF5JREFUOE9j/P//
+        PwOlAGQCJZjhP5dKFlkYajFFtoP9DwwG8gDcBdi0I4cLSB6djyRGRRcwMDQAbSKMYS7G6wViQgXDAJDt
+        aKaD/U7fMBhYFxATcMhqqJOUQYmMEgwAizNpEwxYZgUAAAAASUVORK5CYII=
+</value>
+  </data>
+</root>
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Resources.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Resources.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Resources.Designer.cs	(revision 2546)
@@ -0,0 +1,63 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:2.0.50727.4200
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Optimizer.Properties {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    internal class Resources {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal Resources() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Optimizer.Properties.Resources", typeof(Resources).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        internal static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+    }
+}
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Resources.resx
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Resources.resx	(revision 2546)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/Properties/Resources.resx	(revision 2546)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/NewToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/NewToolBarItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/NewToolBarItem.cs	(revision 2546)
@@ -10,17 +10,14 @@
 
 namespace HeuristicLab.Optimizer {
-  public class NewToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class NewToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "New..."; }
     }
-
     public override string ToolTipText {
       get { return "New Item (Ctrl + N)"; }
     }
-
     public override int Position {
       get { return 10; }
     }
-
     public override Image Image {
       get { return Resources.NewIcon; }
@@ -28,5 +25,5 @@
 
     public override void Execute() {
-      Actions.NewAction.Execute();
+      FileManager.New();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/OpenToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/OpenToolBarItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/OpenToolBarItem.cs	(revision 2546)
@@ -10,17 +10,14 @@
 
 namespace HeuristicLab.Optimizer {
-  public class OpenToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class OpenToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "Open..."; }
     }
-
     public override string ToolTipText {
       get { return "Open File (Ctrl + O)"; }
     }
-
     public override int Position {
       get { return 20; }
     }
-
     public override Image Image {
       get { return Resources.OpenIcon; }
@@ -28,5 +25,5 @@
 
     public override void Execute() {
-      Actions.OpenAction.Execute();
+      FileManager.Open();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveAllToolBarItem.cs	(revision 2546)
@@ -10,23 +10,27 @@
 
 namespace HeuristicLab.Optimizer {
-  public class SaveAllToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class SaveAllToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "Save All"; }
     }
-
     public override string ToolTipText {
       get { return "Save All Files"; }
     }
-
     public override int Position {
       get { return 40; }
     }
-
     public override Image Image {
       get { return Resources.SaveAllIcon; }
     }
 
+    public override void MainFormInitialized(object sender, EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+    public override void ActiveViewChanged(object sender, EventArgs e) {
+      ToolStripItem.Enabled = MainFormManager.MainForm.Views.FirstOrDefault() != null;
+    }
+
     public override void Execute() {
-      Actions.SaveAllAction.Execute();
+      FileManager.SaveAll();
     }
   }
Index: /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveToolBarItem.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Optimizer/3.3/ToolBarItems/SaveToolBarItem.cs	(revision 2546)
@@ -8,25 +8,32 @@
 using HeuristicLab.MainForm.WindowsForms;
 using HeuristicLab.Common.Resources;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
 
 namespace HeuristicLab.Optimizer {
-  public class SaveToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
+  internal class SaveToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItemBase, IOptimizerUserInterfaceItemProvider {
     public override string Name {
       get { return "Save"; }
     }
-
     public override string ToolTipText {
       get { return "Save File (Ctrl + S)"; }
     }
-
     public override int Position {
       get { return 30; }
     }
-
     public override Image Image {
       get { return Resources.SaveIcon; }
     }
 
+    public override void MainFormInitialized(object sender, EventArgs e) {
+      ToolStripItem.Enabled = false;
+    }
+    public override void ActiveViewChanged(object sender, EventArgs e) {
+      IItemView activeView = MainFormManager.MainForm.ActiveView as IItemView;
+      ToolStripItem.Enabled = ((activeView != null) && (CreatableAttribute.IsCreatable(activeView.Item.GetType())));
+    }
+
     public override void Execute() {
-      Actions.SaveAction.Execute();
+      FileManager.Save();
     }
   }
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPInjectorView.cs	(revision 2546)
@@ -38,5 +38,5 @@
   /// </summary>
   [Content(typeof(TSPInjector), true)]
-  public partial class TSPInjectorView : ViewBase {
+  public partial class TSPInjectorView : ItemViewBase {
     /// <summary>
     /// Gets or set the <see cref="TSPInjector"/> to represent visually.
Index: /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.Routing.TSP/3.3/TSPTourView.cs	(revision 2546)
@@ -39,5 +39,5 @@
   /// </summary>
   [Content(typeof(TSPTour), true)]
-  public partial class TSPTourView : ViewBase {
+  public partial class TSPTourView : ItemViewBase {
     /// <summary>
     /// Gets or sets the <see cref="TSPTour"/> to represent visually.
Index: /trunk/sources/HeuristicLab.SGA/3.3/HeuristicLab.SGA-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/HeuristicLab.SGA-3.3.csproj	(revision 2545)
+++ /trunk/sources/HeuristicLab.SGA/3.3/HeuristicLab.SGA-3.3.csproj	(revision 2546)
@@ -87,9 +87,9 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="SGA.cs" />
-    <Compile Include="SGAEditor.cs">
+    <Compile Include="SGAView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="SGAEditor.Designer.cs">
-      <DependentUpon>SGAEditor.cs</DependentUpon>
+    <Compile Include="SGAView.Designer.cs">
+      <DependentUpon>SGAView.cs</DependentUpon>
     </Compile>
   </ItemGroup>
@@ -157,7 +157,6 @@
   </ItemGroup>
   <ItemGroup>
-    <EmbeddedResource Include="SGAEditor.resx">
-      <SubType>Designer</SubType>
-      <DependentUpon>SGAEditor.cs</DependentUpon>
+    <EmbeddedResource Include="SGAView.resx">
+      <DependentUpon>SGAView.cs</DependentUpon>
     </EmbeddedResource>
   </ItemGroup>
Index: unk/sources/HeuristicLab.SGA/3.3/SGAEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/SGAEditor.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,644 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.SGA {
-  partial class SGAEditor {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (chooseOperatorDialog != null) chooseOperatorDialog.Dispose();
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.executeButton = new System.Windows.Forms.Button();
-      this.tabControl = new System.Windows.Forms.TabControl();
-      this.parametersTabPage = new System.Windows.Forms.TabPage();
-      this.setEvaluationButton = new System.Windows.Forms.Button();
-      this.setMutationButton = new System.Windows.Forms.Button();
-      this.setCrossoverButton = new System.Windows.Forms.Button();
-      this.setSelectionButton = new System.Windows.Forms.Button();
-      this.setSolutionGenerationButton = new System.Windows.Forms.Button();
-      this.setProblemInitializationButton = new System.Windows.Forms.Button();
-      this.evaluationTextBox = new System.Windows.Forms.TextBox();
-      this.mutationTextBox = new System.Windows.Forms.TextBox();
-      this.crossoverTextBox = new System.Windows.Forms.TextBox();
-      this.selectionTextBox = new System.Windows.Forms.TextBox();
-      this.solutionGenerationTextBox = new System.Windows.Forms.TextBox();
-      this.problemInitializationTextBox = new System.Windows.Forms.TextBox();
-      this.setRandomSeedRandomlyCheckBox = new System.Windows.Forms.CheckBox();
-      this.elitesTextBox = new System.Windows.Forms.TextBox();
-      this.evaluationLabel = new System.Windows.Forms.Label();
-      this.mutationLabel = new System.Windows.Forms.Label();
-      this.selectionLabel = new System.Windows.Forms.Label();
-      this.crossoverLabel = new System.Windows.Forms.Label();
-      this.solutionGenerationLabel = new System.Windows.Forms.Label();
-      this.problemInitializationLabel = new System.Windows.Forms.Label();
-      this.elitesLabel = new System.Windows.Forms.Label();
-      this.mutationRateTextBox = new System.Windows.Forms.TextBox();
-      this.mutationRateLabel = new System.Windows.Forms.Label();
-      this.maximumGenerationsTextBox = new System.Windows.Forms.TextBox();
-      this.maximumGenerationsLabel = new System.Windows.Forms.Label();
-      this.randomSeedTextBox = new System.Windows.Forms.TextBox();
-      this.populationSizeTextBox = new System.Windows.Forms.TextBox();
-      this.setRandomSeedRandomlyLabel = new System.Windows.Forms.Label();
-      this.randomSeedLabel = new System.Windows.Forms.Label();
-      this.populationSizeLabel = new System.Windows.Forms.Label();
-      this.scopesTabPage = new System.Windows.Forms.TabPage();
-      this.scopeView = new HeuristicLab.Core.Views.ScopeView();
-      this.abortButton = new System.Windows.Forms.Button();
-      this.resetButton = new System.Windows.Forms.Button();
-      this.cloneEngineButton = new System.Windows.Forms.Button();
-      this.viewProblemInitializationButton = new System.Windows.Forms.Button();
-      this.viewSolutionGenerationButton = new System.Windows.Forms.Button();
-      this.viewSelectionButton = new System.Windows.Forms.Button();
-      this.viewCrossoverButton = new System.Windows.Forms.Button();
-      this.viewMutationButton = new System.Windows.Forms.Button();
-      this.viewEvaluationButton = new System.Windows.Forms.Button();
-      this.tabControl.SuspendLayout();
-      this.parametersTabPage.SuspendLayout();
-      this.scopesTabPage.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // executeButton
-      // 
-      this.executeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.executeButton.Location = new System.Drawing.Point(0, 396);
-      this.executeButton.Name = "executeButton";
-      this.executeButton.Size = new System.Drawing.Size(75, 23);
-      this.executeButton.TabIndex = 1;
-      this.executeButton.Text = "&Execute";
-      this.executeButton.UseVisualStyleBackColor = true;
-      this.executeButton.Click += new System.EventHandler(this.executeButton_Click);
-      // 
-      // tabControl
-      // 
-      this.tabControl.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.tabControl.Controls.Add(this.parametersTabPage);
-      this.tabControl.Controls.Add(this.scopesTabPage);
-      this.tabControl.Location = new System.Drawing.Point(0, 0);
-      this.tabControl.Name = "tabControl";
-      this.tabControl.SelectedIndex = 0;
-      this.tabControl.Size = new System.Drawing.Size(526, 390);
-      this.tabControl.TabIndex = 0;
-      // 
-      // parametersTabPage
-      // 
-      this.parametersTabPage.Controls.Add(this.setEvaluationButton);
-      this.parametersTabPage.Controls.Add(this.setMutationButton);
-      this.parametersTabPage.Controls.Add(this.setCrossoverButton);
-      this.parametersTabPage.Controls.Add(this.setSelectionButton);
-      this.parametersTabPage.Controls.Add(this.setSolutionGenerationButton);
-      this.parametersTabPage.Controls.Add(this.viewEvaluationButton);
-      this.parametersTabPage.Controls.Add(this.viewMutationButton);
-      this.parametersTabPage.Controls.Add(this.viewCrossoverButton);
-      this.parametersTabPage.Controls.Add(this.viewSelectionButton);
-      this.parametersTabPage.Controls.Add(this.viewSolutionGenerationButton);
-      this.parametersTabPage.Controls.Add(this.viewProblemInitializationButton);
-      this.parametersTabPage.Controls.Add(this.setProblemInitializationButton);
-      this.parametersTabPage.Controls.Add(this.evaluationTextBox);
-      this.parametersTabPage.Controls.Add(this.mutationTextBox);
-      this.parametersTabPage.Controls.Add(this.crossoverTextBox);
-      this.parametersTabPage.Controls.Add(this.selectionTextBox);
-      this.parametersTabPage.Controls.Add(this.solutionGenerationTextBox);
-      this.parametersTabPage.Controls.Add(this.problemInitializationTextBox);
-      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyCheckBox);
-      this.parametersTabPage.Controls.Add(this.elitesTextBox);
-      this.parametersTabPage.Controls.Add(this.evaluationLabel);
-      this.parametersTabPage.Controls.Add(this.mutationLabel);
-      this.parametersTabPage.Controls.Add(this.selectionLabel);
-      this.parametersTabPage.Controls.Add(this.crossoverLabel);
-      this.parametersTabPage.Controls.Add(this.solutionGenerationLabel);
-      this.parametersTabPage.Controls.Add(this.problemInitializationLabel);
-      this.parametersTabPage.Controls.Add(this.elitesLabel);
-      this.parametersTabPage.Controls.Add(this.mutationRateTextBox);
-      this.parametersTabPage.Controls.Add(this.mutationRateLabel);
-      this.parametersTabPage.Controls.Add(this.maximumGenerationsTextBox);
-      this.parametersTabPage.Controls.Add(this.maximumGenerationsLabel);
-      this.parametersTabPage.Controls.Add(this.randomSeedTextBox);
-      this.parametersTabPage.Controls.Add(this.populationSizeTextBox);
-      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyLabel);
-      this.parametersTabPage.Controls.Add(this.randomSeedLabel);
-      this.parametersTabPage.Controls.Add(this.populationSizeLabel);
-      this.parametersTabPage.Location = new System.Drawing.Point(4, 22);
-      this.parametersTabPage.Name = "parametersTabPage";
-      this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.parametersTabPage.Size = new System.Drawing.Size(518, 364);
-      this.parametersTabPage.TabIndex = 0;
-      this.parametersTabPage.Text = "Parameters";
-      this.parametersTabPage.UseVisualStyleBackColor = true;
-      // 
-      // setEvaluationButton
-      // 
-      this.setEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setEvaluationButton.Location = new System.Drawing.Point(469, 338);
-      this.setEvaluationButton.Name = "setEvaluationButton";
-      this.setEvaluationButton.Size = new System.Drawing.Size(43, 20);
-      this.setEvaluationButton.TabIndex = 35;
-      this.setEvaluationButton.Text = "Set...";
-      this.setEvaluationButton.UseVisualStyleBackColor = true;
-      this.setEvaluationButton.Click += new System.EventHandler(this.setEvaluationButton_Click);
-      // 
-      // setMutationButton
-      // 
-      this.setMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setMutationButton.Location = new System.Drawing.Point(469, 312);
-      this.setMutationButton.Name = "setMutationButton";
-      this.setMutationButton.Size = new System.Drawing.Size(43, 20);
-      this.setMutationButton.TabIndex = 31;
-      this.setMutationButton.Text = "Set...";
-      this.setMutationButton.UseVisualStyleBackColor = true;
-      this.setMutationButton.Click += new System.EventHandler(this.setMutationButton_Click);
-      // 
-      // setCrossoverButton
-      // 
-      this.setCrossoverButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setCrossoverButton.Location = new System.Drawing.Point(469, 286);
-      this.setCrossoverButton.Name = "setCrossoverButton";
-      this.setCrossoverButton.Size = new System.Drawing.Size(43, 20);
-      this.setCrossoverButton.TabIndex = 27;
-      this.setCrossoverButton.Text = "Set...";
-      this.setCrossoverButton.UseVisualStyleBackColor = true;
-      this.setCrossoverButton.Click += new System.EventHandler(this.setCrossoverButton_Click);
-      // 
-      // setSelectionButton
-      // 
-      this.setSelectionButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setSelectionButton.Location = new System.Drawing.Point(469, 260);
-      this.setSelectionButton.Name = "setSelectionButton";
-      this.setSelectionButton.Size = new System.Drawing.Size(43, 20);
-      this.setSelectionButton.TabIndex = 23;
-      this.setSelectionButton.Text = "Set...";
-      this.setSelectionButton.UseVisualStyleBackColor = true;
-      this.setSelectionButton.Click += new System.EventHandler(this.setSelectionButton_Click);
-      // 
-      // setSolutionGenerationButton
-      // 
-      this.setSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setSolutionGenerationButton.Location = new System.Drawing.Point(469, 234);
-      this.setSolutionGenerationButton.Name = "setSolutionGenerationButton";
-      this.setSolutionGenerationButton.Size = new System.Drawing.Size(43, 20);
-      this.setSolutionGenerationButton.TabIndex = 19;
-      this.setSolutionGenerationButton.Text = "Set...";
-      this.setSolutionGenerationButton.UseVisualStyleBackColor = true;
-      this.setSolutionGenerationButton.Click += new System.EventHandler(this.setSolutionGenerationButton_Click);
-      // 
-      // setProblemInitializationButton
-      // 
-      this.setProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setProblemInitializationButton.Location = new System.Drawing.Point(469, 208);
-      this.setProblemInitializationButton.Name = "setProblemInitializationButton";
-      this.setProblemInitializationButton.Size = new System.Drawing.Size(43, 20);
-      this.setProblemInitializationButton.TabIndex = 15;
-      this.setProblemInitializationButton.Text = "Set...";
-      this.setProblemInitializationButton.UseVisualStyleBackColor = true;
-      this.setProblemInitializationButton.Click += new System.EventHandler(this.setProblemInitializationButton_Click);
-      // 
-      // evaluationTextBox
-      // 
-      this.evaluationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.evaluationTextBox.Location = new System.Drawing.Point(218, 338);
-      this.evaluationTextBox.Name = "evaluationTextBox";
-      this.evaluationTextBox.ReadOnly = true;
-      this.evaluationTextBox.Size = new System.Drawing.Size(186, 20);
-      this.evaluationTextBox.TabIndex = 33;
-      // 
-      // mutationTextBox
-      // 
-      this.mutationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.mutationTextBox.Location = new System.Drawing.Point(218, 312);
-      this.mutationTextBox.Name = "mutationTextBox";
-      this.mutationTextBox.ReadOnly = true;
-      this.mutationTextBox.Size = new System.Drawing.Size(186, 20);
-      this.mutationTextBox.TabIndex = 29;
-      // 
-      // crossoverTextBox
-      // 
-      this.crossoverTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.crossoverTextBox.Location = new System.Drawing.Point(218, 286);
-      this.crossoverTextBox.Name = "crossoverTextBox";
-      this.crossoverTextBox.ReadOnly = true;
-      this.crossoverTextBox.Size = new System.Drawing.Size(186, 20);
-      this.crossoverTextBox.TabIndex = 25;
-      // 
-      // selectionTextBox
-      // 
-      this.selectionTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.selectionTextBox.Location = new System.Drawing.Point(218, 260);
-      this.selectionTextBox.Name = "selectionTextBox";
-      this.selectionTextBox.ReadOnly = true;
-      this.selectionTextBox.Size = new System.Drawing.Size(186, 20);
-      this.selectionTextBox.TabIndex = 21;
-      // 
-      // solutionGenerationTextBox
-      // 
-      this.solutionGenerationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.solutionGenerationTextBox.Location = new System.Drawing.Point(218, 234);
-      this.solutionGenerationTextBox.Name = "solutionGenerationTextBox";
-      this.solutionGenerationTextBox.ReadOnly = true;
-      this.solutionGenerationTextBox.Size = new System.Drawing.Size(186, 20);
-      this.solutionGenerationTextBox.TabIndex = 17;
-      // 
-      // problemInitializationTextBox
-      // 
-      this.problemInitializationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.problemInitializationTextBox.Location = new System.Drawing.Point(218, 208);
-      this.problemInitializationTextBox.Name = "problemInitializationTextBox";
-      this.problemInitializationTextBox.ReadOnly = true;
-      this.problemInitializationTextBox.Size = new System.Drawing.Size(186, 20);
-      this.problemInitializationTextBox.TabIndex = 13;
-      // 
-      // setRandomSeedRandomlyCheckBox
-      // 
-      this.setRandomSeedRandomlyCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setRandomSeedRandomlyCheckBox.AutoSize = true;
-      this.setRandomSeedRandomlyCheckBox.Location = new System.Drawing.Point(218, 6);
-      this.setRandomSeedRandomlyCheckBox.Name = "setRandomSeedRandomlyCheckBox";
-      this.setRandomSeedRandomlyCheckBox.Size = new System.Drawing.Size(15, 14);
-      this.setRandomSeedRandomlyCheckBox.TabIndex = 1;
-      this.setRandomSeedRandomlyCheckBox.UseVisualStyleBackColor = true;
-      // 
-      // elitesTextBox
-      // 
-      this.elitesTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.elitesTextBox.Location = new System.Drawing.Point(218, 156);
-      this.elitesTextBox.Name = "elitesTextBox";
-      this.elitesTextBox.Size = new System.Drawing.Size(186, 20);
-      this.elitesTextBox.TabIndex = 11;
-      // 
-      // evaluationLabel
-      // 
-      this.evaluationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.evaluationLabel.AutoSize = true;
-      this.evaluationLabel.Location = new System.Drawing.Point(65, 341);
-      this.evaluationLabel.Name = "evaluationLabel";
-      this.evaluationLabel.Size = new System.Drawing.Size(60, 13);
-      this.evaluationLabel.TabIndex = 32;
-      this.evaluationLabel.Text = "&Evaluation:";
-      // 
-      // mutationLabel
-      // 
-      this.mutationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.mutationLabel.AutoSize = true;
-      this.mutationLabel.Location = new System.Drawing.Point(65, 315);
-      this.mutationLabel.Name = "mutationLabel";
-      this.mutationLabel.Size = new System.Drawing.Size(51, 13);
-      this.mutationLabel.TabIndex = 28;
-      this.mutationLabel.Text = "&Mutation:";
-      // 
-      // selectionLabel
-      // 
-      this.selectionLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.selectionLabel.AutoSize = true;
-      this.selectionLabel.Location = new System.Drawing.Point(65, 263);
-      this.selectionLabel.Name = "selectionLabel";
-      this.selectionLabel.Size = new System.Drawing.Size(54, 13);
-      this.selectionLabel.TabIndex = 20;
-      this.selectionLabel.Text = "&Selection:";
-      // 
-      // crossoverLabel
-      // 
-      this.crossoverLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.crossoverLabel.AutoSize = true;
-      this.crossoverLabel.Location = new System.Drawing.Point(65, 289);
-      this.crossoverLabel.Name = "crossoverLabel";
-      this.crossoverLabel.Size = new System.Drawing.Size(57, 13);
-      this.crossoverLabel.TabIndex = 24;
-      this.crossoverLabel.Text = "&Crossover:";
-      // 
-      // solutionGenerationLabel
-      // 
-      this.solutionGenerationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.solutionGenerationLabel.AutoSize = true;
-      this.solutionGenerationLabel.Location = new System.Drawing.Point(65, 237);
-      this.solutionGenerationLabel.Name = "solutionGenerationLabel";
-      this.solutionGenerationLabel.Size = new System.Drawing.Size(103, 13);
-      this.solutionGenerationLabel.TabIndex = 16;
-      this.solutionGenerationLabel.Text = "&Solution Generation:";
-      // 
-      // problemInitializationLabel
-      // 
-      this.problemInitializationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.problemInitializationLabel.AutoSize = true;
-      this.problemInitializationLabel.Location = new System.Drawing.Point(65, 211);
-      this.problemInitializationLabel.Name = "problemInitializationLabel";
-      this.problemInitializationLabel.Size = new System.Drawing.Size(105, 13);
-      this.problemInitializationLabel.TabIndex = 12;
-      this.problemInitializationLabel.Text = "&Problem Initialization:";
-      // 
-      // elitesLabel
-      // 
-      this.elitesLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.elitesLabel.AutoSize = true;
-      this.elitesLabel.Location = new System.Drawing.Point(65, 159);
-      this.elitesLabel.Name = "elitesLabel";
-      this.elitesLabel.Size = new System.Drawing.Size(35, 13);
-      this.elitesLabel.TabIndex = 10;
-      this.elitesLabel.Text = "&Elites:";
-      // 
-      // mutationRateTextBox
-      // 
-      this.mutationRateTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.mutationRateTextBox.Location = new System.Drawing.Point(218, 130);
-      this.mutationRateTextBox.Name = "mutationRateTextBox";
-      this.mutationRateTextBox.Size = new System.Drawing.Size(186, 20);
-      this.mutationRateTextBox.TabIndex = 9;
-      // 
-      // mutationRateLabel
-      // 
-      this.mutationRateLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.mutationRateLabel.AutoSize = true;
-      this.mutationRateLabel.Location = new System.Drawing.Point(65, 133);
-      this.mutationRateLabel.Name = "mutationRateLabel";
-      this.mutationRateLabel.Size = new System.Drawing.Size(77, 13);
-      this.mutationRateLabel.TabIndex = 8;
-      this.mutationRateLabel.Text = "&Mutation Rate:";
-      // 
-      // maximumGenerationsTextBox
-      // 
-      this.maximumGenerationsTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.maximumGenerationsTextBox.Location = new System.Drawing.Point(218, 104);
-      this.maximumGenerationsTextBox.Name = "maximumGenerationsTextBox";
-      this.maximumGenerationsTextBox.Size = new System.Drawing.Size(186, 20);
-      this.maximumGenerationsTextBox.TabIndex = 7;
-      // 
-      // maximumGenerationsLabel
-      // 
-      this.maximumGenerationsLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.maximumGenerationsLabel.AutoSize = true;
-      this.maximumGenerationsLabel.Location = new System.Drawing.Point(65, 107);
-      this.maximumGenerationsLabel.Name = "maximumGenerationsLabel";
-      this.maximumGenerationsLabel.Size = new System.Drawing.Size(114, 13);
-      this.maximumGenerationsLabel.TabIndex = 6;
-      this.maximumGenerationsLabel.Text = "Maximum &Generations:";
-      // 
-      // randomSeedTextBox
-      // 
-      this.randomSeedTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.randomSeedTextBox.Location = new System.Drawing.Point(218, 26);
-      this.randomSeedTextBox.Name = "randomSeedTextBox";
-      this.randomSeedTextBox.Size = new System.Drawing.Size(186, 20);
-      this.randomSeedTextBox.TabIndex = 3;
-      // 
-      // populationSizeTextBox
-      // 
-      this.populationSizeTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.populationSizeTextBox.Location = new System.Drawing.Point(218, 78);
-      this.populationSizeTextBox.Name = "populationSizeTextBox";
-      this.populationSizeTextBox.Size = new System.Drawing.Size(186, 20);
-      this.populationSizeTextBox.TabIndex = 5;
-      // 
-      // setRandomSeedRandomlyLabel
-      // 
-      this.setRandomSeedRandomlyLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.setRandomSeedRandomlyLabel.AutoSize = true;
-      this.setRandomSeedRandomlyLabel.Location = new System.Drawing.Point(65, 6);
-      this.setRandomSeedRandomlyLabel.Name = "setRandomSeedRandomlyLabel";
-      this.setRandomSeedRandomlyLabel.Size = new System.Drawing.Size(147, 13);
-      this.setRandomSeedRandomlyLabel.TabIndex = 0;
-      this.setRandomSeedRandomlyLabel.Text = "Set &Random Seed Randomly:";
-      // 
-      // randomSeedLabel
-      // 
-      this.randomSeedLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.randomSeedLabel.AutoSize = true;
-      this.randomSeedLabel.Location = new System.Drawing.Point(65, 29);
-      this.randomSeedLabel.Name = "randomSeedLabel";
-      this.randomSeedLabel.Size = new System.Drawing.Size(78, 13);
-      this.randomSeedLabel.TabIndex = 2;
-      this.randomSeedLabel.Text = "&Random Seed:";
-      // 
-      // populationSizeLabel
-      // 
-      this.populationSizeLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.populationSizeLabel.AutoSize = true;
-      this.populationSizeLabel.Location = new System.Drawing.Point(65, 81);
-      this.populationSizeLabel.Name = "populationSizeLabel";
-      this.populationSizeLabel.Size = new System.Drawing.Size(83, 13);
-      this.populationSizeLabel.TabIndex = 4;
-      this.populationSizeLabel.Text = "&Population Size:";
-      // 
-      // scopesTabPage
-      // 
-      this.scopesTabPage.Controls.Add(this.scopeView);
-      this.scopesTabPage.Location = new System.Drawing.Point(4, 22);
-      this.scopesTabPage.Name = "scopesTabPage";
-      this.scopesTabPage.Padding = new System.Windows.Forms.Padding(3);
-      this.scopesTabPage.Size = new System.Drawing.Size(518, 364);
-      this.scopesTabPage.TabIndex = 2;
-      this.scopesTabPage.Text = "Scopes";
-      this.scopesTabPage.UseVisualStyleBackColor = true;
-      // 
-      // scopeView
-      // 
-      this.scopeView.Caption = "Scope";
-      this.scopeView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scopeView.Location = new System.Drawing.Point(3, 3);
-      this.scopeView.Name = "scopeView";
-      this.scopeView.Scope = null;
-      this.scopeView.Size = new System.Drawing.Size(512, 358);
-      this.scopeView.TabIndex = 0;
-      // 
-      // abortButton
-      // 
-      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.abortButton.Enabled = false;
-      this.abortButton.Location = new System.Drawing.Point(81, 396);
-      this.abortButton.Name = "abortButton";
-      this.abortButton.Size = new System.Drawing.Size(75, 23);
-      this.abortButton.TabIndex = 2;
-      this.abortButton.Text = "&Abort";
-      this.abortButton.UseVisualStyleBackColor = true;
-      this.abortButton.Click += new System.EventHandler(this.abortButton_Click);
-      // 
-      // resetButton
-      // 
-      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
-      this.resetButton.Location = new System.Drawing.Point(162, 396);
-      this.resetButton.Name = "resetButton";
-      this.resetButton.Size = new System.Drawing.Size(75, 23);
-      this.resetButton.TabIndex = 3;
-      this.resetButton.Text = "&Reset";
-      this.resetButton.UseVisualStyleBackColor = true;
-      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
-      // 
-      // cloneEngineButton
-      // 
-      this.cloneEngineButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.cloneEngineButton.Location = new System.Drawing.Point(420, 396);
-      this.cloneEngineButton.Name = "cloneEngineButton";
-      this.cloneEngineButton.Size = new System.Drawing.Size(106, 23);
-      this.cloneEngineButton.TabIndex = 4;
-      this.cloneEngineButton.Text = "&Clone Engine...";
-      this.cloneEngineButton.UseVisualStyleBackColor = true;
-      this.cloneEngineButton.Click += new System.EventHandler(this.cloneEngineButton_Click);
-      // 
-      // viewProblemInitializationButton
-      // 
-      this.viewProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.viewProblemInitializationButton.Location = new System.Drawing.Point(410, 208);
-      this.viewProblemInitializationButton.Name = "viewProblemInitializationButton";
-      this.viewProblemInitializationButton.Size = new System.Drawing.Size(53, 20);
-      this.viewProblemInitializationButton.TabIndex = 14;
-      this.viewProblemInitializationButton.Text = "View...";
-      this.viewProblemInitializationButton.UseVisualStyleBackColor = true;
-      this.viewProblemInitializationButton.Click += new System.EventHandler(this.viewProblemInitializationButton_Click);
-      // 
-      // viewSolutionGenerationButton
-      // 
-      this.viewSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.viewSolutionGenerationButton.Location = new System.Drawing.Point(410, 234);
-      this.viewSolutionGenerationButton.Name = "viewSolutionGenerationButton";
-      this.viewSolutionGenerationButton.Size = new System.Drawing.Size(53, 20);
-      this.viewSolutionGenerationButton.TabIndex = 18;
-      this.viewSolutionGenerationButton.Text = "View...";
-      this.viewSolutionGenerationButton.UseVisualStyleBackColor = true;
-      this.viewSolutionGenerationButton.Click += new System.EventHandler(this.viewSolutionGenerationButton_Click);
-      // 
-      // viewSelectionButton
-      // 
-      this.viewSelectionButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.viewSelectionButton.Location = new System.Drawing.Point(410, 260);
-      this.viewSelectionButton.Name = "viewSelectionButton";
-      this.viewSelectionButton.Size = new System.Drawing.Size(53, 20);
-      this.viewSelectionButton.TabIndex = 22;
-      this.viewSelectionButton.Text = "View...";
-      this.viewSelectionButton.UseVisualStyleBackColor = true;
-      this.viewSelectionButton.Click += new System.EventHandler(this.viewSelectionButton_Click);
-      // 
-      // viewCrossoverButton
-      // 
-      this.viewCrossoverButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.viewCrossoverButton.Location = new System.Drawing.Point(410, 286);
-      this.viewCrossoverButton.Name = "viewCrossoverButton";
-      this.viewCrossoverButton.Size = new System.Drawing.Size(53, 20);
-      this.viewCrossoverButton.TabIndex = 26;
-      this.viewCrossoverButton.Text = "View...";
-      this.viewCrossoverButton.UseVisualStyleBackColor = true;
-      this.viewCrossoverButton.Click += new System.EventHandler(this.viewCrossoverButton_Click);
-      // 
-      // viewMutationButton
-      // 
-      this.viewMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.viewMutationButton.Location = new System.Drawing.Point(410, 312);
-      this.viewMutationButton.Name = "viewMutationButton";
-      this.viewMutationButton.Size = new System.Drawing.Size(53, 20);
-      this.viewMutationButton.TabIndex = 30;
-      this.viewMutationButton.Text = "View...";
-      this.viewMutationButton.UseVisualStyleBackColor = true;
-      this.viewMutationButton.Click += new System.EventHandler(this.viewMutationButton_Click);
-      // 
-      // viewEvaluationButton
-      // 
-      this.viewEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
-      this.viewEvaluationButton.Location = new System.Drawing.Point(410, 338);
-      this.viewEvaluationButton.Name = "viewEvaluationButton";
-      this.viewEvaluationButton.Size = new System.Drawing.Size(53, 20);
-      this.viewEvaluationButton.TabIndex = 34;
-      this.viewEvaluationButton.Text = "View...";
-      this.viewEvaluationButton.UseVisualStyleBackColor = true;
-      this.viewEvaluationButton.Click += new System.EventHandler(this.viewEvaluationButton_Click);
-      // 
-      // SGAEditor
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.tabControl);
-      this.Controls.Add(this.cloneEngineButton);
-      this.Controls.Add(this.resetButton);
-      this.Controls.Add(this.abortButton);
-      this.Controls.Add(this.executeButton);
-      this.Name = "SGAEditor";
-      this.Size = new System.Drawing.Size(526, 419);
-      this.tabControl.ResumeLayout(false);
-      this.parametersTabPage.ResumeLayout(false);
-      this.parametersTabPage.PerformLayout();
-      this.scopesTabPage.ResumeLayout(false);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.Button executeButton;
-    private System.Windows.Forms.TabControl tabControl;
-    private System.Windows.Forms.TabPage parametersTabPage;
-    private System.Windows.Forms.Button abortButton;
-    private System.Windows.Forms.Button resetButton;
-    private System.Windows.Forms.TextBox mutationRateTextBox;
-    private System.Windows.Forms.Label mutationRateLabel;
-    private System.Windows.Forms.TextBox populationSizeTextBox;
-    private System.Windows.Forms.Label populationSizeLabel;
-    private System.Windows.Forms.TabPage scopesTabPage;
-    private System.Windows.Forms.TextBox maximumGenerationsTextBox;
-    private System.Windows.Forms.Label maximumGenerationsLabel;
-    private System.Windows.Forms.TextBox elitesTextBox;
-    private System.Windows.Forms.Label elitesLabel;
-    private System.Windows.Forms.TextBox randomSeedTextBox;
-    private System.Windows.Forms.Label setRandomSeedRandomlyLabel;
-    private System.Windows.Forms.Label randomSeedLabel;
-    private System.Windows.Forms.CheckBox setRandomSeedRandomlyCheckBox;
-    private System.Windows.Forms.Label problemInitializationLabel;
-    private System.Windows.Forms.Label evaluationLabel;
-    private System.Windows.Forms.Label mutationLabel;
-    private System.Windows.Forms.Label crossoverLabel;
-    private System.Windows.Forms.Label solutionGenerationLabel;
-    private System.Windows.Forms.Button cloneEngineButton;
-    private System.Windows.Forms.TextBox mutationTextBox;
-    private System.Windows.Forms.TextBox crossoverTextBox;
-    private System.Windows.Forms.TextBox selectionTextBox;
-    private System.Windows.Forms.TextBox solutionGenerationTextBox;
-    private System.Windows.Forms.TextBox problemInitializationTextBox;
-    private System.Windows.Forms.Label selectionLabel;
-    private System.Windows.Forms.TextBox evaluationTextBox;
-    private System.Windows.Forms.Button setProblemInitializationButton;
-    private System.Windows.Forms.Button setEvaluationButton;
-    private System.Windows.Forms.Button setMutationButton;
-    private System.Windows.Forms.Button setCrossoverButton;
-    private System.Windows.Forms.Button setSelectionButton;
-    private System.Windows.Forms.Button setSolutionGenerationButton;
-    private HeuristicLab.Core.Views.ScopeView scopeView;
-    private System.Windows.Forms.Button viewEvaluationButton;
-    private System.Windows.Forms.Button viewMutationButton;
-    private System.Windows.Forms.Button viewCrossoverButton;
-    private System.Windows.Forms.Button viewSelectionButton;
-    private System.Windows.Forms.Button viewSolutionGenerationButton;
-    private System.Windows.Forms.Button viewProblemInitializationButton;
-  }
-}
Index: unk/sources/HeuristicLab.SGA/3.3/SGAEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/SGAEditor.cs	(revision 2545)
+++ 	(revision )
@@ -1,224 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.PluginInfrastructure;
-using HeuristicLab.Core;
-using HeuristicLab.Common;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.SGA {
-  /// <summary>
-  /// Visual representation of the <see cref="SGA"/> class.
-  /// </summary>
-  [Content(typeof(SGA), true)]
-  public partial class SGAEditor : EditorBase {
-    private ChooseOperatorDialog chooseOperatorDialog;
-
-    /// <summary>
-    /// Gets or sets the <see cref="SGA"/> item to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.
-    /// No own data storage present!</remarks>
-    public SGA SGA {
-      get { return (SGA)Item; }
-      set { base.Item = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="SGAEditor"/>.
-    /// </summary>
-    public SGAEditor() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="SGAEditor"/> with the given <paramref name="sga"/>.
-    /// </summary>
-    /// <param name="sga">The simple genetic algorithm to represent visually.</param>
-    public SGAEditor(SGA sga)
-      : this() {
-      SGA = sga;
-    }
-
-    /// <summary>
-    /// Removes the eventhandlers from the underlying <see cref="IEngine"/> of the <see cref="SGA"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="EditorBase"/>.</remarks>
-    protected override void RemoveItemEvents() {
-      SGA.Engine.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
-      SGA.Engine.Finished -= new EventHandler(Engine_Finished);
-      scopeView.Scope = null;
-      base.RemoveItemEvents();
-    }
-    /// <summary>
-    /// Adds eventhandlers to the underlying <see cref="IEngine"/> of the <see cref="SGA"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="EditorBase"/>.</remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      SGA.Engine.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
-      SGA.Engine.Finished += new EventHandler(Engine_Finished);
-      SetDataBinding();
-      scopeView.Scope = SGA.Engine.GlobalScope;
-    }
-
-    /// <summary>
-    /// Updates all controls with the latest data of the model.
-    /// </summary>
-    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (SGA == null) {
-        tabControl.Enabled = false;
-      } else {
-        tabControl.Enabled = true;
-        problemInitializationTextBox.Text = SGA.ProblemInjector.GetType().Name;
-        solutionGenerationTextBox.Text = SGA.SolutionGenerator.GetType().Name;
-        selectionTextBox.Text = SGA.Selector.GetType().Name;
-        crossoverTextBox.Text = SGA.Crossover.GetType().Name;
-        mutationTextBox.Text = SGA.Mutator.GetType().Name;
-        evaluationTextBox.Text = SGA.Evaluator.GetType().Name;
-      }
-    }
-
-    private void SetDataBinding() {
-      setRandomSeedRandomlyCheckBox.DataBindings.Add("Checked", SGA, "SetSeedRandomly");
-      randomSeedTextBox.DataBindings.Add("Text", SGA, "Seed");
-      populationSizeTextBox.DataBindings.Add("Text", SGA, "PopulationSize");
-      maximumGenerationsTextBox.DataBindings.Add("Text", SGA, "MaximumGenerations");
-      mutationRateTextBox.DataBindings.Add("Text", SGA, "MutationRate");
-      elitesTextBox.DataBindings.Add("Text", SGA, "Elites");
-    }
-
-    #region Button Events
-    private void viewProblemInitializationButton_Click(object sender, EventArgs e) {
-      HeuristicLab.Core.Views.IView view = (HeuristicLab.Core.Views.IView)MainFormManager.CreateDefaultView(SGA.ProblemInjector);
-      if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
-    }
-    private void viewSolutionGenerationButton_Click(object sender, EventArgs e) {
-      HeuristicLab.Core.Views.IView view = (HeuristicLab.Core.Views.IView)MainFormManager.CreateDefaultView(SGA.SolutionGenerator);
-      if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
-    }
-    private void viewSelectionButton_Click(object sender, EventArgs e) {
-      HeuristicLab.Core.Views.IView view = (HeuristicLab.Core.Views.IView)MainFormManager.CreateDefaultView(SGA.Selector);
-      if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
-    }
-    private void viewCrossoverButton_Click(object sender, EventArgs e) {
-      HeuristicLab.Core.Views.IView view = (HeuristicLab.Core.Views.IView)MainFormManager.CreateDefaultView(SGA.Crossover);
-      if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
-    }
-    private void viewMutationButton_Click(object sender, EventArgs e) {
-      HeuristicLab.Core.Views.IView view = (HeuristicLab.Core.Views.IView)MainFormManager.CreateDefaultView(SGA.Mutator);
-      if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
-    }
-    private void viewEvaluationButton_Click(object sender, EventArgs e) {
-      HeuristicLab.Core.Views.IView view = (HeuristicLab.Core.Views.IView)MainFormManager.CreateDefaultView(SGA.Evaluator);
-      if (view != null)
-        PluginManager.ControlManager.ShowControl(view);
-    }
-    private void setProblemInitializationButton_Click(object sender, EventArgs e) {
-      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
-      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
-        SGA.ProblemInjector = chooseOperatorDialog.Operator;
-        problemInitializationTextBox.Text = SGA.ProblemInjector.GetType().Name;
-      }
-    }
-    private void setSolutionGenerationButton_Click(object sender, EventArgs e) {
-      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
-      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
-        SGA.SolutionGenerator= chooseOperatorDialog.Operator;
-        solutionGenerationTextBox.Text = SGA.SolutionGenerator.GetType().Name;
-      }
-    }
-    private void setSelectionButton_Click(object sender, EventArgs e) {
-      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
-      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
-        SGA.Selector = chooseOperatorDialog.Operator;
-        selectionTextBox.Text = SGA.Selector.GetType().Name;
-      }
-    }
-    private void setCrossoverButton_Click(object sender, EventArgs e) {
-      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
-      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
-        SGA.Crossover = chooseOperatorDialog.Operator;
-        crossoverTextBox.Text = SGA.Crossover.GetType().Name;
-      }
-    }
-    private void setMutationButton_Click(object sender, EventArgs e) {
-      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
-      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
-        SGA.Mutator = chooseOperatorDialog.Operator;
-        mutationTextBox.Text = SGA.Mutator.GetType().Name;
-      }
-    }
-    private void setEvaluationButton_Click(object sender, EventArgs e) {
-      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
-      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
-        SGA.Evaluator = chooseOperatorDialog.Operator;
-        evaluationTextBox.Text = SGA.Evaluator.GetType().Name;
-      }
-    }
-    private void executeButton_Click(object sender, EventArgs e) {
-      executeButton.Enabled = false;
-      abortButton.Enabled = true;
-      SGA.Engine.Execute();
-    }
-    private void abortButton_Click(object sender, EventArgs e) {
-      SGA.Engine.Abort();
-    }
-    private void resetButton_Click(object sender, EventArgs e) {
-      SGA.Engine.Reset();
-    }
-    private void cloneEngineButton_Click(object sender, EventArgs e) {
-      IEngine clone = (IEngine)SGA.Engine.Clone();
-      IEditor editor = (IEditor)MainFormManager.CreateDefaultView(clone);
-      PluginManager.ControlManager.ShowControl(editor);
-    }
-    #endregion
-
-    #region Engine Events
-    private delegate void OnExceptionEventDelegate(object sender, EventArgs<Exception> e);
-    private void Engine_ExceptionOccurred(object sender, EventArgs<Exception> e) {
-      if (InvokeRequired)
-        Invoke(new OnExceptionEventDelegate(Engine_ExceptionOccurred), sender, e);
-      else
-        HeuristicLab.Core.Views.Auxiliary.ShowErrorMessageBox(e.Value);
-    }
-    private void Engine_Finished(object sender, EventArgs e) {
-      scopeView.Refresh();
-      executeButton.Enabled = true;
-      abortButton.Enabled = false;
-    }
-    #endregion
-  }
-}
Index: unk/sources/HeuristicLab.SGA/3.3/SGAEditor.resx
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/SGAEditor.resx	(revision 2545)
+++ 	(revision )
@@ -1,120 +1,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: /trunk/sources/HeuristicLab.SGA/3.3/SGAView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/SGAView.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.SGA/3.3/SGAView.Designer.cs	(revision 2546)
@@ -0,0 +1,644 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.SGA {
+  partial class SGAView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (chooseOperatorDialog != null) chooseOperatorDialog.Dispose();
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.executeButton = new System.Windows.Forms.Button();
+      this.tabControl = new System.Windows.Forms.TabControl();
+      this.parametersTabPage = new System.Windows.Forms.TabPage();
+      this.setEvaluationButton = new System.Windows.Forms.Button();
+      this.setMutationButton = new System.Windows.Forms.Button();
+      this.setCrossoverButton = new System.Windows.Forms.Button();
+      this.setSelectionButton = new System.Windows.Forms.Button();
+      this.setSolutionGenerationButton = new System.Windows.Forms.Button();
+      this.setProblemInitializationButton = new System.Windows.Forms.Button();
+      this.evaluationTextBox = new System.Windows.Forms.TextBox();
+      this.mutationTextBox = new System.Windows.Forms.TextBox();
+      this.crossoverTextBox = new System.Windows.Forms.TextBox();
+      this.selectionTextBox = new System.Windows.Forms.TextBox();
+      this.solutionGenerationTextBox = new System.Windows.Forms.TextBox();
+      this.problemInitializationTextBox = new System.Windows.Forms.TextBox();
+      this.setRandomSeedRandomlyCheckBox = new System.Windows.Forms.CheckBox();
+      this.elitesTextBox = new System.Windows.Forms.TextBox();
+      this.evaluationLabel = new System.Windows.Forms.Label();
+      this.mutationLabel = new System.Windows.Forms.Label();
+      this.selectionLabel = new System.Windows.Forms.Label();
+      this.crossoverLabel = new System.Windows.Forms.Label();
+      this.solutionGenerationLabel = new System.Windows.Forms.Label();
+      this.problemInitializationLabel = new System.Windows.Forms.Label();
+      this.elitesLabel = new System.Windows.Forms.Label();
+      this.mutationRateTextBox = new System.Windows.Forms.TextBox();
+      this.mutationRateLabel = new System.Windows.Forms.Label();
+      this.maximumGenerationsTextBox = new System.Windows.Forms.TextBox();
+      this.maximumGenerationsLabel = new System.Windows.Forms.Label();
+      this.randomSeedTextBox = new System.Windows.Forms.TextBox();
+      this.populationSizeTextBox = new System.Windows.Forms.TextBox();
+      this.setRandomSeedRandomlyLabel = new System.Windows.Forms.Label();
+      this.randomSeedLabel = new System.Windows.Forms.Label();
+      this.populationSizeLabel = new System.Windows.Forms.Label();
+      this.scopesTabPage = new System.Windows.Forms.TabPage();
+      this.scopeView = new HeuristicLab.Core.Views.ScopeView();
+      this.abortButton = new System.Windows.Forms.Button();
+      this.resetButton = new System.Windows.Forms.Button();
+      this.cloneEngineButton = new System.Windows.Forms.Button();
+      this.viewProblemInitializationButton = new System.Windows.Forms.Button();
+      this.viewSolutionGenerationButton = new System.Windows.Forms.Button();
+      this.viewSelectionButton = new System.Windows.Forms.Button();
+      this.viewCrossoverButton = new System.Windows.Forms.Button();
+      this.viewMutationButton = new System.Windows.Forms.Button();
+      this.viewEvaluationButton = new System.Windows.Forms.Button();
+      this.tabControl.SuspendLayout();
+      this.parametersTabPage.SuspendLayout();
+      this.scopesTabPage.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // executeButton
+      // 
+      this.executeButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.executeButton.Location = new System.Drawing.Point(0, 396);
+      this.executeButton.Name = "executeButton";
+      this.executeButton.Size = new System.Drawing.Size(75, 23);
+      this.executeButton.TabIndex = 1;
+      this.executeButton.Text = "&Execute";
+      this.executeButton.UseVisualStyleBackColor = true;
+      this.executeButton.Click += new System.EventHandler(this.executeButton_Click);
+      // 
+      // tabControl
+      // 
+      this.tabControl.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.tabControl.Controls.Add(this.parametersTabPage);
+      this.tabControl.Controls.Add(this.scopesTabPage);
+      this.tabControl.Location = new System.Drawing.Point(0, 0);
+      this.tabControl.Name = "tabControl";
+      this.tabControl.SelectedIndex = 0;
+      this.tabControl.Size = new System.Drawing.Size(526, 390);
+      this.tabControl.TabIndex = 0;
+      // 
+      // parametersTabPage
+      // 
+      this.parametersTabPage.Controls.Add(this.setEvaluationButton);
+      this.parametersTabPage.Controls.Add(this.setMutationButton);
+      this.parametersTabPage.Controls.Add(this.setCrossoverButton);
+      this.parametersTabPage.Controls.Add(this.setSelectionButton);
+      this.parametersTabPage.Controls.Add(this.setSolutionGenerationButton);
+      this.parametersTabPage.Controls.Add(this.viewEvaluationButton);
+      this.parametersTabPage.Controls.Add(this.viewMutationButton);
+      this.parametersTabPage.Controls.Add(this.viewCrossoverButton);
+      this.parametersTabPage.Controls.Add(this.viewSelectionButton);
+      this.parametersTabPage.Controls.Add(this.viewSolutionGenerationButton);
+      this.parametersTabPage.Controls.Add(this.viewProblemInitializationButton);
+      this.parametersTabPage.Controls.Add(this.setProblemInitializationButton);
+      this.parametersTabPage.Controls.Add(this.evaluationTextBox);
+      this.parametersTabPage.Controls.Add(this.mutationTextBox);
+      this.parametersTabPage.Controls.Add(this.crossoverTextBox);
+      this.parametersTabPage.Controls.Add(this.selectionTextBox);
+      this.parametersTabPage.Controls.Add(this.solutionGenerationTextBox);
+      this.parametersTabPage.Controls.Add(this.problemInitializationTextBox);
+      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyCheckBox);
+      this.parametersTabPage.Controls.Add(this.elitesTextBox);
+      this.parametersTabPage.Controls.Add(this.evaluationLabel);
+      this.parametersTabPage.Controls.Add(this.mutationLabel);
+      this.parametersTabPage.Controls.Add(this.selectionLabel);
+      this.parametersTabPage.Controls.Add(this.crossoverLabel);
+      this.parametersTabPage.Controls.Add(this.solutionGenerationLabel);
+      this.parametersTabPage.Controls.Add(this.problemInitializationLabel);
+      this.parametersTabPage.Controls.Add(this.elitesLabel);
+      this.parametersTabPage.Controls.Add(this.mutationRateTextBox);
+      this.parametersTabPage.Controls.Add(this.mutationRateLabel);
+      this.parametersTabPage.Controls.Add(this.maximumGenerationsTextBox);
+      this.parametersTabPage.Controls.Add(this.maximumGenerationsLabel);
+      this.parametersTabPage.Controls.Add(this.randomSeedTextBox);
+      this.parametersTabPage.Controls.Add(this.populationSizeTextBox);
+      this.parametersTabPage.Controls.Add(this.setRandomSeedRandomlyLabel);
+      this.parametersTabPage.Controls.Add(this.randomSeedLabel);
+      this.parametersTabPage.Controls.Add(this.populationSizeLabel);
+      this.parametersTabPage.Location = new System.Drawing.Point(4, 22);
+      this.parametersTabPage.Name = "parametersTabPage";
+      this.parametersTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.parametersTabPage.Size = new System.Drawing.Size(518, 364);
+      this.parametersTabPage.TabIndex = 0;
+      this.parametersTabPage.Text = "Parameters";
+      this.parametersTabPage.UseVisualStyleBackColor = true;
+      // 
+      // setEvaluationButton
+      // 
+      this.setEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setEvaluationButton.Location = new System.Drawing.Point(469, 338);
+      this.setEvaluationButton.Name = "setEvaluationButton";
+      this.setEvaluationButton.Size = new System.Drawing.Size(43, 20);
+      this.setEvaluationButton.TabIndex = 35;
+      this.setEvaluationButton.Text = "Set...";
+      this.setEvaluationButton.UseVisualStyleBackColor = true;
+      this.setEvaluationButton.Click += new System.EventHandler(this.setEvaluationButton_Click);
+      // 
+      // setMutationButton
+      // 
+      this.setMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setMutationButton.Location = new System.Drawing.Point(469, 312);
+      this.setMutationButton.Name = "setMutationButton";
+      this.setMutationButton.Size = new System.Drawing.Size(43, 20);
+      this.setMutationButton.TabIndex = 31;
+      this.setMutationButton.Text = "Set...";
+      this.setMutationButton.UseVisualStyleBackColor = true;
+      this.setMutationButton.Click += new System.EventHandler(this.setMutationButton_Click);
+      // 
+      // setCrossoverButton
+      // 
+      this.setCrossoverButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setCrossoverButton.Location = new System.Drawing.Point(469, 286);
+      this.setCrossoverButton.Name = "setCrossoverButton";
+      this.setCrossoverButton.Size = new System.Drawing.Size(43, 20);
+      this.setCrossoverButton.TabIndex = 27;
+      this.setCrossoverButton.Text = "Set...";
+      this.setCrossoverButton.UseVisualStyleBackColor = true;
+      this.setCrossoverButton.Click += new System.EventHandler(this.setCrossoverButton_Click);
+      // 
+      // setSelectionButton
+      // 
+      this.setSelectionButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setSelectionButton.Location = new System.Drawing.Point(469, 260);
+      this.setSelectionButton.Name = "setSelectionButton";
+      this.setSelectionButton.Size = new System.Drawing.Size(43, 20);
+      this.setSelectionButton.TabIndex = 23;
+      this.setSelectionButton.Text = "Set...";
+      this.setSelectionButton.UseVisualStyleBackColor = true;
+      this.setSelectionButton.Click += new System.EventHandler(this.setSelectionButton_Click);
+      // 
+      // setSolutionGenerationButton
+      // 
+      this.setSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setSolutionGenerationButton.Location = new System.Drawing.Point(469, 234);
+      this.setSolutionGenerationButton.Name = "setSolutionGenerationButton";
+      this.setSolutionGenerationButton.Size = new System.Drawing.Size(43, 20);
+      this.setSolutionGenerationButton.TabIndex = 19;
+      this.setSolutionGenerationButton.Text = "Set...";
+      this.setSolutionGenerationButton.UseVisualStyleBackColor = true;
+      this.setSolutionGenerationButton.Click += new System.EventHandler(this.setSolutionGenerationButton_Click);
+      // 
+      // setProblemInitializationButton
+      // 
+      this.setProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setProblemInitializationButton.Location = new System.Drawing.Point(469, 208);
+      this.setProblemInitializationButton.Name = "setProblemInitializationButton";
+      this.setProblemInitializationButton.Size = new System.Drawing.Size(43, 20);
+      this.setProblemInitializationButton.TabIndex = 15;
+      this.setProblemInitializationButton.Text = "Set...";
+      this.setProblemInitializationButton.UseVisualStyleBackColor = true;
+      this.setProblemInitializationButton.Click += new System.EventHandler(this.setProblemInitializationButton_Click);
+      // 
+      // evaluationTextBox
+      // 
+      this.evaluationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.evaluationTextBox.Location = new System.Drawing.Point(218, 338);
+      this.evaluationTextBox.Name = "evaluationTextBox";
+      this.evaluationTextBox.ReadOnly = true;
+      this.evaluationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.evaluationTextBox.TabIndex = 33;
+      // 
+      // mutationTextBox
+      // 
+      this.mutationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.mutationTextBox.Location = new System.Drawing.Point(218, 312);
+      this.mutationTextBox.Name = "mutationTextBox";
+      this.mutationTextBox.ReadOnly = true;
+      this.mutationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.mutationTextBox.TabIndex = 29;
+      // 
+      // crossoverTextBox
+      // 
+      this.crossoverTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.crossoverTextBox.Location = new System.Drawing.Point(218, 286);
+      this.crossoverTextBox.Name = "crossoverTextBox";
+      this.crossoverTextBox.ReadOnly = true;
+      this.crossoverTextBox.Size = new System.Drawing.Size(186, 20);
+      this.crossoverTextBox.TabIndex = 25;
+      // 
+      // selectionTextBox
+      // 
+      this.selectionTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.selectionTextBox.Location = new System.Drawing.Point(218, 260);
+      this.selectionTextBox.Name = "selectionTextBox";
+      this.selectionTextBox.ReadOnly = true;
+      this.selectionTextBox.Size = new System.Drawing.Size(186, 20);
+      this.selectionTextBox.TabIndex = 21;
+      // 
+      // solutionGenerationTextBox
+      // 
+      this.solutionGenerationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.solutionGenerationTextBox.Location = new System.Drawing.Point(218, 234);
+      this.solutionGenerationTextBox.Name = "solutionGenerationTextBox";
+      this.solutionGenerationTextBox.ReadOnly = true;
+      this.solutionGenerationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.solutionGenerationTextBox.TabIndex = 17;
+      // 
+      // problemInitializationTextBox
+      // 
+      this.problemInitializationTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.problemInitializationTextBox.Location = new System.Drawing.Point(218, 208);
+      this.problemInitializationTextBox.Name = "problemInitializationTextBox";
+      this.problemInitializationTextBox.ReadOnly = true;
+      this.problemInitializationTextBox.Size = new System.Drawing.Size(186, 20);
+      this.problemInitializationTextBox.TabIndex = 13;
+      // 
+      // setRandomSeedRandomlyCheckBox
+      // 
+      this.setRandomSeedRandomlyCheckBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setRandomSeedRandomlyCheckBox.AutoSize = true;
+      this.setRandomSeedRandomlyCheckBox.Location = new System.Drawing.Point(218, 6);
+      this.setRandomSeedRandomlyCheckBox.Name = "setRandomSeedRandomlyCheckBox";
+      this.setRandomSeedRandomlyCheckBox.Size = new System.Drawing.Size(15, 14);
+      this.setRandomSeedRandomlyCheckBox.TabIndex = 1;
+      this.setRandomSeedRandomlyCheckBox.UseVisualStyleBackColor = true;
+      // 
+      // elitesTextBox
+      // 
+      this.elitesTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.elitesTextBox.Location = new System.Drawing.Point(218, 156);
+      this.elitesTextBox.Name = "elitesTextBox";
+      this.elitesTextBox.Size = new System.Drawing.Size(186, 20);
+      this.elitesTextBox.TabIndex = 11;
+      // 
+      // evaluationLabel
+      // 
+      this.evaluationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.evaluationLabel.AutoSize = true;
+      this.evaluationLabel.Location = new System.Drawing.Point(65, 341);
+      this.evaluationLabel.Name = "evaluationLabel";
+      this.evaluationLabel.Size = new System.Drawing.Size(60, 13);
+      this.evaluationLabel.TabIndex = 32;
+      this.evaluationLabel.Text = "&Evaluation:";
+      // 
+      // mutationLabel
+      // 
+      this.mutationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.mutationLabel.AutoSize = true;
+      this.mutationLabel.Location = new System.Drawing.Point(65, 315);
+      this.mutationLabel.Name = "mutationLabel";
+      this.mutationLabel.Size = new System.Drawing.Size(51, 13);
+      this.mutationLabel.TabIndex = 28;
+      this.mutationLabel.Text = "&Mutation:";
+      // 
+      // selectionLabel
+      // 
+      this.selectionLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.selectionLabel.AutoSize = true;
+      this.selectionLabel.Location = new System.Drawing.Point(65, 263);
+      this.selectionLabel.Name = "selectionLabel";
+      this.selectionLabel.Size = new System.Drawing.Size(54, 13);
+      this.selectionLabel.TabIndex = 20;
+      this.selectionLabel.Text = "&Selection:";
+      // 
+      // crossoverLabel
+      // 
+      this.crossoverLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.crossoverLabel.AutoSize = true;
+      this.crossoverLabel.Location = new System.Drawing.Point(65, 289);
+      this.crossoverLabel.Name = "crossoverLabel";
+      this.crossoverLabel.Size = new System.Drawing.Size(57, 13);
+      this.crossoverLabel.TabIndex = 24;
+      this.crossoverLabel.Text = "&Crossover:";
+      // 
+      // solutionGenerationLabel
+      // 
+      this.solutionGenerationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.solutionGenerationLabel.AutoSize = true;
+      this.solutionGenerationLabel.Location = new System.Drawing.Point(65, 237);
+      this.solutionGenerationLabel.Name = "solutionGenerationLabel";
+      this.solutionGenerationLabel.Size = new System.Drawing.Size(103, 13);
+      this.solutionGenerationLabel.TabIndex = 16;
+      this.solutionGenerationLabel.Text = "&Solution Generation:";
+      // 
+      // problemInitializationLabel
+      // 
+      this.problemInitializationLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.problemInitializationLabel.AutoSize = true;
+      this.problemInitializationLabel.Location = new System.Drawing.Point(65, 211);
+      this.problemInitializationLabel.Name = "problemInitializationLabel";
+      this.problemInitializationLabel.Size = new System.Drawing.Size(105, 13);
+      this.problemInitializationLabel.TabIndex = 12;
+      this.problemInitializationLabel.Text = "&Problem Initialization:";
+      // 
+      // elitesLabel
+      // 
+      this.elitesLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.elitesLabel.AutoSize = true;
+      this.elitesLabel.Location = new System.Drawing.Point(65, 159);
+      this.elitesLabel.Name = "elitesLabel";
+      this.elitesLabel.Size = new System.Drawing.Size(35, 13);
+      this.elitesLabel.TabIndex = 10;
+      this.elitesLabel.Text = "&Elites:";
+      // 
+      // mutationRateTextBox
+      // 
+      this.mutationRateTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.mutationRateTextBox.Location = new System.Drawing.Point(218, 130);
+      this.mutationRateTextBox.Name = "mutationRateTextBox";
+      this.mutationRateTextBox.Size = new System.Drawing.Size(186, 20);
+      this.mutationRateTextBox.TabIndex = 9;
+      // 
+      // mutationRateLabel
+      // 
+      this.mutationRateLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.mutationRateLabel.AutoSize = true;
+      this.mutationRateLabel.Location = new System.Drawing.Point(65, 133);
+      this.mutationRateLabel.Name = "mutationRateLabel";
+      this.mutationRateLabel.Size = new System.Drawing.Size(77, 13);
+      this.mutationRateLabel.TabIndex = 8;
+      this.mutationRateLabel.Text = "&Mutation Rate:";
+      // 
+      // maximumGenerationsTextBox
+      // 
+      this.maximumGenerationsTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.maximumGenerationsTextBox.Location = new System.Drawing.Point(218, 104);
+      this.maximumGenerationsTextBox.Name = "maximumGenerationsTextBox";
+      this.maximumGenerationsTextBox.Size = new System.Drawing.Size(186, 20);
+      this.maximumGenerationsTextBox.TabIndex = 7;
+      // 
+      // maximumGenerationsLabel
+      // 
+      this.maximumGenerationsLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.maximumGenerationsLabel.AutoSize = true;
+      this.maximumGenerationsLabel.Location = new System.Drawing.Point(65, 107);
+      this.maximumGenerationsLabel.Name = "maximumGenerationsLabel";
+      this.maximumGenerationsLabel.Size = new System.Drawing.Size(114, 13);
+      this.maximumGenerationsLabel.TabIndex = 6;
+      this.maximumGenerationsLabel.Text = "Maximum &Generations:";
+      // 
+      // randomSeedTextBox
+      // 
+      this.randomSeedTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.randomSeedTextBox.Location = new System.Drawing.Point(218, 26);
+      this.randomSeedTextBox.Name = "randomSeedTextBox";
+      this.randomSeedTextBox.Size = new System.Drawing.Size(186, 20);
+      this.randomSeedTextBox.TabIndex = 3;
+      // 
+      // populationSizeTextBox
+      // 
+      this.populationSizeTextBox.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.populationSizeTextBox.Location = new System.Drawing.Point(218, 78);
+      this.populationSizeTextBox.Name = "populationSizeTextBox";
+      this.populationSizeTextBox.Size = new System.Drawing.Size(186, 20);
+      this.populationSizeTextBox.TabIndex = 5;
+      // 
+      // setRandomSeedRandomlyLabel
+      // 
+      this.setRandomSeedRandomlyLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.setRandomSeedRandomlyLabel.AutoSize = true;
+      this.setRandomSeedRandomlyLabel.Location = new System.Drawing.Point(65, 6);
+      this.setRandomSeedRandomlyLabel.Name = "setRandomSeedRandomlyLabel";
+      this.setRandomSeedRandomlyLabel.Size = new System.Drawing.Size(147, 13);
+      this.setRandomSeedRandomlyLabel.TabIndex = 0;
+      this.setRandomSeedRandomlyLabel.Text = "Set &Random Seed Randomly:";
+      // 
+      // randomSeedLabel
+      // 
+      this.randomSeedLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.randomSeedLabel.AutoSize = true;
+      this.randomSeedLabel.Location = new System.Drawing.Point(65, 29);
+      this.randomSeedLabel.Name = "randomSeedLabel";
+      this.randomSeedLabel.Size = new System.Drawing.Size(78, 13);
+      this.randomSeedLabel.TabIndex = 2;
+      this.randomSeedLabel.Text = "&Random Seed:";
+      // 
+      // populationSizeLabel
+      // 
+      this.populationSizeLabel.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.populationSizeLabel.AutoSize = true;
+      this.populationSizeLabel.Location = new System.Drawing.Point(65, 81);
+      this.populationSizeLabel.Name = "populationSizeLabel";
+      this.populationSizeLabel.Size = new System.Drawing.Size(83, 13);
+      this.populationSizeLabel.TabIndex = 4;
+      this.populationSizeLabel.Text = "&Population Size:";
+      // 
+      // scopesTabPage
+      // 
+      this.scopesTabPage.Controls.Add(this.scopeView);
+      this.scopesTabPage.Location = new System.Drawing.Point(4, 22);
+      this.scopesTabPage.Name = "scopesTabPage";
+      this.scopesTabPage.Padding = new System.Windows.Forms.Padding(3);
+      this.scopesTabPage.Size = new System.Drawing.Size(518, 364);
+      this.scopesTabPage.TabIndex = 2;
+      this.scopesTabPage.Text = "Scopes";
+      this.scopesTabPage.UseVisualStyleBackColor = true;
+      // 
+      // scopeView
+      // 
+      this.scopeView.Caption = "Scope";
+      this.scopeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scopeView.Location = new System.Drawing.Point(3, 3);
+      this.scopeView.Name = "scopeView";
+      this.scopeView.Scope = null;
+      this.scopeView.Size = new System.Drawing.Size(512, 358);
+      this.scopeView.TabIndex = 0;
+      // 
+      // abortButton
+      // 
+      this.abortButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.abortButton.Enabled = false;
+      this.abortButton.Location = new System.Drawing.Point(81, 396);
+      this.abortButton.Name = "abortButton";
+      this.abortButton.Size = new System.Drawing.Size(75, 23);
+      this.abortButton.TabIndex = 2;
+      this.abortButton.Text = "&Abort";
+      this.abortButton.UseVisualStyleBackColor = true;
+      this.abortButton.Click += new System.EventHandler(this.abortButton_Click);
+      // 
+      // resetButton
+      // 
+      this.resetButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
+      this.resetButton.Location = new System.Drawing.Point(162, 396);
+      this.resetButton.Name = "resetButton";
+      this.resetButton.Size = new System.Drawing.Size(75, 23);
+      this.resetButton.TabIndex = 3;
+      this.resetButton.Text = "&Reset";
+      this.resetButton.UseVisualStyleBackColor = true;
+      this.resetButton.Click += new System.EventHandler(this.resetButton_Click);
+      // 
+      // cloneEngineButton
+      // 
+      this.cloneEngineButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.cloneEngineButton.Location = new System.Drawing.Point(420, 396);
+      this.cloneEngineButton.Name = "cloneEngineButton";
+      this.cloneEngineButton.Size = new System.Drawing.Size(106, 23);
+      this.cloneEngineButton.TabIndex = 4;
+      this.cloneEngineButton.Text = "&Clone Engine...";
+      this.cloneEngineButton.UseVisualStyleBackColor = true;
+      this.cloneEngineButton.Click += new System.EventHandler(this.cloneEngineButton_Click);
+      // 
+      // viewProblemInitializationButton
+      // 
+      this.viewProblemInitializationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewProblemInitializationButton.Location = new System.Drawing.Point(410, 208);
+      this.viewProblemInitializationButton.Name = "viewProblemInitializationButton";
+      this.viewProblemInitializationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewProblemInitializationButton.TabIndex = 14;
+      this.viewProblemInitializationButton.Text = "View...";
+      this.viewProblemInitializationButton.UseVisualStyleBackColor = true;
+      this.viewProblemInitializationButton.Click += new System.EventHandler(this.viewProblemInitializationButton_Click);
+      // 
+      // viewSolutionGenerationButton
+      // 
+      this.viewSolutionGenerationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewSolutionGenerationButton.Location = new System.Drawing.Point(410, 234);
+      this.viewSolutionGenerationButton.Name = "viewSolutionGenerationButton";
+      this.viewSolutionGenerationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewSolutionGenerationButton.TabIndex = 18;
+      this.viewSolutionGenerationButton.Text = "View...";
+      this.viewSolutionGenerationButton.UseVisualStyleBackColor = true;
+      this.viewSolutionGenerationButton.Click += new System.EventHandler(this.viewSolutionGenerationButton_Click);
+      // 
+      // viewSelectionButton
+      // 
+      this.viewSelectionButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewSelectionButton.Location = new System.Drawing.Point(410, 260);
+      this.viewSelectionButton.Name = "viewSelectionButton";
+      this.viewSelectionButton.Size = new System.Drawing.Size(53, 20);
+      this.viewSelectionButton.TabIndex = 22;
+      this.viewSelectionButton.Text = "View...";
+      this.viewSelectionButton.UseVisualStyleBackColor = true;
+      this.viewSelectionButton.Click += new System.EventHandler(this.viewSelectionButton_Click);
+      // 
+      // viewCrossoverButton
+      // 
+      this.viewCrossoverButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewCrossoverButton.Location = new System.Drawing.Point(410, 286);
+      this.viewCrossoverButton.Name = "viewCrossoverButton";
+      this.viewCrossoverButton.Size = new System.Drawing.Size(53, 20);
+      this.viewCrossoverButton.TabIndex = 26;
+      this.viewCrossoverButton.Text = "View...";
+      this.viewCrossoverButton.UseVisualStyleBackColor = true;
+      this.viewCrossoverButton.Click += new System.EventHandler(this.viewCrossoverButton_Click);
+      // 
+      // viewMutationButton
+      // 
+      this.viewMutationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewMutationButton.Location = new System.Drawing.Point(410, 312);
+      this.viewMutationButton.Name = "viewMutationButton";
+      this.viewMutationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewMutationButton.TabIndex = 30;
+      this.viewMutationButton.Text = "View...";
+      this.viewMutationButton.UseVisualStyleBackColor = true;
+      this.viewMutationButton.Click += new System.EventHandler(this.viewMutationButton_Click);
+      // 
+      // viewEvaluationButton
+      // 
+      this.viewEvaluationButton.Anchor = System.Windows.Forms.AnchorStyles.None;
+      this.viewEvaluationButton.Location = new System.Drawing.Point(410, 338);
+      this.viewEvaluationButton.Name = "viewEvaluationButton";
+      this.viewEvaluationButton.Size = new System.Drawing.Size(53, 20);
+      this.viewEvaluationButton.TabIndex = 34;
+      this.viewEvaluationButton.Text = "View...";
+      this.viewEvaluationButton.UseVisualStyleBackColor = true;
+      this.viewEvaluationButton.Click += new System.EventHandler(this.viewEvaluationButton_Click);
+      // 
+      // SGAEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.tabControl);
+      this.Controls.Add(this.cloneEngineButton);
+      this.Controls.Add(this.resetButton);
+      this.Controls.Add(this.abortButton);
+      this.Controls.Add(this.executeButton);
+      this.Name = "SGAEditor";
+      this.Size = new System.Drawing.Size(526, 419);
+      this.tabControl.ResumeLayout(false);
+      this.parametersTabPage.ResumeLayout(false);
+      this.parametersTabPage.PerformLayout();
+      this.scopesTabPage.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button executeButton;
+    private System.Windows.Forms.TabControl tabControl;
+    private System.Windows.Forms.TabPage parametersTabPage;
+    private System.Windows.Forms.Button abortButton;
+    private System.Windows.Forms.Button resetButton;
+    private System.Windows.Forms.TextBox mutationRateTextBox;
+    private System.Windows.Forms.Label mutationRateLabel;
+    private System.Windows.Forms.TextBox populationSizeTextBox;
+    private System.Windows.Forms.Label populationSizeLabel;
+    private System.Windows.Forms.TabPage scopesTabPage;
+    private System.Windows.Forms.TextBox maximumGenerationsTextBox;
+    private System.Windows.Forms.Label maximumGenerationsLabel;
+    private System.Windows.Forms.TextBox elitesTextBox;
+    private System.Windows.Forms.Label elitesLabel;
+    private System.Windows.Forms.TextBox randomSeedTextBox;
+    private System.Windows.Forms.Label setRandomSeedRandomlyLabel;
+    private System.Windows.Forms.Label randomSeedLabel;
+    private System.Windows.Forms.CheckBox setRandomSeedRandomlyCheckBox;
+    private System.Windows.Forms.Label problemInitializationLabel;
+    private System.Windows.Forms.Label evaluationLabel;
+    private System.Windows.Forms.Label mutationLabel;
+    private System.Windows.Forms.Label crossoverLabel;
+    private System.Windows.Forms.Label solutionGenerationLabel;
+    private System.Windows.Forms.Button cloneEngineButton;
+    private System.Windows.Forms.TextBox mutationTextBox;
+    private System.Windows.Forms.TextBox crossoverTextBox;
+    private System.Windows.Forms.TextBox selectionTextBox;
+    private System.Windows.Forms.TextBox solutionGenerationTextBox;
+    private System.Windows.Forms.TextBox problemInitializationTextBox;
+    private System.Windows.Forms.Label selectionLabel;
+    private System.Windows.Forms.TextBox evaluationTextBox;
+    private System.Windows.Forms.Button setProblemInitializationButton;
+    private System.Windows.Forms.Button setEvaluationButton;
+    private System.Windows.Forms.Button setMutationButton;
+    private System.Windows.Forms.Button setCrossoverButton;
+    private System.Windows.Forms.Button setSelectionButton;
+    private System.Windows.Forms.Button setSolutionGenerationButton;
+    private HeuristicLab.Core.Views.ScopeView scopeView;
+    private System.Windows.Forms.Button viewEvaluationButton;
+    private System.Windows.Forms.Button viewMutationButton;
+    private System.Windows.Forms.Button viewCrossoverButton;
+    private System.Windows.Forms.Button viewSelectionButton;
+    private System.Windows.Forms.Button viewSolutionGenerationButton;
+    private System.Windows.Forms.Button viewProblemInitializationButton;
+  }
+}
Index: /trunk/sources/HeuristicLab.SGA/3.3/SGAView.cs
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/SGAView.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.SGA/3.3/SGAView.cs	(revision 2546)
@@ -0,0 +1,218 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.PluginInfrastructure;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.SGA {
+  /// <summary>
+  /// Visual representation of the <see cref="SGA"/> class.
+  /// </summary>
+  [Content(typeof(SGA), true)]
+  public partial class SGAView : ItemViewBase {
+    private ChooseOperatorDialog chooseOperatorDialog;
+
+    /// <summary>
+    /// Gets or sets the <see cref="SGA"/> item to represent visually.
+    /// </summary>
+    /// <remarks>Uses property <see cref="ViewBase.Item"/> of base class <see cref="EditorBase"/>.
+    /// No own data storage present!</remarks>
+    public SGA SGA {
+      get { return (SGA)Item; }
+      set { base.Item = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="SGAEditor"/>.
+    /// </summary>
+    public SGAView() {
+      InitializeComponent();
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="SGAEditor"/> with the given <paramref name="sga"/>.
+    /// </summary>
+    /// <param name="sga">The simple genetic algorithm to represent visually.</param>
+    public SGAView(SGA sga)
+      : this() {
+      SGA = sga;
+    }
+
+    /// <summary>
+    /// Removes the eventhandlers from the underlying <see cref="IEngine"/> of the <see cref="SGA"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.RemoveItemEvents"/> of base class <see cref="EditorBase"/>.</remarks>
+    protected override void RemoveItemEvents() {
+      SGA.Engine.ExceptionOccurred -= new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
+      SGA.Engine.Finished -= new EventHandler(Engine_Finished);
+      scopeView.Scope = null;
+      base.RemoveItemEvents();
+    }
+    /// <summary>
+    /// Adds eventhandlers to the underlying <see cref="IEngine"/> of the <see cref="SGA"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="ViewBase.AddItemEvents"/> of base class <see cref="EditorBase"/>.</remarks>
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      SGA.Engine.ExceptionOccurred += new EventHandler<EventArgs<Exception>>(Engine_ExceptionOccurred);
+      SGA.Engine.Finished += new EventHandler(Engine_Finished);
+      SetDataBinding();
+      scopeView.Scope = SGA.Engine.GlobalScope;
+    }
+
+    /// <summary>
+    /// Updates all controls with the latest data of the model.
+    /// </summary>
+    /// <remarks>Calls <see cref="EditorBase.UpdateControls"/> of base class <see cref="EditorBase"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      if (SGA == null) {
+        tabControl.Enabled = false;
+      } else {
+        tabControl.Enabled = true;
+        problemInitializationTextBox.Text = SGA.ProblemInjector.GetType().Name;
+        solutionGenerationTextBox.Text = SGA.SolutionGenerator.GetType().Name;
+        selectionTextBox.Text = SGA.Selector.GetType().Name;
+        crossoverTextBox.Text = SGA.Crossover.GetType().Name;
+        mutationTextBox.Text = SGA.Mutator.GetType().Name;
+        evaluationTextBox.Text = SGA.Evaluator.GetType().Name;
+      }
+    }
+
+    private void SetDataBinding() {
+      setRandomSeedRandomlyCheckBox.DataBindings.Add("Checked", SGA, "SetSeedRandomly");
+      randomSeedTextBox.DataBindings.Add("Text", SGA, "Seed");
+      populationSizeTextBox.DataBindings.Add("Text", SGA, "PopulationSize");
+      maximumGenerationsTextBox.DataBindings.Add("Text", SGA, "MaximumGenerations");
+      mutationRateTextBox.DataBindings.Add("Text", SGA, "MutationRate");
+      elitesTextBox.DataBindings.Add("Text", SGA, "Elites");
+    }
+
+    #region Button Events
+    private void viewProblemInitializationButton_Click(object sender, EventArgs e) {
+      IView view = MainFormManager.CreateDefaultView(SGA.ProblemInjector);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    private void viewSolutionGenerationButton_Click(object sender, EventArgs e) {
+      IView view = MainFormManager.CreateDefaultView(SGA.SolutionGenerator);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    private void viewSelectionButton_Click(object sender, EventArgs e) {
+      IView view = MainFormManager.CreateDefaultView(SGA.Selector);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    private void viewCrossoverButton_Click(object sender, EventArgs e) {
+      IView view = MainFormManager.CreateDefaultView(SGA.Crossover);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    private void viewMutationButton_Click(object sender, EventArgs e) {
+      IView view = MainFormManager.CreateDefaultView(SGA.Mutator);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    private void viewEvaluationButton_Click(object sender, EventArgs e) {
+      IView view = MainFormManager.CreateDefaultView(SGA.Evaluator);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    private void setProblemInitializationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        SGA.ProblemInjector = chooseOperatorDialog.Operator;
+        problemInitializationTextBox.Text = SGA.ProblemInjector.GetType().Name;
+      }
+    }
+    private void setSolutionGenerationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        SGA.SolutionGenerator= chooseOperatorDialog.Operator;
+        solutionGenerationTextBox.Text = SGA.SolutionGenerator.GetType().Name;
+      }
+    }
+    private void setSelectionButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        SGA.Selector = chooseOperatorDialog.Operator;
+        selectionTextBox.Text = SGA.Selector.GetType().Name;
+      }
+    }
+    private void setCrossoverButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        SGA.Crossover = chooseOperatorDialog.Operator;
+        crossoverTextBox.Text = SGA.Crossover.GetType().Name;
+      }
+    }
+    private void setMutationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        SGA.Mutator = chooseOperatorDialog.Operator;
+        mutationTextBox.Text = SGA.Mutator.GetType().Name;
+      }
+    }
+    private void setEvaluationButton_Click(object sender, EventArgs e) {
+      if (chooseOperatorDialog == null) chooseOperatorDialog = new ChooseOperatorDialog();
+      if (chooseOperatorDialog.ShowDialog(this) == DialogResult.OK) {
+        SGA.Evaluator = chooseOperatorDialog.Operator;
+        evaluationTextBox.Text = SGA.Evaluator.GetType().Name;
+      }
+    }
+    private void executeButton_Click(object sender, EventArgs e) {
+      executeButton.Enabled = false;
+      abortButton.Enabled = true;
+      SGA.Engine.Execute();
+    }
+    private void abortButton_Click(object sender, EventArgs e) {
+      SGA.Engine.Abort();
+    }
+    private void resetButton_Click(object sender, EventArgs e) {
+      SGA.Engine.Reset();
+    }
+    private void cloneEngineButton_Click(object sender, EventArgs e) {
+      IEngine clone = (IEngine)SGA.Engine.Clone();
+      IView view = MainFormManager.CreateDefaultView(clone);
+      if (view != null) MainFormManager.MainForm.ShowView(view);
+    }
+    #endregion
+
+    #region Engine Events
+    private delegate void OnExceptionEventDelegate(object sender, EventArgs<Exception> e);
+    private void Engine_ExceptionOccurred(object sender, EventArgs<Exception> e) {
+      if (InvokeRequired)
+        Invoke(new OnExceptionEventDelegate(Engine_ExceptionOccurred), sender, e);
+      else
+        HeuristicLab.Core.Views.Auxiliary.ShowErrorMessageBox(e.Value);
+    }
+    private void Engine_Finished(object sender, EventArgs e) {
+      scopeView.Refresh();
+      executeButton.Enabled = true;
+      abortButton.Enabled = false;
+    }
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.SGA/3.3/SGAView.resx
===================================================================
--- /trunk/sources/HeuristicLab.SGA/3.3/SGAView.resx	(revision 2546)
+++ /trunk/sources/HeuristicLab.SGA/3.3/SGAView.resx	(revision 2546)
@@ -0,0 +1,120 @@
+<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: /trunk/sources/HeuristicLab.SequentialEngine/3.3/HeuristicLab.SequentialEngine-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/3.3/HeuristicLab.SequentialEngine-3.3.csproj	(revision 2545)
+++ /trunk/sources/HeuristicLab.SequentialEngine/3.3/HeuristicLab.SequentialEngine-3.3.csproj	(revision 2546)
@@ -86,9 +86,9 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="SequentialEngine.cs" />
-    <Compile Include="SequentialEngineEditor.cs">
+    <Compile Include="SequentialEngineView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="SequentialEngineEditor.Designer.cs">
-      <DependentUpon>SequentialEngineEditor.cs</DependentUpon>
+    <Compile Include="SequentialEngineView.Designer.cs">
+      <DependentUpon>SequentialEngineView.cs</DependentUpon>
     </Compile>
   </ItemGroup>
Index: /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngine.cs	(revision 2546)
@@ -33,5 +33,7 @@
   /// </summary>
   [EmptyStorableClass]
-  public class SequentialEngine : EngineBase, IEditable {
+  [Creatable("Engines")]
+  [Item("Sequential Engine", "Engine for sequential execution of algorithms.")]
+  public class SequentialEngine : EngineBase {
     private IOperator currentOperator;
 
Index: unk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineEditor.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,91 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.SequentialEngine {
-  partial class SequentialEngineEditor {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      this.operatorGraphGroupBox.SuspendLayout();
-      this.globalScopeGroupBox.SuspendLayout();
-      this.SuspendLayout();
-      // 
-      // splitContainer1
-      // 
-      this.splitContainer1.SplitterDistance = 495;
-      // 
-      // operatorGraphGroupBox
-      // 
-      this.operatorGraphGroupBox.Size = new System.Drawing.Size(495, 441);
-      // 
-      // globalScopeGroupBox
-      // 
-      this.globalScopeGroupBox.Size = new System.Drawing.Size(141, 441);
-      // 
-      // operatorGraphView
-      // 
-      this.operatorGraphView.Size = new System.Drawing.Size(489, 422);
-      // 
-      // scopeView
-      // 
-      this.scopeView.Size = new System.Drawing.Size(135, 422);
-      // 
-      // SequentialEngineEditor
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Name = "SequentialEngineEditor";
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      this.splitContainer1.ResumeLayout(false);
-      this.operatorGraphGroupBox.ResumeLayout(false);
-      this.globalScopeGroupBox.ResumeLayout(false);
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-  }
-}
Index: unk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineEditor.cs	(revision 2545)
+++ 	(revision )
@@ -1,65 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.SequentialEngine {
-  /// <summary>
-  /// Visual representation of a <see cref="SequentialEngine"/>.
-  /// </summary>
-  [Content(typeof(SequentialEngine), true)]
-  public partial class SequentialEngineEditor : EngineBaseEditor {
-    /// <summary>
-    /// Gets or set the engine to represent visually.
-    /// </summary>
-    /// <remarks>Uses property <see cref="EngineBaseEditor.Engine"/> of base class 
-    /// <see cref="EngineBaseEditor"/>. No own data storage present.</remarks>
-    public SequentialEngine SequentialEngine {
-      get { return (SequentialEngine)Engine; }
-      set { base.Engine = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="SequentialEngineEditor"/>.
-    /// </summary>
-    public SequentialEngineEditor() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="SequentialEngineEditor"/> with the given
-    /// <paramref name="sequentialEngine"/>.
-    /// </summary>
-    /// <param name="sequentialEngine">The engine to display.</param>
-    public SequentialEngineEditor(SequentialEngine sequentialEngine)
-      : this() {
-      SequentialEngine = sequentialEngine;
-    }
-  }
-}
Index: /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineView.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineView.Designer.cs	(revision 2546)
@@ -0,0 +1,91 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.SequentialEngine {
+  partial class SequentialEngineView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.operatorGraphGroupBox.SuspendLayout();
+      this.globalScopeGroupBox.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // splitContainer1
+      // 
+      this.splitContainer1.SplitterDistance = 495;
+      // 
+      // operatorGraphGroupBox
+      // 
+      this.operatorGraphGroupBox.Size = new System.Drawing.Size(495, 441);
+      // 
+      // globalScopeGroupBox
+      // 
+      this.globalScopeGroupBox.Size = new System.Drawing.Size(141, 441);
+      // 
+      // operatorGraphView
+      // 
+      this.operatorGraphView.Size = new System.Drawing.Size(489, 422);
+      // 
+      // scopeView
+      // 
+      this.scopeView.Size = new System.Drawing.Size(135, 422);
+      // 
+      // SequentialEngineEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Name = "SequentialEngineEditor";
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.operatorGraphGroupBox.ResumeLayout(false);
+      this.globalScopeGroupBox.ResumeLayout(false);
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+  }
+}
Index: /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineView.cs
===================================================================
--- /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineView.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.SequentialEngine/3.3/SequentialEngineView.cs	(revision 2546)
@@ -0,0 +1,65 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.SequentialEngine {
+  /// <summary>
+  /// Visual representation of a <see cref="SequentialEngine"/>.
+  /// </summary>
+  [Content(typeof(SequentialEngine), true)]
+  public partial class SequentialEngineView : EngineBaseView {
+    /// <summary>
+    /// Gets or set the engine to represent visually.
+    /// </summary>
+    /// <remarks>Uses property <see cref="EngineBaseEditor.Engine"/> of base class 
+    /// <see cref="EngineBaseEditor"/>. No own data storage present.</remarks>
+    public SequentialEngine SequentialEngine {
+      get { return (SequentialEngine)Engine; }
+      set { base.Engine = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="SequentialEngineEditor"/>.
+    /// </summary>
+    public SequentialEngineView() {
+      InitializeComponent();
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="SequentialEngineEditor"/> with the given
+    /// <paramref name="sequentialEngine"/>.
+    /// </summary>
+    /// <param name="sequentialEngine">The engine to display.</param>
+    public SequentialEngineView(SequentialEngine sequentialEngine)
+      : this() {
+      SequentialEngine = sequentialEngine;
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.cs
===================================================================
--- /trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.TestFunctions/3.3/TestFunctionInjectorView.cs	(revision 2546)
@@ -38,5 +38,5 @@
   /// </summary>
   [Content(typeof(TestFunctionInjector), true)]
-  public partial class TestFunctionInjectorView : ViewBase {
+  public partial class TestFunctionInjectorView : ItemViewBase {
     /// <summary>
     /// Gets or sets the TestFunctionInjector to represent visually.
Index: /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/HeuristicLab.ThreadParallelEngine-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/HeuristicLab.ThreadParallelEngine-3.3.csproj	(revision 2545)
+++ /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/HeuristicLab.ThreadParallelEngine-3.3.csproj	(revision 2546)
@@ -86,9 +86,9 @@
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="ThreadParallelEngine.cs" />
-    <Compile Include="ThreadParallelEngineEditor.cs">
+    <Compile Include="ThreadParallelEngineView.cs">
       <SubType>UserControl</SubType>
     </Compile>
-    <Compile Include="ThreadParallelEngineEditor.Designer.cs">
-      <DependentUpon>ThreadParallelEngineEditor.cs</DependentUpon>
+    <Compile Include="ThreadParallelEngineView.Designer.cs">
+      <DependentUpon>ThreadParallelEngineView.cs</DependentUpon>
     </Compile>
   </ItemGroup>
Index: /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngine.cs
===================================================================
--- /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngine.cs	(revision 2545)
+++ /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngine.cs	(revision 2546)
@@ -32,4 +32,6 @@
   /// Implementation of an engine being able to run in parallel with threads.
   /// </summary>
+  [Creatable("Engines")]
+  [Item("Parallel Engine", "Engine for parallel execution of algorithms using multiple threads.")]
   public class ThreadParallelEngine : EngineBase {
     #region Inner Class Task
Index: unk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineEditor.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineEditor.Designer.cs	(revision 2545)
+++ 	(revision )
@@ -1,134 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.ThreadParallelEngine {
-  partial class ThreadParallelEngineEditor {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.workersNumericUpDown = new System.Windows.Forms.NumericUpDown();
-      this.workersLabel = new System.Windows.Forms.Label();
-      this.splitContainer1.Panel1.SuspendLayout();
-      this.splitContainer1.Panel2.SuspendLayout();
-      this.splitContainer1.SuspendLayout();
-      this.operatorGraphGroupBox.SuspendLayout();
-      this.globalScopeGroupBox.SuspendLayout();
-      ((System.ComponentModel.ISupportInitialize)(this.workersNumericUpDown)).BeginInit();
-      this.SuspendLayout();
-      // 
-      // executionTimeTextBox
-      // 
-      this.executionTimeTextBox.TabIndex = 7;
-      // 
-      // executionTimeLabel
-      // 
-      this.executionTimeLabel.TabIndex = 6;
-      // 
-      // splitContainer1
-      // 
-      // 
-      // workersNumericUpDown
-      // 
-      this.workersNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.workersNumericUpDown.Location = new System.Drawing.Point(406, 460);
-      this.workersNumericUpDown.Maximum = new decimal(new int[] {
-            10000,
-            0,
-            0,
-            0});
-      this.workersNumericUpDown.Minimum = new decimal(new int[] {
-            1,
-            0,
-            0,
-            0});
-      this.workersNumericUpDown.Name = "workersNumericUpDown";
-      this.workersNumericUpDown.Size = new System.Drawing.Size(87, 20);
-      this.workersNumericUpDown.TabIndex = 5;
-      this.workersNumericUpDown.Value = new decimal(new int[] {
-            1,
-            0,
-            0,
-            0});
-      this.workersNumericUpDown.ValueChanged += new System.EventHandler(this.workersNumericUpDown_ValueChanged);
-      // 
-      // workersLabel
-      // 
-      this.workersLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
-      this.workersLabel.AutoSize = true;
-      this.workersLabel.Location = new System.Drawing.Point(403, 444);
-      this.workersLabel.Name = "workersLabel";
-      this.workersLabel.Size = new System.Drawing.Size(87, 13);
-      this.workersLabel.TabIndex = 4;
-      this.workersLabel.Text = "&Worker Threads:";
-      // 
-      // ThreadParallelEngineEditor
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.workersNumericUpDown);
-      this.Controls.Add(this.workersLabel);
-      this.Name = "ThreadParallelEngineEditor";
-      this.Controls.SetChildIndex(this.workersLabel, 0);
-      this.Controls.SetChildIndex(this.workersNumericUpDown, 0);
-      this.Controls.SetChildIndex(this.executionTimeLabel, 0);
-      this.Controls.SetChildIndex(this.executeButton, 0);
-      this.Controls.SetChildIndex(this.abortButton, 0);
-      this.Controls.SetChildIndex(this.resetButton, 0);
-      this.Controls.SetChildIndex(this.splitContainer1, 0);
-      this.Controls.SetChildIndex(this.executionTimeTextBox, 0);
-      this.splitContainer1.Panel1.ResumeLayout(false);
-      this.splitContainer1.Panel2.ResumeLayout(false);
-      this.splitContainer1.ResumeLayout(false);
-      this.operatorGraphGroupBox.ResumeLayout(false);
-      this.globalScopeGroupBox.ResumeLayout(false);
-      ((System.ComponentModel.ISupportInitialize)(this.workersNumericUpDown)).EndInit();
-      this.ResumeLayout(false);
-      this.PerformLayout();
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.NumericUpDown workersNumericUpDown;
-    private System.Windows.Forms.Label workersLabel;
-
-  }
-}
Index: unk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineEditor.cs
===================================================================
--- /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineEditor.cs	(revision 2545)
+++ 	(revision )
@@ -1,115 +1,0 @@
-#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Collections.Generic;
-using System.ComponentModel;
-using System.Drawing;
-using System.Data;
-using System.Text;
-using System.Windows.Forms;
-using HeuristicLab.Core;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.ThreadParallelEngine {
-  /// <summary>
-  /// Visual representation of a <see cref="ThreadParallelEngine"/>.
-  /// </summary>
-  [Content(typeof(ThreadParallelEngine), true)]
-  public partial class ThreadParallelEngineEditor : EngineBaseEditor {
-    /// <summary>
-    /// Gets or sets the ThreadParallelEngine to display.
-    /// </summary>
-    /// <remarks>Uses property <see cref="EngineBaseEditor.Engine"/> of base class 
-    /// <see cref="EngineBaseEditor"/>. No own data storage present.</remarks>
-    public ThreadParallelEngine ThreadParallelEngine {
-      get { return (ThreadParallelEngine)Engine; }
-      set { base.Engine = value; }
-    }
-
-    /// <summary>
-    /// Initializes a new instance of <see cref="ThreadParallelEngineEditor"/>.
-    /// </summary>
-    public ThreadParallelEngineEditor() {
-      InitializeComponent();
-    }
-    /// <summary>
-    /// Initializes a new instance of <see cref="ThreadParallelEngineEditor"/> with the given
-    /// <paramref name="threadParallelEngine"/> to display.
-    /// </summary>
-    /// <param name="threadParallelEngine">The engine to represent visually.</param>
-    public ThreadParallelEngineEditor(ThreadParallelEngine threadParallelEngine)
-      : this() {
-      ThreadParallelEngine = threadParallelEngine;
-    }
-
-    /// <summary>
-    /// Removes the eventhandlers from the underlying <see cref="ThreadParallelEngine"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="EngineBaseEditor.RemoveItemEvents"/> of base class 
-    /// <see cref="EngineBaseEditor"/>.
-    /// </remarks>
-    protected override void RemoveItemEvents() {
-      ThreadParallelEngine.WorkersChanged -= new EventHandler(ThreadParallelEngine_WorkersChanged);
-      base.RemoveItemEvents();
-    }
-
-    /// <summary>
-    /// Adds eventhandlers to the underlying <see cref="ThreadParallelEngine"/>.
-    /// </summary>
-    /// <remarks>Calls <see cref="EngineBaseEditor.AddItemEvents"/> of base class 
-    /// <see cref="EngineBaseEditor"/>.
-    /// </remarks>
-    protected override void AddItemEvents() {
-      base.AddItemEvents();
-      ThreadParallelEngine.WorkersChanged += new EventHandler(ThreadParallelEngine_WorkersChanged);
-    }
-
-    /// <summary>
-    /// Updates the controls with the latest data.
-    /// </summary>
-    /// <remarks>Calls <see cref="EngineBaseEditor.UpdateControls"/> of base class 
-    /// <see cref="EngineBaseEditor"/>.</remarks>
-    protected override void UpdateControls() {
-      base.UpdateControls();
-      if (ThreadParallelEngine == null) {
-        workersNumericUpDown.Value = 1;
-        workersNumericUpDown.Enabled = false;
-      } else {
-        workersNumericUpDown.Value = ThreadParallelEngine.Workers;
-        workersNumericUpDown.Enabled = true;
-      }
-    }
-
-    #region ThreadParallelEngine Events
-    private void ThreadParallelEngine_WorkersChanged(object sender, EventArgs e) {
-      workersNumericUpDown.Value = ThreadParallelEngine.Workers;
-    }
-    #endregion
-
-    #region NumericUpDown Events
-    private void workersNumericUpDown_ValueChanged(object sender, EventArgs e) {
-      ThreadParallelEngine.Workers = (int)workersNumericUpDown.Value;
-    }
-    #endregion
-  }
-}
Index: /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineView.Designer.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineView.Designer.cs	(revision 2546)
@@ -0,0 +1,134 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.ThreadParallelEngine {
+  partial class ThreadParallelEngineView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.workersNumericUpDown = new System.Windows.Forms.NumericUpDown();
+      this.workersLabel = new System.Windows.Forms.Label();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.operatorGraphGroupBox.SuspendLayout();
+      this.globalScopeGroupBox.SuspendLayout();
+      ((System.ComponentModel.ISupportInitialize)(this.workersNumericUpDown)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // executionTimeTextBox
+      // 
+      this.executionTimeTextBox.TabIndex = 7;
+      // 
+      // executionTimeLabel
+      // 
+      this.executionTimeLabel.TabIndex = 6;
+      // 
+      // splitContainer1
+      // 
+      // 
+      // workersNumericUpDown
+      // 
+      this.workersNumericUpDown.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.workersNumericUpDown.Location = new System.Drawing.Point(406, 460);
+      this.workersNumericUpDown.Maximum = new decimal(new int[] {
+            10000,
+            0,
+            0,
+            0});
+      this.workersNumericUpDown.Minimum = new decimal(new int[] {
+            1,
+            0,
+            0,
+            0});
+      this.workersNumericUpDown.Name = "workersNumericUpDown";
+      this.workersNumericUpDown.Size = new System.Drawing.Size(87, 20);
+      this.workersNumericUpDown.TabIndex = 5;
+      this.workersNumericUpDown.Value = new decimal(new int[] {
+            1,
+            0,
+            0,
+            0});
+      this.workersNumericUpDown.ValueChanged += new System.EventHandler(this.workersNumericUpDown_ValueChanged);
+      // 
+      // workersLabel
+      // 
+      this.workersLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+      this.workersLabel.AutoSize = true;
+      this.workersLabel.Location = new System.Drawing.Point(403, 444);
+      this.workersLabel.Name = "workersLabel";
+      this.workersLabel.Size = new System.Drawing.Size(87, 13);
+      this.workersLabel.TabIndex = 4;
+      this.workersLabel.Text = "&Worker Threads:";
+      // 
+      // ThreadParallelEngineEditor
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.workersNumericUpDown);
+      this.Controls.Add(this.workersLabel);
+      this.Name = "ThreadParallelEngineEditor";
+      this.Controls.SetChildIndex(this.workersLabel, 0);
+      this.Controls.SetChildIndex(this.workersNumericUpDown, 0);
+      this.Controls.SetChildIndex(this.executionTimeLabel, 0);
+      this.Controls.SetChildIndex(this.executeButton, 0);
+      this.Controls.SetChildIndex(this.abortButton, 0);
+      this.Controls.SetChildIndex(this.resetButton, 0);
+      this.Controls.SetChildIndex(this.splitContainer1, 0);
+      this.Controls.SetChildIndex(this.executionTimeTextBox, 0);
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.operatorGraphGroupBox.ResumeLayout(false);
+      this.globalScopeGroupBox.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.workersNumericUpDown)).EndInit();
+      this.ResumeLayout(false);
+      this.PerformLayout();
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.NumericUpDown workersNumericUpDown;
+    private System.Windows.Forms.Label workersLabel;
+
+  }
+}
Index: /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineView.cs
===================================================================
--- /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineView.cs	(revision 2546)
+++ /trunk/sources/HeuristicLab.ThreadParallelEngine/3.3/ThreadParallelEngineView.cs	(revision 2546)
@@ -0,0 +1,115 @@
+#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2008 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.Core;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.ThreadParallelEngine {
+  /// <summary>
+  /// Visual representation of a <see cref="ThreadParallelEngine"/>.
+  /// </summary>
+  [Content(typeof(ThreadParallelEngine), true)]
+  public partial class ThreadParallelEngineView : EngineBaseView {
+    /// <summary>
+    /// Gets or sets the ThreadParallelEngine to display.
+    /// </summary>
+    /// <remarks>Uses property <see cref="EngineBaseEditor.Engine"/> of base class 
+    /// <see cref="EngineBaseEditor"/>. No own data storage present.</remarks>
+    public ThreadParallelEngine ThreadParallelEngine {
+      get { return (ThreadParallelEngine)Engine; }
+      set { base.Engine = value; }
+    }
+
+    /// <summary>
+    /// Initializes a new instance of <see cref="ThreadParallelEngineEditor"/>.
+    /// </summary>
+    public ThreadParallelEngineView() {
+      InitializeComponent();
+    }
+    /// <summary>
+    /// Initializes a new instance of <see cref="ThreadParallelEngineEditor"/> with the given
+    /// <paramref name="threadParallelEngine"/> to display.
+    /// </summary>
+    /// <param name="threadParallelEngine">The engine to represent visually.</param>
+    public ThreadParallelEngineView(ThreadParallelEngine threadParallelEngine)
+      : this() {
+      ThreadParallelEngine = threadParallelEngine;
+    }
+
+    /// <summary>
+    /// Removes the eventhandlers from the underlying <see cref="ThreadParallelEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="EngineBaseEditor.RemoveItemEvents"/> of base class 
+    /// <see cref="EngineBaseEditor"/>.
+    /// </remarks>
+    protected override void RemoveItemEvents() {
+      ThreadParallelEngine.WorkersChanged -= new EventHandler(ThreadParallelEngine_WorkersChanged);
+      base.RemoveItemEvents();
+    }
+
+    /// <summary>
+    /// Adds eventhandlers to the underlying <see cref="ThreadParallelEngine"/>.
+    /// </summary>
+    /// <remarks>Calls <see cref="EngineBaseEditor.AddItemEvents"/> of base class 
+    /// <see cref="EngineBaseEditor"/>.
+    /// </remarks>
+    protected override void AddItemEvents() {
+      base.AddItemEvents();
+      ThreadParallelEngine.WorkersChanged += new EventHandler(ThreadParallelEngine_WorkersChanged);
+    }
+
+    /// <summary>
+    /// Updates the controls with the latest data.
+    /// </summary>
+    /// <remarks>Calls <see cref="EngineBaseEditor.UpdateControls"/> of base class 
+    /// <see cref="EngineBaseEditor"/>.</remarks>
+    protected override void UpdateControls() {
+      base.UpdateControls();
+      if (ThreadParallelEngine == null) {
+        workersNumericUpDown.Value = 1;
+        workersNumericUpDown.Enabled = false;
+      } else {
+        workersNumericUpDown.Value = ThreadParallelEngine.Workers;
+        workersNumericUpDown.Enabled = true;
+      }
+    }
+
+    #region ThreadParallelEngine Events
+    private void ThreadParallelEngine_WorkersChanged(object sender, EventArgs e) {
+      workersNumericUpDown.Value = ThreadParallelEngine.Workers;
+    }
+    #endregion
+
+    #region NumericUpDown Events
+    private void workersNumericUpDown_ValueChanged(object sender, EventArgs e) {
+      ThreadParallelEngine.Workers = (int)workersNumericUpDown.Value;
+    }
+    #endregion
+  }
+}
