Index: branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4871)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.Designer.cs	(revision 4876)
@@ -50,17 +50,10 @@
       this.executionTimeTextBox = new System.Windows.Forms.TextBox();
       this.executionStackView = new HeuristicLab.DebugEngine.ExecutionStackView();
+      this.operationContentView = new HeuristicLab.DebugEngine.OperationContentView();
       this.logView = new HeuristicLab.Core.Views.LogView();
       this.splitContainer1 = new System.Windows.Forms.SplitContainer();
       this.splitContainer2 = new System.Windows.Forms.SplitContainer();
-      this.splitContainer3 = new System.Windows.Forms.SplitContainer();
-      this.parameterCollectionView = new HeuristicLab.Core.Views.ParameterCollectionView();
-      this.label3 = new System.Windows.Forms.Label();
-      this.scopeTreeView = new System.Windows.Forms.TreeView();
-      this.label4 = new System.Windows.Forms.Label();
-      this.operationTextBox = new System.Windows.Forms.TextBox();
       this.stepButton = new System.Windows.Forms.Button();
-      this.updateButton = new System.Windows.Forms.Button();
       this.toolTip = new System.Windows.Forms.ToolTip(this.components);
-      this.parentButton = new System.Windows.Forms.Button();
       this.splitContainer1.Panel1.SuspendLayout();
       this.splitContainer1.Panel2.SuspendLayout();
@@ -69,7 +62,4 @@
       this.splitContainer2.Panel2.SuspendLayout();
       this.splitContainer2.SuspendLayout();
-      this.splitContainer3.Panel1.SuspendLayout();
-      this.splitContainer3.Panel2.SuspendLayout();
-      this.splitContainer3.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -90,5 +80,5 @@
       this.executionTimeTextBox.Name = "executionTimeTextBox";
       this.executionTimeTextBox.ReadOnly = true;
-      this.executionTimeTextBox.Size = new System.Drawing.Size(684, 20);
+      this.executionTimeTextBox.Size = new System.Drawing.Size(747, 20);
       this.executionTimeTextBox.TabIndex = 1;
       // 
@@ -101,6 +91,17 @@
       this.executionStackView.Name = "executionStackView";
       this.executionStackView.ReadOnly = false;
-      this.executionStackView.Size = new System.Drawing.Size(433, 262);
+      this.executionStackView.Size = new System.Drawing.Size(252, 262);
       this.executionStackView.TabIndex = 0;
+      // 
+      // operationContentView
+      // 
+      this.operationContentView.Caption = "Operation Content View";
+      this.operationContentView.Content = null;
+      this.operationContentView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.operationContentView.Location = new System.Drawing.Point(0, 0);
+      this.operationContentView.Name = "operationContentView";
+      this.operationContentView.ReadOnly = false;
+      this.operationContentView.Size = new System.Drawing.Size(610, 503);
+      this.operationContentView.TabIndex = 0;
       // 
       // logView
@@ -112,5 +113,5 @@
       this.logView.Name = "logView";
       this.logView.ReadOnly = false;
-      this.logView.Size = new System.Drawing.Size(433, 237);
+      this.logView.Size = new System.Drawing.Size(252, 237);
       this.logView.TabIndex = 2;
       // 
@@ -129,5 +130,5 @@
       // 
       this.splitContainer1.Panel2.Controls.Add(this.logView);
-      this.splitContainer1.Size = new System.Drawing.Size(433, 503);
+      this.splitContainer1.Size = new System.Drawing.Size(252, 503);
       this.splitContainer1.SplitterDistance = 262;
       this.splitContainer1.TabIndex = 3;
@@ -147,80 +148,8 @@
       // splitContainer2.Panel2
       // 
-      this.splitContainer2.Panel2.Controls.Add(this.splitContainer3);
-      this.splitContainer2.Panel2.Controls.Add(this.label4);
-      this.splitContainer2.Panel2.Controls.Add(this.operationTextBox);
+      this.splitContainer2.Panel2.Controls.Add(this.operationContentView);
       this.splitContainer2.Size = new System.Drawing.Size(866, 503);
-      this.splitContainer2.SplitterDistance = 433;
+      this.splitContainer2.SplitterDistance = 252;
       this.splitContainer2.TabIndex = 0;
-      // 
-      // splitContainer3
-      // 
-      this.splitContainer3.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.splitContainer3.Location = new System.Drawing.Point(3, 29);
-      this.splitContainer3.Name = "splitContainer3";
-      this.splitContainer3.Orientation = System.Windows.Forms.Orientation.Horizontal;
-      // 
-      // splitContainer3.Panel1
-      // 
-      this.splitContainer3.Panel1.Controls.Add(this.parameterCollectionView);
-      // 
-      // splitContainer3.Panel2
-      // 
-      this.splitContainer3.Panel2.Controls.Add(this.label3);
-      this.splitContainer3.Panel2.Controls.Add(this.scopeTreeView);
-      this.splitContainer3.Size = new System.Drawing.Size(423, 471);
-      this.splitContainer3.SplitterDistance = 235;
-      this.splitContainer3.TabIndex = 4;
-      // 
-      // parameterCollectionView
-      // 
-      this.parameterCollectionView.Caption = "ParameterCollection View";
-      this.parameterCollectionView.Content = null;
-      this.parameterCollectionView.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.parameterCollectionView.Location = new System.Drawing.Point(0, 0);
-      this.parameterCollectionView.Name = "parameterCollectionView";
-      this.parameterCollectionView.ReadOnly = false;
-      this.parameterCollectionView.Size = new System.Drawing.Size(423, 235);
-      this.parameterCollectionView.TabIndex = 0;
-      // 
-      // label3
-      // 
-      this.label3.AutoSize = true;
-      this.label3.Location = new System.Drawing.Point(3, 0);
-      this.label3.Name = "label3";
-      this.label3.Size = new System.Drawing.Size(63, 13);
-      this.label3.TabIndex = 1;
-      this.label3.Text = "Scope Tree";
-      // 
-      // scopeTreeView
-      // 
-      this.scopeTreeView.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.scopeTreeView.Location = new System.Drawing.Point(3, 16);
-      this.scopeTreeView.Name = "scopeTreeView";
-      this.scopeTreeView.ShowNodeToolTips = true;
-      this.scopeTreeView.Size = new System.Drawing.Size(417, 216);
-      this.scopeTreeView.TabIndex = 0;
-      this.scopeTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.scopeTreeView_NodeMouseDoubleClick);
-      // 
-      // label4
-      // 
-      this.label4.AutoSize = true;
-      this.label4.Location = new System.Drawing.Point(3, 6);
-      this.label4.Name = "label4";
-      this.label4.Size = new System.Drawing.Size(56, 13);
-      this.label4.TabIndex = 3;
-      this.label4.Text = "Operation:";
-      // 
-      // operationTextBox
-      // 
-      this.operationTextBox.Location = new System.Drawing.Point(65, 3);
-      this.operationTextBox.Name = "operationTextBox";
-      this.operationTextBox.ReadOnly = true;
-      this.operationTextBox.Size = new System.Drawing.Size(267, 20);
-      this.operationTextBox.TabIndex = 2;
       // 
       // stepButton
@@ -228,5 +157,5 @@
       this.stepButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
       this.stepButton.Image = ((System.Drawing.Image)(resources.GetObject("stepButton.Image")));
-      this.stepButton.Location = new System.Drawing.Point(812, 3);
+      this.stepButton.Location = new System.Drawing.Point(845, 3);
       this.stepButton.Name = "stepButton";
       this.stepButton.Size = new System.Drawing.Size(24, 24);
@@ -236,34 +165,8 @@
       this.stepButton.Click += new System.EventHandler(this.stepButton_Click);
       // 
-      // updateButton
-      // 
-      this.updateButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.updateButton.Image = ((System.Drawing.Image)(resources.GetObject("updateButton.Image")));
-      this.updateButton.Location = new System.Drawing.Point(842, 3);
-      this.updateButton.Name = "updateButton";
-      this.updateButton.Size = new System.Drawing.Size(24, 24);
-      this.updateButton.TabIndex = 5;
-      this.toolTip.SetToolTip(this.updateButton, "Refresh/Reset View");
-      this.updateButton.UseVisualStyleBackColor = true;
-      this.updateButton.Click += new System.EventHandler(this.updateButton_Click);
-      // 
-      // parentButton
-      // 
-      this.parentButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.parentButton.Image = ((System.Drawing.Image)(resources.GetObject("parentButton.Image")));
-      this.parentButton.Location = new System.Drawing.Point(782, 3);
-      this.parentButton.Name = "parentButton";
-      this.parentButton.Size = new System.Drawing.Size(24, 24);
-      this.parentButton.TabIndex = 6;
-      this.toolTip.SetToolTip(this.parentButton, "Go to parent ExecutionContext");
-      this.parentButton.UseVisualStyleBackColor = true;
-      this.parentButton.Click += new System.EventHandler(this.parentButton_Click);
-      // 
       // DebugEngineView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.Controls.Add(this.parentButton);
       this.Controls.Add(this.splitContainer2);
-      this.Controls.Add(this.updateButton);
       this.Controls.Add(this.stepButton);
       this.Controls.Add(this.executionTimeTextBox);
@@ -276,10 +179,5 @@
       this.splitContainer2.Panel1.ResumeLayout(false);
       this.splitContainer2.Panel2.ResumeLayout(false);
-      this.splitContainer2.Panel2.PerformLayout();
       this.splitContainer2.ResumeLayout(false);
-      this.splitContainer3.Panel1.ResumeLayout(false);
-      this.splitContainer3.Panel2.ResumeLayout(false);
-      this.splitContainer3.Panel2.PerformLayout();
-      this.splitContainer3.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -294,15 +192,8 @@
     private System.Windows.Forms.SplitContainer splitContainer1;
     private System.Windows.Forms.SplitContainer splitContainer2;
-    private System.Windows.Forms.Label label3;
-    private System.Windows.Forms.TreeView scopeTreeView;
     private System.Windows.Forms.Button stepButton;
-    private System.Windows.Forms.Button updateButton;
     private System.Windows.Forms.ToolTip toolTip;
-    private System.Windows.Forms.Button parentButton;
-    private System.Windows.Forms.Label label4;
-    private System.Windows.Forms.TextBox operationTextBox;
-    private System.Windows.Forms.SplitContainer splitContainer3;
-    private Core.Views.ParameterCollectionView parameterCollectionView;
     private HeuristicLab.DebugEngine.ExecutionStackView executionStackView;
+    private HeuristicLab.DebugEngine.OperationContentView operationContentView;
 
   }
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4871)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.cs	(revision 4876)
@@ -54,7 +54,4 @@
     public DebugEngineView() {
       InitializeComponent();
-      updateButton.Image = VS2008ImageLibrary.Refresh;
-      stepButton.Image = VS2008ImageLibrary.MoveNext;
-      parentButton.Image = VS2008ImageLibrary.ArrowUp;
     }
 
@@ -91,8 +88,10 @@
         executionTimeTextBox.Text = "-";
         executionStackView.Content = null;
+        operationContentView.Content = null;
       } else {
         logView.Content = Content.Log;
         executionTimeTextBox.Text = Content.ExecutionTime.ToString();
         executionStackView.Content = Content.ExecutionStack;
+        operationContentView.Content = new OperationContent(Content.CurrentOperation);
       }
     }
@@ -103,7 +102,9 @@
         logView.Enabled = false;
         executionTimeTextBox.Enabled = false;
+        stepButton.Enabled = false;
       } else {
         logView.Enabled = true;
         executionTimeTextBox.Enabled = true;
+        stepButton.Enabled = Content.CanContinue;
       }
     }
@@ -124,105 +125,19 @@
         switch (Content.ExecutionState) {
           case ExecutionState.Started: executionStackView.SuspendUpdate(); break;
-          default: executionStackView.ResumeUpdate(); break;
+          default:
+            executionStackView.ResumeUpdate();
+            operationContentView.Content = new OperationContent(Content.CurrentOperation);
+            break;
         }
+        SetEnabledStateOfControls();
       }
     }
 
-    #region Current Operation
-
     void Content_CurrentOperationChanged(object sender, OperationChangedEventArgs e) {
-      if (InvokeRequired)
+      if (InvokeRequired) {
         Invoke(new EventHandler<OperationChangedEventArgs>(Content_CurrentOperationChanged), sender, e);
-      else
-        SetOperation(Content.CurrentOperation);
-    }
-
-    private void SetOperation(IOperation operation) {
-      IAtomicOperation atomicOperation = operation as IAtomicOperation;
-      operationTextBox.Text = "<none>";
-      parameterCollectionView.Content = null;
-      toolTip.SetToolTip(operationTextBox, null);
-      if (atomicOperation != null && atomicOperation.Operator != null) {
-        operationTextBox.Text = string.Format("Atomic {0}", atomicOperation.Operator.Name);
-        toolTip.SetToolTip(operationTextBox, Utils.TypeName(atomicOperation.Operator));
-      }
-      OperationCollection operationCollection = operation as OperationCollection;
-      if (operationCollection != null)
-        operationTextBox.Text = string.Format("Collection {0}", operationCollection.Count);
-      IExecutionContext context = operation as IExecutionContext;
-      IScope scope = null;
-      if (context != null) {
-        parameterCollectionView.Content = context.Parameters;
-        scope = context.Scope;
-        while (scope != null && scope.Parent != null)
-          scope = scope.Parent;
-      }
-      UpdateScope(scope);
-      if (context != null)
-        parentButton.Enabled = context.Parent != null;
-      scopeTreeView.Tag = context;
-    }
-
-    private void UpdateScope(IScope scope) {
-      scopeTreeView.BeginUpdate();
-      scopeTreeView.Nodes.Clear();
-      if (scope != null) {
-        AddScope(scopeTreeView.Nodes, scope);
-      }
-      scopeTreeView.ExpandAll();
-      if (scopeTreeView.Nodes.Count > 0)
-        scopeTreeView.TopNode = scopeTreeView.Nodes[0];
-      scopeTreeView.EndUpdate();
-    }
-
-   
-
-    /*
-    private string GetApproximateValue(IParameter param, ref string typeName) {
-      string valueString = "<none>";
-      IExecutionContext context = Content.CurrentOperation as IExecutionContext;
-      IExecutionContext originalContext = param.ExecutionContext;
-      object value = null;
-      try {
-        try {
-          param.ExecutionContext = context;
-          value = param.ActualValue;
-        } finally {
-          param.ExecutionContext = originalContext;
-        }
-      } catch (Exception) { }
-      if (value != null) {
-        valueString = value.ToString();
-        if (context != originalContext)
-          valueString = " ~ " + valueString;
-        typeName = TypeName(value);
-      }
-      return valueString;
-    }
-     */
-
-    private void AddScope(TreeNodeCollection nodes, IScope scope) {
-      TreeNode node = nodes.Add(scope.Name);
-      if (Content.CurrentAtomicOperation != null && Content.CurrentAtomicOperation.Scope == scope) {
-        node.ForeColor = Color.Red;
-        node.BackColor = Color.LightGray;
-      }
-      foreach (var var in scope.Variables) {
-        TreeNode varNode = node.Nodes.Add(string.Format("{0}={1}", var.Name, var.Value.ToString()));
-        varNode.Tag = var.Value;
-        varNode.ToolTipText = Utils.TypeName(var.Value);
-      }
-      foreach (var subScope in scope.SubScopes) {
-        AddScope(node.Nodes, subScope);
-      }
-    }
-
-    #endregion
-
-    protected virtual void UpdateView() {
-      if (InvokeRequired) {
-        Invoke(new Action(UpdateView));
       } else {
-        SetOperation(Content.CurrentOperation);
+        if (Content.ExecutionState != ExecutionState.Started)
+          operationContentView.Content = new OperationContent(Content.CurrentOperation);
       }
     }
@@ -230,22 +145,6 @@
     private void stepButton_Click(object sender, EventArgs e) {
       Content.Step();
-      UpdateView();
     }
 
-    private void updateButton_Click(object sender, EventArgs e) {
-      UpdateView();
-    }
-
-    private void scopeTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
-      if (e.Node.Tag != null)
-        MainFormManager.MainForm.ShowContent((IItem)e.Node.Tag);
-    }
-
-    private void parentButton_Click(object sender, EventArgs e) {
-      IExecutionContext context = scopeTreeView.Tag as IExecutionContext;
-      if (context != null) {
-        SetOperation(context.Parent as IOperation);
-      }
-    }
   }
 }
Index: branches/HeuristicLab.DebugEngine/DebugEngineView.resx
===================================================================
--- branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4871)
+++ branches/HeuristicLab.DebugEngine/DebugEngineView.resx	(revision 4876)
@@ -122,6 +122,6 @@
     <value>
         iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDgAA
-        Cw4BQL7hQQAAARBJREFUOE9j+P//PwM6Tuh5woxNHJsYhmaQIqABMkDMRIwhWA0onPX8f/zkt0rEGILV
+        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDAAA
+        CwwBP0AiyAAAARBJREFUOE9j+P//PwM6Tuh5woxNHJsYhmaQIqABMkDMRIwhWA0onPX8f/zkt0rEGILV
         gNyZz/4ndN/7HzfhtQYh72A1IGPK0//z9v/+H9Rw8zXQAFt8huAKg/+z9/3637n173+30sv/gQbY4zIE
         qwGRXY/+T9n263/J0r//E6b//W+TexanIVgNCGx++L917XuwZuOSL/+lo6/9N45c9t+h6Gw8ukuwGuBR
@@ -134,31 +134,3 @@
     <value>17, 17</value>
   </metadata>
-  <data name="updateButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDQAA
-        Cw0B7QfALAAAAmJJREFUOE+dk21IU1Ecxt3MCBX8MLRsvhHmtI0SM6OImSFR+kECKSiDvgRFX6IiKnKa
-        C9dsVmtbU2sWhCFBSvamFDFwrRcZbH7YmEZ2t9Y2Z24zU3ev29M9w0XS9UsXHg6Hc5/fec75/09S0tJH
-        BweS6dAQnw4bM5kZcyrz82Mmqwxm5n02EzKuoqdf8civ8967koTnn5GZHckzjX1Au1GD+sdHUdVVC+mt
-        fbjcL4eNcoTosPmIyqgHJyDi6xH0j75E3fMGyCYUULg0uOJQocnRhhOfzqHyTg2sE3aU3NzGDXB4xoPE
-        fHXiBmr7DiGraQPWyTfimPFUHNTsuB6HFCjF3IALT5vRYDqJ7eo9aB/UYtTlxJiXQk6LKJ4qoWx5ITfg
-        gOEwpJ370Wd5AWYxJqYXY2n+wDRsbucyiKAxnxtQ0VmF809kxFzKikczMV6vZQD5CglyFcUgOxNzxkUh
-        N2CLdidGvtjgm/yRQm7Z4w3kuL/7U755J9d4fIHV7JxPuX1rnZ8pbgC7I5a0lx2TI3Rsl9vj581Hovy5
-        hSjvF6vZuWiabFjJDSgzVGKzfgeKb5cHC9okYWGrCB3mh1igowKSiIVUdwzfR4l2hTJuNUihdOniJStU
-        lcJC2clxwCbIJSms1BhqHtVjfWMRd4JNuoo/AAIRqcth+WpnO3AcXaaeeFeSUh5/cJobwMZG0bWyZTUn
-        poSRmIUyEe697eUG5LWK8cz6GkK2cf42JRqImBVDGgRCzG7Ot6B/0w32ovDOYcGl3hbU6g4i/WwW0s9k
-        oVpdB+1gN6bCTKpniuav+Br/Z+E3/RykhyEkCzoAAAAASUVORK5CYII=
-</value>
-  </data>
-  <data name="parentButton.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-    <value>
-        iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
-        YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAAlwSFlzAAALDwAA
-        Cw8BkvkDpQAAANpJREFUOE9j+P//PwMlGK9m99JLxoQMx2mAqu9cqbI5L/4DDYnAZwhWA2Ca5+37+98w
-        bNF/45gNvrgMwTAAWXP+3B//nfKO/NcKWIDTEBQDkDW3rvv3P7Ln03+Psov/7bP2/9fwm4vVEBQDQH4u
-        nvn0P4iuXfH/f9zkP//96+/91wxZ/R9o+H8Vz2lAn6DGGtYwABkAcgHMAHX/RRgaYQbhNGDy9r//c+f9
-        BbtA1XsW6QaAYqBi6UAasOzwb8pcADIAFIUgrOw+ifQwAGlCxkSnREKZh6h0QIohAFsI3u6Zj7KhAAAA
-        AElFTkSuQmCC
-</value>
-  </data>
 </root>
Index: branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj
===================================================================
--- branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj	(revision 4871)
+++ branches/HeuristicLab.DebugEngine/HeuristicLab.DebugEngine.csproj	(revision 4876)
@@ -133,5 +133,17 @@
     </Compile>
     <Compile Include="OperationChangedEventArgs.cs" />
+    <Compile Include="OperationContent.cs" />
+    <Compile Include="OperationContentView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="OperationContentView.Designer.cs">
+      <DependentUpon>OperationContentView.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="Utils.cs" />
   </ItemGroup>
@@ -142,4 +154,11 @@
     <EmbeddedResource Include="ExecutionStackView.resx">
       <DependentUpon>ExecutionStackView.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="OperationContentView.resx">
+      <DependentUpon>OperationContentView.cs</DependentUpon>
+    </EmbeddedResource>
+    <EmbeddedResource Include="Properties\Resources.resx">
+      <Generator>ResXFileCodeGenerator</Generator>
+      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
     </EmbeddedResource>
   </ItemGroup>
Index: branches/HeuristicLab.DebugEngine/OperationContent.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/OperationContent.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/OperationContent.cs	(revision 4876)
@@ -0,0 +1,37 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using HeuristicLab.Common;
+using HeuristicLab.Core;
+
+namespace HeuristicLab.DebugEngine {
+  public class OperationContent : IContent {
+
+    public IOperation Operation { get; private set; }
+    public OperationCollection Collection { get; private set; }
+    public IAtomicOperation AtomicOperation { get; private set; }
+    public ExecutionContext ExecutionContext { get; private set; }
+    public string Name { get; private set; }
+
+    public OperationContent(IOperation operation) {
+      Operation = operation;
+      Collection = operation as OperationCollection;
+      AtomicOperation = operation as IAtomicOperation;
+      ExecutionContext = operation as ExecutionContext;
+      if (AtomicOperation != null) {
+        Name = string.IsNullOrEmpty(AtomicOperation.Operator.Name) ?
+          AtomicOperation.Operator.ItemName :
+          AtomicOperation.Operator.Name;
+      } else if (Collection != null) {
+        Name = string.Format("{0} Operations", Collection.Count);
+      } else {
+        Name = "";
+      }
+    }
+
+    public bool IsCollection { get { return Collection != null; } }
+    public bool IsAtomic { get { return AtomicOperation != null; } }
+    public bool IsContext { get { return ExecutionContext != null; } }
+  }
+}
Index: branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/OperationContentView.Designer.cs	(revision 4876)
@@ -0,0 +1,255 @@
+﻿namespace HeuristicLab.DebugEngine {
+  partial class OperationContentView {
+    /// <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.components = new System.ComponentModel.Container();
+      this.groupBox = new System.Windows.Forms.GroupBox();
+      this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+      this.parameterListView = new System.Windows.Forms.ListView();
+      this.scopeTreeView = new System.Windows.Forms.TreeView();
+      this.nameTextBox = new System.Windows.Forms.TextBox();
+      this.contextLabel = new System.Windows.Forms.Label();
+      this.atomicLabel = new System.Windows.Forms.Label();
+      this.collectionLabel = new System.Windows.Forms.Label();
+      this.splitContainer2 = new System.Windows.Forms.SplitContainer();
+      this.parametersGroupBox = new System.Windows.Forms.GroupBox();
+      this.executionContextGroupBox = new System.Windows.Forms.GroupBox();
+      this.scopeGroupBox = new System.Windows.Forms.GroupBox();
+      this.executionContextTreeView = new System.Windows.Forms.TreeView();
+      this.timer = new System.Windows.Forms.Timer(this.components);
+      this.groupBox.SuspendLayout();
+      this.splitContainer1.Panel1.SuspendLayout();
+      this.splitContainer1.Panel2.SuspendLayout();
+      this.splitContainer1.SuspendLayout();
+      this.splitContainer2.Panel1.SuspendLayout();
+      this.splitContainer2.Panel2.SuspendLayout();
+      this.splitContainer2.SuspendLayout();
+      this.parametersGroupBox.SuspendLayout();
+      this.executionContextGroupBox.SuspendLayout();
+      this.scopeGroupBox.SuspendLayout();
+      this.SuspendLayout();
+      // 
+      // groupBox
+      // 
+      this.groupBox.Controls.Add(this.splitContainer1);
+      this.groupBox.Controls.Add(this.nameTextBox);
+      this.groupBox.Controls.Add(this.contextLabel);
+      this.groupBox.Controls.Add(this.atomicLabel);
+      this.groupBox.Controls.Add(this.collectionLabel);
+      this.groupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.groupBox.Location = new System.Drawing.Point(0, 0);
+      this.groupBox.Name = "groupBox";
+      this.groupBox.Size = new System.Drawing.Size(563, 412);
+      this.groupBox.TabIndex = 0;
+      this.groupBox.TabStop = false;
+      this.groupBox.Text = "Operation";
+      // 
+      // 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(6, 45);
+      this.splitContainer1.Name = "splitContainer1";
+      // 
+      // splitContainer1.Panel1
+      // 
+      this.splitContainer1.Panel1.Controls.Add(this.splitContainer2);
+      // 
+      // splitContainer1.Panel2
+      // 
+      this.splitContainer1.Panel2.Controls.Add(this.scopeGroupBox);
+      this.splitContainer1.Size = new System.Drawing.Size(551, 361);
+      this.splitContainer1.SplitterDistance = 242;
+      this.splitContainer1.TabIndex = 4;
+      // 
+      // parameterListView
+      // 
+      this.parameterListView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.parameterListView.FullRowSelect = true;
+      this.parameterListView.Location = new System.Drawing.Point(3, 16);
+      this.parameterListView.Name = "parameterListView";
+      this.parameterListView.Size = new System.Drawing.Size(236, 158);
+      this.parameterListView.TabIndex = 0;
+      this.parameterListView.UseCompatibleStateImageBehavior = false;
+      this.parameterListView.View = System.Windows.Forms.View.List;
+      this.parameterListView.ItemActivate += new System.EventHandler(this.parameterListView_ItemActivate);
+      // 
+      // scopeTreeView
+      // 
+      this.scopeTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scopeTreeView.Location = new System.Drawing.Point(3, 16);
+      this.scopeTreeView.Name = "scopeTreeView";
+      this.scopeTreeView.Size = new System.Drawing.Size(299, 342);
+      this.scopeTreeView.TabIndex = 0;
+      // 
+      // nameTextBox
+      // 
+      this.nameTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.nameTextBox.Location = new System.Drawing.Point(6, 19);
+      this.nameTextBox.Name = "nameTextBox";
+      this.nameTextBox.ReadOnly = true;
+      this.nameTextBox.Size = new System.Drawing.Size(395, 20);
+      this.nameTextBox.TabIndex = 3;
+      // 
+      // contextLabel
+      // 
+      this.contextLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.contextLabel.AutoSize = true;
+      this.contextLabel.ForeColor = System.Drawing.SystemColors.ControlDark;
+      this.contextLabel.Location = new System.Drawing.Point(407, 22);
+      this.contextLabel.Name = "contextLabel";
+      this.contextLabel.Size = new System.Drawing.Size(43, 13);
+      this.contextLabel.TabIndex = 2;
+      this.contextLabel.Text = "Context";
+      // 
+      // atomicLabel
+      // 
+      this.atomicLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.atomicLabel.AutoSize = true;
+      this.atomicLabel.ForeColor = System.Drawing.SystemColors.ControlDark;
+      this.atomicLabel.Location = new System.Drawing.Point(456, 22);
+      this.atomicLabel.Name = "atomicLabel";
+      this.atomicLabel.Size = new System.Drawing.Size(39, 13);
+      this.atomicLabel.TabIndex = 1;
+      this.atomicLabel.Text = "Atomic";
+      // 
+      // collectionLabel
+      // 
+      this.collectionLabel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+      this.collectionLabel.AutoSize = true;
+      this.collectionLabel.ForeColor = System.Drawing.SystemColors.ControlDark;
+      this.collectionLabel.Location = new System.Drawing.Point(501, 22);
+      this.collectionLabel.Name = "collectionLabel";
+      this.collectionLabel.Size = new System.Drawing.Size(53, 13);
+      this.collectionLabel.TabIndex = 0;
+      this.collectionLabel.Text = "Collection";
+      // 
+      // splitContainer2
+      // 
+      this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.splitContainer2.Location = new System.Drawing.Point(0, 0);
+      this.splitContainer2.Name = "splitContainer2";
+      this.splitContainer2.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // splitContainer2.Panel1
+      // 
+      this.splitContainer2.Panel1.Controls.Add(this.executionContextGroupBox);
+      // 
+      // splitContainer2.Panel2
+      // 
+      this.splitContainer2.Panel2.Controls.Add(this.parametersGroupBox);
+      this.splitContainer2.Size = new System.Drawing.Size(242, 361);
+      this.splitContainer2.SplitterDistance = 180;
+      this.splitContainer2.TabIndex = 1;
+      // 
+      // parametersGroupBox
+      // 
+      this.parametersGroupBox.Controls.Add(this.parameterListView);
+      this.parametersGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.parametersGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.parametersGroupBox.Name = "parametersGroupBox";
+      this.parametersGroupBox.Size = new System.Drawing.Size(242, 177);
+      this.parametersGroupBox.TabIndex = 0;
+      this.parametersGroupBox.TabStop = false;
+      this.parametersGroupBox.Text = "Parameters";
+      // 
+      // executionContextGroupBox
+      // 
+      this.executionContextGroupBox.Controls.Add(this.executionContextTreeView);
+      this.executionContextGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.executionContextGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.executionContextGroupBox.Name = "executionContextGroupBox";
+      this.executionContextGroupBox.Size = new System.Drawing.Size(242, 180);
+      this.executionContextGroupBox.TabIndex = 0;
+      this.executionContextGroupBox.TabStop = false;
+      this.executionContextGroupBox.Text = "Execution Context";
+      // 
+      // scopeGroupBox
+      // 
+      this.scopeGroupBox.Controls.Add(this.scopeTreeView);
+      this.scopeGroupBox.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scopeGroupBox.Location = new System.Drawing.Point(0, 0);
+      this.scopeGroupBox.Name = "scopeGroupBox";
+      this.scopeGroupBox.Size = new System.Drawing.Size(305, 361);
+      this.scopeGroupBox.TabIndex = 1;
+      this.scopeGroupBox.TabStop = false;
+      this.scopeGroupBox.Text = "Scope";
+      // 
+      // executionContextTreeView
+      // 
+      this.executionContextTreeView.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.executionContextTreeView.Location = new System.Drawing.Point(3, 16);
+      this.executionContextTreeView.Name = "executionContextTreeView";
+      this.executionContextTreeView.Size = new System.Drawing.Size(236, 161);
+      this.executionContextTreeView.TabIndex = 0;
+      this.executionContextTreeView.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.executionContextTreeView_NodeMouseClick);
+      this.executionContextTreeView.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.executionContextTreeView_NodeMouseDoubleClick);
+      // 
+      // timer
+      // 
+      this.timer.Interval = 500;
+      this.timer.Tick += new System.EventHandler(this.timer_Tick);
+      // 
+      // OperationContentView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.groupBox);
+      this.Name = "OperationContentView";
+      this.Size = new System.Drawing.Size(563, 412);
+      this.groupBox.ResumeLayout(false);
+      this.groupBox.PerformLayout();
+      this.splitContainer1.Panel1.ResumeLayout(false);
+      this.splitContainer1.Panel2.ResumeLayout(false);
+      this.splitContainer1.ResumeLayout(false);
+      this.splitContainer2.Panel1.ResumeLayout(false);
+      this.splitContainer2.Panel2.ResumeLayout(false);
+      this.splitContainer2.ResumeLayout(false);
+      this.parametersGroupBox.ResumeLayout(false);
+      this.executionContextGroupBox.ResumeLayout(false);
+      this.scopeGroupBox.ResumeLayout(false);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.GroupBox groupBox;
+    private System.Windows.Forms.TextBox nameTextBox;
+    private System.Windows.Forms.Label contextLabel;
+    private System.Windows.Forms.Label atomicLabel;
+    private System.Windows.Forms.Label collectionLabel;
+    private System.Windows.Forms.SplitContainer splitContainer1;
+    private System.Windows.Forms.ListView parameterListView;
+    private System.Windows.Forms.TreeView scopeTreeView;
+    private System.Windows.Forms.SplitContainer splitContainer2;
+    private System.Windows.Forms.GroupBox executionContextGroupBox;
+    private System.Windows.Forms.TreeView executionContextTreeView;
+    private System.Windows.Forms.GroupBox parametersGroupBox;
+    private System.Windows.Forms.GroupBox scopeGroupBox;
+    private System.Windows.Forms.Timer timer;
+  }
+}
Index: branches/HeuristicLab.DebugEngine/OperationContentView.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/OperationContentView.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/OperationContentView.cs	(revision 4876)
@@ -0,0 +1,209 @@
+﻿using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Drawing;
+using System.Data;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+using HeuristicLab.MainForm.WindowsForms;
+using HeuristicLab.MainForm;
+using HeuristicLab.Core;
+using HeuristicLab.Common;
+
+namespace HeuristicLab.DebugEngine {
+
+  [View("Operation Content View")]
+  [Content(typeof(OperationContent), IsDefaultView = true)]
+  public sealed partial class OperationContentView : AsynchronousContentView {
+    public new OperationContent Content {
+      get { return (OperationContent)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public OperationContentView() {
+      InitializeComponent();
+    }
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+      if (Content == null) {
+        nameTextBox.Text = "";
+        contextLabel.ForeColor = SystemColors.ControlDark;
+        atomicLabel.ForeColor = SystemColors.ControlDark;
+        collectionLabel.ForeColor = SystemColors.ControlDark;
+        parameterListView.Items.Clear();
+        scopeTreeView.Nodes.Clear();
+        executionContextTreeView.Nodes.Clear();
+      } else {
+        contextLabel.ForeColor = Content.IsContext ? Color.Black : SystemColors.ControlDark;
+        atomicLabel.ForeColor = Content.IsAtomic ? Color.Black : SystemColors.ControlDark;
+        collectionLabel.ForeColor = Content.IsCollection ? Color.Black : SystemColors.ControlDark;
+        nameTextBox.Text = Content.Name;
+        UpdateParameters();
+        UpdateScopeTree();
+        UpdateExecutionContext();
+      }
+    }
+
+    private void UpdateParameters() {
+      parameterListView.BeginUpdate();
+      parameterListView.Items.Clear();
+      if (Content.IsAtomic) {
+        foreach (var param in Content.AtomicOperation.Operator.Parameters) {
+          ListViewItem item = parameterListView.Items.Add(
+            string.Format("{0} = {1}", param.Name, GetParameterValue(param, Content.ExecutionContext)));
+          item.Tag = param;
+        }
+      }
+      parameterListView.EndUpdate();
+    }
+
+    private object GetParameterValue(IParameter param, IExecutionContext context) {
+      var originalContext = param.ExecutionContext;
+      param.ExecutionContext = context;
+      object value = null;
+      try {
+        try {
+          value = param.ActualValue;
+        } catch (Exception x) {
+          value = x;
+        }
+      } finally {
+        param.ExecutionContext = originalContext;
+      }
+      return value;
+    }
+
+    private void UpdateScopeTree() {
+      scopeTreeView.BeginUpdate();
+      scopeTreeView.Nodes.Clear();
+      if (Content.IsContext) {
+        var scope = Content.ExecutionContext.Scope;
+        while (scope != null && scope.Parent != null)
+          scope = scope.Parent;
+        UpdateScope(scope);
+      }
+      scopeTreeView.EndUpdate();
+    }
+
+    private void UpdateScope(IScope scope) {
+      if (scope != null) {
+        AddScope(scopeTreeView.Nodes, scope);
+      }
+      scopeTreeView.ExpandAll();
+      if (scopeTreeView.Nodes.Count > 0)
+        scopeTreeView.TopNode = scopeTreeView.Nodes[0];
+      scopeTreeView.EndUpdate();
+    }
+
+    private void AddScope(TreeNodeCollection nodes, IScope scope) {
+      TreeNode node = nodes.Add(scope.Name);
+      node.Tag = scope;
+      if (Content.IsAtomic && Content.AtomicOperation.Scope == scope) {
+        node.ForeColor = Color.Red;
+        node.BackColor = Color.LightGray;
+      }
+      foreach (var var in scope.Variables) {
+        TreeNode varNode = node.Nodes.Add(string.Format("{0}={1}", var.Name, var.Value));
+        varNode.Tag = var.Value;
+        varNode.ToolTipText = Utils.TypeName(var.Value);
+      }
+      foreach (var subScope in scope.SubScopes) {
+        AddScope(node.Nodes, subScope);
+      }
+    }
+
+    private void UpdateExecutionContext() {
+      executionContextTreeView.BeginUpdate();
+      executionContextTreeView.Nodes.Clear();
+      if (Content.IsContext) {
+        AddExecutionContext(Content.ExecutionContext, executionContextTreeView.Nodes);
+      }
+      executionContextTreeView.EndUpdate();
+    }
+
+    private void AddExecutionContext(IExecutionContext executionContext, TreeNodeCollection nodes) {
+      ExecutionContext context = executionContext as ExecutionContext;
+      StringBuilder name = new StringBuilder();
+      if (context != null && context.Operator != null)
+        name.Append("Op ").Append(context.Operator.Name);
+      else
+        name.Append("<Context>");
+      name.Append("@").Append(executionContext.Scope.Name);
+      TreeNode node = nodes.Add(name.ToString());
+      node.Tag = executionContext;
+      foreach (var param in executionContext.Parameters) {
+        TreeNode paramNode = node.Nodes.Add(string.Format("Param {0}={1}", param.Name, GetParameterValue(param, executionContext)));
+        paramNode.Tag = param;
+      }
+      if (executionContext.Parent != null)
+        AddExecutionContext(executionContext.Parent, node.Nodes);
+    }
+
+    #region Event Handlers (child controls)
+
+    private void parameterListView_ItemActivate(object sender, EventArgs e) {
+      if (parameterListView.SelectedItems.Count > 0) {
+        IParameter param = parameterListView.SelectedItems[0].Tag as IParameter;
+        if (param != null) {
+          MainFormManager.MainForm.ShowContent((IContent)GetParameterValue(param, Content.ExecutionContext));
+        }
+      }
+    }
+
+    private void executionContextTreeView_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) {
+      if (e.Node != null) {
+        IParameter param = e.Node.Tag as IParameter;
+        if (param != null)
+          MainFormManager.MainForm.ShowContent(param);
+      }
+    }
+
+    private void executionContextTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) {
+      if (e.Node != null) {
+        IExecutionContext context = e.Node.Tag as IExecutionContext;
+        if (context != null && context.Scope != null) {
+          TreeNode scopeNode = FindScopeNode(context.Scope, scopeTreeView.Nodes);
+          if (scopeNode != null) {
+            if (timer.Enabled) {
+              timer_Tick(this, EventArgs.Empty);
+            }
+            timer.Tag = new KeyValuePair<TreeNode, Color>(scopeNode, scopeNode.BackColor);
+            scopeNode.BackColor = Color.Blue;
+            scopeTreeView.TopNode = scopeNode;
+            timer.Start();
+          }
+        }
+      }
+    }
+
+    private void ResetNode(TreeNode node, Color color) {
+      if (InvokeRequired)
+        Invoke(new Action<TreeNode, Color>(ResetNode), node, color);
+      else
+        node.BackColor = color;
+    }
+
+    private TreeNode FindScopeNode(IScope scope, TreeNodeCollection nodes) {
+      foreach (TreeNode node in nodes) {
+        if (node.Tag == scope) {
+          return node;
+        } else {
+          TreeNode childNode = FindScopeNode(scope, node.Nodes);
+          if (childNode != null)
+            return childNode;
+        }
+      }
+      return null;
+    }
+
+    private void timer_Tick(object sender, EventArgs e) {
+      KeyValuePair<TreeNode, Color> kvp = (KeyValuePair<TreeNode, Color>)timer.Tag;
+      ResetNode(kvp.Key, kvp.Value);
+      timer.Stop();
+    }
+
+    #endregion
+  }
+}
Index: branches/HeuristicLab.DebugEngine/OperationContentView.resx
===================================================================
--- branches/HeuristicLab.DebugEngine/OperationContentView.resx	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/OperationContentView.resx	(revision 4876)
@@ -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="timer.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
+</root>
Index: branches/HeuristicLab.DebugEngine/Properties/Resources.Designer.cs
===================================================================
--- branches/HeuristicLab.DebugEngine/Properties/Resources.Designer.cs	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/Properties/Resources.Designer.cs	(revision 4876)
@@ -0,0 +1,63 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.DebugEngine.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", "4.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.DebugEngine.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: branches/HeuristicLab.DebugEngine/Properties/Resources.resx
===================================================================
--- branches/HeuristicLab.DebugEngine/Properties/Resources.resx	(revision 4876)
+++ branches/HeuristicLab.DebugEngine/Properties/Resources.resx	(revision 4876)
@@ -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=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
