Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs	(revision 4069)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs	(revision 4070)
@@ -70,4 +70,7 @@
       Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
       Content.Prepared -= new EventHandler(Content_Prepared);
+      Content.Started -= new EventHandler(Content_Started);
+      Content.Paused -= new EventHandler(Content_Paused);
+      Content.Stopped -= new EventHandler(Content_Stopped);
       Content.ProblemChanged -= new EventHandler(Content_ProblemChanged);
       base.DeregisterContentEvents();
@@ -79,4 +82,7 @@
       Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
       Content.Prepared += new EventHandler(Content_Prepared);
+      Content.Started += new EventHandler(Content_Started);
+      Content.Paused += new EventHandler(Content_Paused);
+      Content.Stopped += new EventHandler(Content_Stopped);
       Content.ProblemChanged += new EventHandler(Content_ProblemChanged);
     }
@@ -126,16 +132,40 @@
       }
     }
+    protected virtual void Content_ExecutionStateChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
+      else
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+    }
     protected virtual void Content_Prepared(object sender, EventArgs e) {
       if (InvokeRequired)
         Invoke(new EventHandler(Content_Prepared), sender, e);
-      else
+      else {
         resultsView.Content = Content.Results.AsReadOnly();
-    }
-    protected virtual void Content_ExecutionStateChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
-      else {
-        ReadOnly = Content.ExecutionState == ExecutionState.Started;
-        Locked = Content.ExecutionState == ExecutionState.Started;
+        ReadOnly = Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    protected virtual void Content_Started(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Started), sender, e);
+      else {
+        ReadOnly = Locked = true;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    protected virtual void Content_Paused(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Paused), sender, e);
+      else {
+        ReadOnly = Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    protected virtual void Content_Stopped(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Stopped), sender, e);
+      else {
+        ReadOnly = Locked = false;
         SetEnabledStateOfExecutableButtons();
       }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.cs	(revision 4069)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.cs	(revision 4070)
@@ -54,4 +54,8 @@
       Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
       Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
+      Content.Prepared -= new EventHandler(Content_Prepared);
+      Content.Started -= new EventHandler(Content_Started);
+      Content.Paused -= new EventHandler(Content_Paused);
+      Content.Stopped -= new EventHandler(Content_Stopped);
       Content.RepetitionsChanged -= new EventHandler(Content_RepetitionsChanged);
       base.DeregisterContentEvents();
@@ -63,4 +67,8 @@
       Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
       Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
+      Content.Prepared += new EventHandler(Content_Prepared);
+      Content.Started += new EventHandler(Content_Started);
+      Content.Paused += new EventHandler(Content_Paused);
+      Content.Stopped += new EventHandler(Content_Stopped);
       Content.RepetitionsChanged += new EventHandler(Content_RepetitionsChanged);
     }
@@ -100,7 +108,36 @@
       if (InvokeRequired)
         Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
-      else {
-        this.ReadOnly = Content.ExecutionState == ExecutionState.Started;
-        Locked = Content.ExecutionState == ExecutionState.Started;
+      else
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+    }
+    private void Content_Prepared(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Prepared), sender, e);
+      else {
+        ReadOnly = Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Started(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Started), sender, e);
+      else {
+        ReadOnly = Locked = true;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Paused(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Paused), sender, e);
+      else {
+        ReadOnly = Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Stopped(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Stopped), sender, e);
+      else {
+        ReadOnly = Locked = false;
         SetEnabledStateOfExecutableButtons();
       }
Index: /trunk/sources/HeuristicLab.Optimization.Views/3.3/ExperimentView.cs
===================================================================
--- /trunk/sources/HeuristicLab.Optimization.Views/3.3/ExperimentView.cs	(revision 4069)
+++ /trunk/sources/HeuristicLab.Optimization.Views/3.3/ExperimentView.cs	(revision 4070)
@@ -51,4 +51,8 @@
       Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
       Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
+      Content.Prepared -= new EventHandler(Content_Prepared);
+      Content.Started -= new EventHandler(Content_Started);
+      Content.Paused -= new EventHandler(Content_Paused);
+      Content.Stopped -= new EventHandler(Content_Stopped);
       base.DeregisterContentEvents();
     }
@@ -58,4 +62,8 @@
       Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
       Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
+      Content.Prepared += new EventHandler(Content_Prepared);
+      Content.Started += new EventHandler(Content_Started);
+      Content.Paused += new EventHandler(Content_Paused);
+      Content.Stopped += new EventHandler(Content_Stopped);
     }
 
@@ -90,8 +98,40 @@
       if (InvokeRequired)
         Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
+      else
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+    }
+    private void Content_Prepared(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Prepared), sender, e);
       else {
-        nameTextBox.Enabled = Content.ExecutionState != ExecutionState.Started;
-        descriptionTextBox.Enabled = Content.ExecutionState != ExecutionState.Started;
-        Locked = Content.ExecutionState == ExecutionState.Started;
+        nameTextBox.Enabled = descriptionTextBox.Enabled = true;
+        Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Started(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Started), sender, e);
+      else {
+        nameTextBox.Enabled = descriptionTextBox.Enabled = false;
+        Locked = true;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Paused(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Paused), sender, e);
+      else {
+        nameTextBox.Enabled = descriptionTextBox.Enabled = true;
+        Locked = false;
+        SetEnabledStateOfExecutableButtons();
+      }
+    }
+    private void Content_Stopped(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_Stopped), sender, e);
+      else {
+        nameTextBox.Enabled = descriptionTextBox.Enabled = true;
+        Locked = false;
         SetEnabledStateOfExecutableButtons();
       }
