Index: /trunk/sources/HeuristicLab 3.3.sln
===================================================================
--- /trunk/sources/HeuristicLab 3.3.sln	(revision 2818)
+++ /trunk/sources/HeuristicLab 3.3.sln	(revision 2819)
@@ -199,4 +199,5 @@
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|x64.Build.0 = Debug|x64
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|x86.ActiveCfg = Debug|x86
+		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Debug|x86.Build.0 = Debug|x86
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BF7D9494-A586-457B-8DF9-ED599F9E6A71}.Release|x64.ActiveCfg = Release|x64
@@ -410,5 +411,6 @@
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|x64.ActiveCfg = Debug|x64
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|x64.Build.0 = Debug|x64
-		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|x86.ActiveCfg = Debug|x86
+		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Debug|x86.Build.0 = Debug|x86
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{B1DCDECA-B56E-41D5-9850-EF0D3A77DEAF}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -468,5 +470,6 @@
 		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|x64.ActiveCfg = Debug|x64
 		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|x64.Build.0 = Debug|x64
-		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|x86.ActiveCfg = Debug|x86
+		{C664305E-497C-4533-A140-967DEDB05C19}.Debug|x86.Build.0 = Debug|x86
 		{C664305E-497C-4533-A140-967DEDB05C19}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C664305E-497C-4533-A140-967DEDB05C19}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -489,5 +492,6 @@
 		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|x64.ActiveCfg = Debug|x64
 		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|x64.Build.0 = Debug|x64
-		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|x86.ActiveCfg = Debug|x86
+		{E226881D-315F-423D-B419-A766FE0D8685}.Debug|x86.Build.0 = Debug|x86
 		{E226881D-315F-423D-B419-A766FE0D8685}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{E226881D-315F-423D-B419-A766FE0D8685}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -498,5 +502,6 @@
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|x64.ActiveCfg = Debug|x64
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|x64.Build.0 = Debug|x64
-		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|x86.ActiveCfg = Debug|x86
+		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Debug|x86.Build.0 = Debug|x86
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -543,5 +548,6 @@
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|x64.ActiveCfg = Debug|x64
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|x64.Build.0 = Debug|x64
-		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|x86.ActiveCfg = Debug|x86
+		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Debug|x86.Build.0 = Debug|x86
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{72104A0B-90E7-42F3-9ABE-9BBBADD4B943}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -552,5 +558,6 @@
 		{C49CB749-8B24-4628-8003-E86475749410}.Debug|x64.ActiveCfg = Debug|x64
 		{C49CB749-8B24-4628-8003-E86475749410}.Debug|x64.Build.0 = Debug|x64
-		{C49CB749-8B24-4628-8003-E86475749410}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{C49CB749-8B24-4628-8003-E86475749410}.Debug|x86.ActiveCfg = Debug|x86
+		{C49CB749-8B24-4628-8003-E86475749410}.Debug|x86.Build.0 = Debug|x86
 		{C49CB749-8B24-4628-8003-E86475749410}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{C49CB749-8B24-4628-8003-E86475749410}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -573,5 +580,6 @@
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x64.ActiveCfg = Debug|x64
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x64.Build.0 = Debug|x64
-		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x86.ActiveCfg = Debug|x86
+		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Debug|x86.Build.0 = Debug|x86
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{56F9106A-079F-4C61-92F6-86A84C2D84B7}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -582,5 +590,6 @@
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x64.ActiveCfg = Debug|x64
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x64.Build.0 = Debug|x64
-		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x86.ActiveCfg = Debug|x86
+		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Debug|x86.Build.0 = Debug|x86
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{AE5B1CE5-9862-4D6F-A700-D72CD9AEA295}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -591,5 +600,6 @@
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|x64.ActiveCfg = Debug|x64
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|x64.Build.0 = Debug|x64
-		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|x86.ActiveCfg = Debug|x86
+		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Debug|x86.Build.0 = Debug|x86
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{96AEBBEE-4203-45F3-BCF5-7B73BF256BDA}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -601,5 +611,6 @@
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|x64.ActiveCfg = Debug|x64
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|x64.Build.0 = Debug|x64
-		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|x86.ActiveCfg = Debug|x86
+		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Debug|x86.Build.0 = Debug|x86
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{BB994448-2B21-4564-BB2E-38D8FFF8CF18}.Release|Any CPU.Build.0 = Release|Any CPU
@@ -611,5 +622,6 @@
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|x64.ActiveCfg = Debug|x64
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|x64.Build.0 = Debug|x64
-		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|x86.ActiveCfg = Debug|Any CPU
+		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|x86.ActiveCfg = Debug|x86
+		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Debug|x86.Build.0 = Debug|x86
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|Any CPU.ActiveCfg = Release|Any CPU
 		{57F38579-409D-4DD8-AB19-3F2C4A665126}.Release|Any CPU.Build.0 = Release|Any CPU
Index: /trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/Analysis/Model.Analysis.cs
===================================================================
--- /trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/Analysis/Model.Analysis.cs	(revision 2818)
+++ /trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/Analysis/Model.Analysis.cs	(revision 2819)
@@ -227,5 +227,6 @@
                             if (p.Children == null)
                                 p.Children = new CollectionBase<INode>();
-                            p.Children.Add(n);
+                            if(!p.Children.Contains(n))                    // mkommend 16.02.2010 avoid duplicate children
+                                p.Children.Add(n);
                         }
                     }
Index: /trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/Layout/StandardTreeLayout.cs
===================================================================
--- /trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/Layout/StandardTreeLayout.cs	(revision 2818)
+++ /trunk/sources/HeuristicLab.ExtLibs/HeuristicLab.Netron/3.0.2672.12446/Netron.Diagramming.Core-3.0.2672.12446/Layout/StandardTreeLayout.cs	(revision 2819)
@@ -152,4 +152,5 @@
                 throw new InconsistencyException("The model has not been set and the Graph property is hence 'null'");
 
+            m_depths = new float[10];
             this.LayoutRoot = this.Controller.Model.LayoutRoot;//could be null if not set in the GUI
             Graph.ClearSpanningTree();
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj	(revision 2818)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/HeuristicLab.Operators.Views.GraphVisualization-3.3.csproj	(revision 2819)
@@ -95,4 +95,11 @@
     <None Include="HeuristicLabOperatorsViewsGraphVisualizationPlugin.cs.frame" />
     <None Include="Properties\AssemblyInfo.frame" />
+    <Compile Include="ToolBarItems\SelectToolBarItem.cs" />
+    <Compile Include="ToolBarItems\PanToolBarItem.cs" />
+    <Compile Include="ToolBarItems\ZoomOutToolBarItem.cs" />
+    <Compile Include="ToolBarItems\ZoomInToolBarItem.cs" />
+    <Compile Include="ToolBarItems\ZoomToolBarItem.cs" />
+    <Compile Include="ToolBarItems\OperatorGraphVisualizationToolBarItemSeparator.cs" />
+    <Compile Include="ToolBarItems\RelayoutToolBarItem.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -100,4 +107,8 @@
       <Project>{958B43BC-CC5C-4FA2-8628-2B3B01D890B6}</Project>
       <Name>HeuristicLab.Collections-3.3</Name>
+    </ProjectReference>
+    <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.Core.Views\3.3\HeuristicLab.Core.Views-3.3.csproj">
@@ -129,4 +140,12 @@
       <Name>HeuristicLab.Operators-3.3</Name>
     </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Optimizer\3.3\HeuristicLab.Optimizer-3.3.csproj">
+      <Project>{C664305E-497C-4533-A140-967DEDB05C19}</Project>
+      <Name>HeuristicLab.Optimizer-3.3</Name>
+    </ProjectReference>
+    <ProjectReference Include="..\..\HeuristicLab.Parameters\3.3\HeuristicLab.Parameters-3.3.csproj">
+      <Project>{56F9106A-079F-4C61-92F6-86A84C2D84B7}</Project>
+      <Name>HeuristicLab.Parameters-3.3</Name>
+    </ProjectReference>
     <ProjectReference Include="..\..\HeuristicLab.PluginInfrastructure\HeuristicLab.PluginInfrastructure.csproj">
       <Project>{94186A6A-5176-4402-AE83-886557B53CCA}</Project>
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualizationView.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualizationView.Designer.cs	(revision 2818)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualizationView.Designer.cs	(revision 2819)
@@ -35,6 +35,5 @@
       this.graphVisualization.BackColor = System.Drawing.Color.DarkGray;
       this.graphVisualization.BackgroundType = global::Netron.Diagramming.Core.CanvasBackgroundTypes.FlatColor;
-      this.graphVisualization.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.graphVisualization.Document = ((global::Netron.Diagramming.Core.Document)(resources.GetObject("netronVisualization1.Document")));
+      this.graphVisualization.Dock = System.Windows.Forms.DockStyle.Fill;      
       this.graphVisualization.EnableAddConnection = true;
       this.graphVisualization.FileName = "";
@@ -43,5 +42,4 @@
       this.graphVisualization.Name = "graphVisualization";
       this.graphVisualization.Origin = new System.Drawing.Point(0, 0);
-      this.graphVisualization.PageSettings = ((System.Drawing.Printing.PageSettings)(resources.GetObject("netronVisualization1.PageSettings")));
       this.graphVisualization.ShowConnectors = true;
       this.graphVisualization.ShowRulers = false;
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualizationView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualizationView.cs	(revision 2818)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/OperatorGraphVisualizationView.cs	(revision 2819)
@@ -32,4 +32,5 @@
 using HeuristicLab.Core.Views;
 using Netron.Diagramming.Core;
+using HeuristicLab.Parameters;
 
 namespace HeuristicLab.Operators.Views.GraphVisualization {
@@ -37,5 +38,6 @@
   public partial class OperatorGraphVisualizationView : ItemView {
     private Dictionary<IOperator, IShape> operatorShapeMapping;
-    private Dictionary<KeyValuePair<IOperator, IOperator>, IConnection> connectionMapping;
+    private Dictionary<KeyValuePair<IOperator, IValueParameter<IOperator>>, IConnection> connectionMapping;
+    private HashSet<IValueParameter<IOperator>> parameters;
     /// <summary>
     /// Initializes a new instance of <see cref="OperatorGraphVisualizationView"/> with caption "Operator Graph".
@@ -45,5 +47,8 @@
       Caption = "Operator Graph";
       this.operatorShapeMapping = new Dictionary<IOperator, IShape>();
-      this.connectionMapping = new Dictionary<KeyValuePair<IOperator, IOperator>, IConnection>();
+      this.connectionMapping = new Dictionary<KeyValuePair<IOperator, IValueParameter<IOperator>>, IConnection>();
+      this.parameters = new HashSet<IValueParameter<IOperator>>();
+
+      this.graphVisualization.Controller.Model.OnEntityRemoved += new EventHandler<EntityEventArgs>(Model_OnEntityRemoved);
     }
 
@@ -59,5 +64,4 @@
     }
 
-
     /// <summary>
     /// Gets or sets the operator graph to represent visually.
@@ -74,11 +78,10 @@
     }
 
+
     protected override void OnContentChanged() {
       base.OnContentChanged();
-      this.GraphModel.Shapes.Clear();
-      this.operatorShapeMapping.Clear();
-      this.connectionMapping.Clear();
-
-      this.CreateGraph(null, this.Content);
+      this.ClearGraph();
+
+      this.CreateGraph(null, new OperatorParameter(string.Empty, this.Content));
       foreach (IShape shape in this.operatorShapeMapping.Values)
         this.GraphModel.AddShape(shape);
@@ -87,7 +90,9 @@
         this.GraphModel.AddConnection(connection);
 
-      this.graphVisualization.Controller.View.Invalidate();
-      this.graphVisualization.Controller.Model.LayoutRoot = this.operatorShapeMapping[this.Content];
-      this.graphVisualization.Controller.RunActivity("Standard TreeLayout");
+      if (this.Content == null)
+        this.graphVisualization.Controller.Model.LayoutRoot = null;
+      else
+        this.graphVisualization.Controller.Model.LayoutRoot = this.operatorShapeMapping[this.Content];
+      this.RelayoutOperatorGraph();
     }
 
@@ -96,27 +101,34 @@
         Invoke(new EventHandler(opParam_ValueChanged), sender, e);
       else {
-        //IValueParameter<IOperator> opParam = (IValueParameter<IOperator>)sender;
-        //foreach (TreeNode node in opParamNodeTable[opParam].ToArray())
-        //  //remove nodes
-        //foreach (TreeNode node in opParamNodeTable[opParam]) {
-        //  //add nodes
-        //}
-      }
-    } 
-
-    private void CreateGraph(IOperator parent, IOperator op) {
-      if (op == null)
+        this.OnContentChanged();
+      }
+    }
+
+    private void ClearGraph() {
+      this.GraphModel.Clear();
+      foreach (IValueParameter<IOperator> opParam in this.parameters)
+        opParam.ValueChanged -= opParam_ValueChanged;
+
+      this.operatorShapeMapping.Clear();
+      this.parameters.Clear();
+      this.connectionMapping.Clear();
+    }
+
+
+
+    private void CreateGraph(IOperator parent, IValueParameter<IOperator> op) {
+      if (op == null || op.Value == null)
         return;
 
       IShape shape;
-      if (!this.operatorShapeMapping.ContainsKey(op)) {
-        shape = CreateOperatorShape(op);
-        this.operatorShapeMapping[op] = shape;
-
-        foreach (IParameter param in op.Parameters) {
+      if (!this.operatorShapeMapping.ContainsKey(op.Value)) {
+        shape = CreateOperatorShape(op.Value);
+        this.operatorShapeMapping[op.Value] = shape;
+
+        foreach (IParameter param in op.Value.Parameters) {
           IValueParameter<IOperator> opParam = param as IValueParameter<IOperator>;
           if (opParam != null) {
-            opParam.ValueChanged += new EventHandler(opParam_ValueChanged);
-            this.CreateGraph(op, opParam.Value);
+            HandleOperatorParameter(opParam);
+            this.CreateGraph(op.Value, opParam);
           }
         }
@@ -127,13 +139,13 @@
     }
 
-    private void RemoveGraph(IOperator op) {
-      if(op == null)
+    private void HandleOperatorParameter(IValueParameter<IOperator> opParam) {
+      if (opParam == null)
         return;
-      IShape shape = this.operatorShapeMapping[op];
-      this.GraphModel.RemoveShape(shape);
-    }
-
-    private IConnection ConnectShapes(IOperator parent, IOperator op) {
-      IShape operatorShape = this.operatorShapeMapping[op];
+      opParam.ValueChanged += new EventHandler(opParam_ValueChanged);
+      parameters.Add(opParam);
+    }
+
+    private IConnection ConnectShapes(IOperator parent, IValueParameter<IOperator> opParam) {
+      IShape operatorShape = this.operatorShapeMapping[opParam.Value];
       IShape parentShape = this.operatorShapeMapping[parent];
       IConnector operatorConnector = parentShape.Connectors.Where(c => c.Name == "Bottom connector").First();
@@ -144,5 +156,5 @@
       operatorConnector.AttachConnector(connection.To);
 
-      this.connectionMapping[new KeyValuePair<IOperator, IOperator>(parent, op)] = connection;
+      this.connectionMapping[new KeyValuePair<IOperator, IValueParameter<IOperator>>(parent, opParam)] = connection;
       return connection;
     }
@@ -157,4 +169,59 @@
       return shape;
     }
+
+    private void Model_OnEntityRemoved(object sender, EntityEventArgs e) {
+      IShape shape = e.Entity as IShape;
+      if (shape != null) {
+        IOperator op = operatorShapeMapping.Where(os => os.Value == shape).First().Key;
+        if (op == this.Content)
+          this.Content = null;
+        else {
+          //clear all connections to the removed operator
+          IEnumerable<IValueParameter<IOperator>> parentOperator = this.connectionMapping.Where(cs => cs.Key.Value.Value == op).Select(x => x.Key.Value);
+          foreach(IValueParameter<IOperator> opParam in parentOperator.ToArray())
+            opParam.Value = null;
+
+          //remove connections from graph view
+          IEnumerable<IConnection> connections = this.connectionMapping.Where(cs => cs.Key.Value.Value == op).Select(x => x.Value);
+          foreach (IConnection connection in connections)
+            this.GraphModel.Remove(connection);
+
+          this.graphVisualization.Invalidate();
+        }
+
+
+      }
+    }
+
+    #region methods for toolbar items
+
+    internal void RelayoutOperatorGraph() {
+      if (this.operatorShapeMapping.Count > 0 && this.connectionMapping.Count > 0) { //otherwise the layout does not work
+        this.graphVisualization.Invalidate();
+        this.graphVisualization.Controller.RunActivity("Standard TreeLayout");
+      }
+    }
+
+    internal void ActivateZoomAreaTool() {
+      this.graphVisualization.Controller.ActivateTool(ControllerBase.ZoomAreaToolName);
+    }
+
+    internal void ActivateZoomInTool() {
+      this.graphVisualization.Controller.ActivateTool(ControllerBase.ZoomInToolName);
+    }
+
+    internal void ActivateZoomOutTool() {
+      this.graphVisualization.Controller.ActivateTool(ControllerBase.ZoomOutToolName);
+    }
+
+    internal void ActivatePanTool() {
+      this.graphVisualization.Controller.ActivateTool(ControllerBase.PanToolName);
+    }
+
+    internal void ActivateSelectTool() {
+      this.graphVisualization.Controller.ActivateTool(ControllerBase.SelectionToolName);
+    }
+
+    #endregion
   }
 }
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/OperatorGraphVisualizationToolBarItemSeparator.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/OperatorGraphVisualizationToolBarItemSeparator.cs	(revision 2819)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/OperatorGraphVisualizationToolBarItemSeparator.cs	(revision 2819)
@@ -0,0 +1,28 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Operators.Views.GraphVisualization {
+  internal class OperatorGraphVisualizationToolBarItemSeparator : HeuristicLab.MainForm.ToolBarSeparatorItem, HeuristicLab.Optimizer.IOptimizerUserInterfaceItemProvider {
+    public override int Position {
+      get { return 100; }
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/PanToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/PanToolBarItem.cs	(revision 2819)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/PanToolBarItem.cs	(revision 2819)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.MainForm;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization {
+  internal class PanToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItem, HeuristicLab.Optimizer.IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "Pan"; }
+    }
+
+    public override string ToolTipText {
+      get { return "Pan"; }
+    }
+    public override int Position {
+      get { return 130; }
+    }
+    public override Image Image {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Macro; }
+    }
+
+    protected override void OnActiveViewChanged(object sender, System.EventArgs e) {
+      base.OnActiveViewChanged(sender, e);
+      this.ToolStripItem.Visible = MainFormManager.MainForm.ActiveView is OperatorGraphVisualizationView;
+    }
+
+    public override void Execute() {
+      OperatorGraphVisualizationView view = MainFormManager.MainForm.ActiveView as OperatorGraphVisualizationView;
+      if (view != null)
+        view.ActivatePanTool();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/RelayoutToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/RelayoutToolBarItem.cs	(revision 2819)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/RelayoutToolBarItem.cs	(revision 2819)
@@ -0,0 +1,51 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization {
+  internal class RelayoutToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItem, HeuristicLab.Optimizer.IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "Relayout"; }
+    }
+    public override string ToolTipText {
+      get { return "Relayout"; }
+    }
+    public override int Position {
+      get { return 110; }
+    }
+    public override Image Image {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.RefreshDocument; }
+    }
+
+    protected override void OnActiveViewChanged(object sender, System.EventArgs e) {
+      base.OnActiveViewChanged(sender, e);
+      this.ToolStripItem.Visible = MainFormManager.MainForm.ActiveView is OperatorGraphVisualizationView;
+    }
+
+    public override void Execute() {
+      OperatorGraphVisualizationView view = MainFormManager.MainForm.ActiveView as OperatorGraphVisualizationView;
+      if (view != null)
+        view.RelayoutOperatorGraph();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/SelectToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/SelectToolBarItem.cs	(revision 2819)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/SelectToolBarItem.cs	(revision 2819)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.MainForm;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization {
+  internal class SelectToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItem, HeuristicLab.Optimizer.IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "Select"; }
+    }
+
+    public override string ToolTipText {
+      get { return "Select"; }
+    }
+    public override int Position {
+      get { return 120; }
+    }
+    public override Image Image {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Macro; }
+    }
+
+    protected override void OnActiveViewChanged(object sender, System.EventArgs e) {
+      base.OnActiveViewChanged(sender, e);
+      this.ToolStripItem.Visible = MainFormManager.MainForm.ActiveView is OperatorGraphVisualizationView;
+    }
+
+    public override void Execute() {
+      OperatorGraphVisualizationView view = MainFormManager.MainForm.ActiveView as OperatorGraphVisualizationView;
+      if (view != null)
+        view.ActivateSelectTool();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomInToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomInToolBarItem.cs	(revision 2819)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomInToolBarItem.cs	(revision 2819)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.MainForm;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization {
+  internal class ZoomInToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItem, HeuristicLab.Optimizer.IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "Zoom In"; }
+    }
+
+    public override string ToolTipText {
+      get { return "Zoom In"; }
+    }
+    public override int Position {
+      get { return 141; }
+    }
+    public override Image Image {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Sort; }
+    }
+
+    protected override void OnActiveViewChanged(object sender, System.EventArgs e) {
+      base.OnActiveViewChanged(sender, e);
+      this.ToolStripItem.Visible = MainFormManager.MainForm.ActiveView is OperatorGraphVisualizationView;
+    }
+
+    public override void Execute() {
+      OperatorGraphVisualizationView view = MainFormManager.MainForm.ActiveView as OperatorGraphVisualizationView;
+      if (view != null)
+        view.ActivateZoomInTool();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomOutToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomOutToolBarItem.cs	(revision 2819)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomOutToolBarItem.cs	(revision 2819)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.MainForm;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization {
+  internal class ZoomOutToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItem, HeuristicLab.Optimizer.IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "Zoom Out"; }
+    }
+
+    public override string ToolTipText {
+      get { return "Zoom Out"; }
+    }
+    public override int Position {
+      get { return 142; }
+    }
+    public override Image Image {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.SortUp; }
+    }
+
+    protected override void OnActiveViewChanged(object sender, System.EventArgs e) {
+      base.OnActiveViewChanged(sender, e);
+      this.ToolStripItem.Visible = MainFormManager.MainForm.ActiveView is OperatorGraphVisualizationView;
+    }
+
+    public override void Execute() {
+      OperatorGraphVisualizationView view = MainFormManager.MainForm.ActiveView as OperatorGraphVisualizationView;
+      if (view != null)
+        view.ActivateZoomOutTool();
+    }
+  }
+}
Index: /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomToolBarItem.cs
===================================================================
--- /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomToolBarItem.cs	(revision 2819)
+++ /trunk/sources/HeuristicLab.Operators.Views.GraphVisualization/3.3/ToolBarItems/ZoomToolBarItem.cs	(revision 2819)
@@ -0,0 +1,53 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2010 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.Drawing;
+using HeuristicLab.MainForm;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Operators.Views.GraphVisualization {
+  internal class ZoomToolBarItem : HeuristicLab.MainForm.WindowsForms.ToolBarItem, HeuristicLab.Optimizer.IOptimizerUserInterfaceItemProvider {
+    public override string Name {
+      get { return "Zoom"; }
+    }
+
+    public override string ToolTipText {
+      get { return "Zoom"; }
+    }
+    public override int Position {
+      get { return 140; }
+    }
+    public override Image Image {
+      get { return HeuristicLab.Common.Resources.VS2008ImageLibrary.Zoom; }
+    }
+
+    protected override void OnActiveViewChanged(object sender, System.EventArgs e) {
+      base.OnActiveViewChanged(sender, e);
+      this.ToolStripItem.Visible = MainFormManager.MainForm.ActiveView is OperatorGraphVisualizationView;
+    }
+
+    public override void Execute() {
+      OperatorGraphVisualizationView view = MainFormManager.MainForm.ActiveView as OperatorGraphVisualizationView;
+      if (view != null)
+        view.ActivateZoomAreaTool();
+    }
+  }
+}
