Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.Designer.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.Designer.cs	(revision 3454)
@@ -52,5 +52,4 @@
       this.problemPanel = new System.Windows.Forms.Panel();
       this.problemViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.saveProblemButton = new System.Windows.Forms.Button();
       this.openProblemButton = new System.Windows.Forms.Button();
       this.newProblemButton = new System.Windows.Forms.Button();
@@ -65,5 +64,4 @@
       this.executionTimeTextBox = new System.Windows.Forms.TextBox();
       this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
       this.stopButton = new System.Windows.Forms.Button();
       ((System.ComponentModel.ISupportInitialize)(this.errorProvider)).BeginInit();
@@ -127,5 +125,4 @@
       // 
       this.problemTabPage.Controls.Add(this.problemPanel);
-      this.problemTabPage.Controls.Add(this.saveProblemButton);
       this.problemTabPage.Controls.Add(this.openProblemButton);
       this.problemTabPage.Controls.Add(this.newProblemButton);
@@ -163,15 +160,4 @@
       this.problemViewHost.ViewType = null;
       // 
-      // saveProblemButton
-      // 
-      this.saveProblemButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Save;
-      this.saveProblemButton.Location = new System.Drawing.Point(66, 6);
-      this.saveProblemButton.Name = "saveProblemButton";
-      this.saveProblemButton.Size = new System.Drawing.Size(24, 24);
-      this.saveProblemButton.TabIndex = 2;
-      this.toolTip.SetToolTip(this.saveProblemButton, "Save Problem");
-      this.saveProblemButton.UseVisualStyleBackColor = true;
-      this.saveProblemButton.Click += new System.EventHandler(this.saveProblemButton_Click);
-      // 
       // openProblemButton
       // 
@@ -303,12 +289,4 @@
       this.openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
       this.openFileDialog.Title = "Open Problem";
-      // 
-      // saveFileDialog
-      // 
-      this.saveFileDialog.DefaultExt = "hl";
-      this.saveFileDialog.FileName = "Problem";
-      this.saveFileDialog.Filter = "Uncompressed HeuristicLab Files|*.hl|HeuristicLab Files|*.hl|All Files|*.*";
-      this.saveFileDialog.FilterIndex = 2;
-      this.saveFileDialog.Title = "Save Problem";
       // 
       // stopButton
@@ -368,5 +346,4 @@
     protected HeuristicLab.MainForm.WindowsForms.ViewHost problemViewHost;
     protected System.Windows.Forms.Button newProblemButton;
-    protected System.Windows.Forms.Button saveProblemButton;
     protected System.Windows.Forms.Button openProblemButton;
     protected System.Windows.Forms.Button startButton;
@@ -376,5 +353,4 @@
     protected System.Windows.Forms.TextBox executionTimeTextBox;
     protected System.Windows.Forms.OpenFileDialog openFileDialog;
-    protected System.Windows.Forms.SaveFileDialog saveFileDialog;
     protected System.Windows.Forms.TabPage resultsTabPage;
     protected HeuristicLab.Optimization.Views.ResultCollectionView resultsView;
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/AlgorithmView.cs	(revision 3454)
@@ -97,19 +97,12 @@
         resultsView.Content = null;
         runsView.Content = null;
-        tabControl.Enabled = false;
-        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
         executionTimeTextBox.Text = "-";
-        executionTimeTextBox.Enabled = false;
       } else {
         parameterCollectionView.Content = Content.Parameters;
-        saveProblemButton.Enabled = Content.Problem != null;
         problemViewHost.ViewType = null;
         problemViewHost.Content = Content.Problem;
         resultsView.Content = Content.Results.AsReadOnly();
         runsView.Content = Content.Runs;
-        tabControl.Enabled = true;
-        EnableDisableButtons();
         executionTimeTextBox.Text = Content.ExecutionTime.ToString();
-        executionTimeTextBox.Enabled = true;
       }
       SetEnableStateOfControls();
@@ -121,8 +114,16 @@
     }
     private void SetEnableStateOfControls() {
+      parameterCollectionView.Enabled = Content != null;
       parameterCollectionView.ReadOnly = ReadOnly;
+      newProblemButton.Enabled = Content != null && !ReadOnly;
+      openProblemButton.Enabled = Content != null && !ReadOnly;
+      problemViewHost.Enabled = Content != null;
       problemViewHost.ReadOnly = ReadOnly;
+      resultsView.Enabled = Content != null;
       resultsView.ReadOnly = ReadOnly;
+      runsView.Enabled = Content != null;
       runsView.ReadOnly = ReadOnly;
+      executionTimeTextBox.Enabled = Content != null;
+      SetEnabledStateOfExecutableButtons();
     }
 
@@ -139,5 +140,4 @@
         problemViewHost.ViewType = null;
         problemViewHost.Content = Content.Problem;
-        saveProblemButton.Enabled = Content.Problem != null;
       }
     }
@@ -152,7 +152,7 @@
         Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
       else {
-        this.ReadOnly = Content.ExecutionState == ExecutionState.Started;
+        ReadOnly = Content.ExecutionState == ExecutionState.Started;
         Locked = Content.ExecutionState == ExecutionState.Started;
-        EnableDisableButtons();
+        SetEnabledStateOfExecutableButtons();
       }
     }
@@ -192,5 +192,5 @@
       if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
         this.Cursor = Cursors.AppStarting;
-        newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = false;
+        newProblemButton.Enabled = openProblemButton.Enabled = false;
         problemViewHost.Enabled = false;
 
@@ -211,30 +211,5 @@
               Content.Problem = problem;
             problemViewHost.Enabled = true;
-            newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = true;
-            this.Cursor = Cursors.Default;
-          }));
-        }, null);
-      }
-    }
-    protected virtual void saveProblemButton_Click(object sender, EventArgs e) {
-      saveFileDialog.Title = "Save Problem";
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        this.Cursor = Cursors.AppStarting;
-        newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = false;
-        problemViewHost.Enabled = false;
-
-        var call = new Action<IProblem, string, int>(XmlGenerator.Serialize);
-        int compression = 9;
-        if (saveFileDialog.FilterIndex == 1) compression = 0;
-        call.BeginInvoke(Content.Problem, saveFileDialog.FileName, compression, delegate(IAsyncResult a) {
-          try {
-            call.EndInvoke(a);
-          }
-          catch (Exception ex) {
-            Auxiliary.ShowErrorMessageBox(ex);
-          }
-          Invoke(new Action(delegate() {
-            problemViewHost.Enabled = true;
-            newProblemButton.Enabled = openProblemButton.Enabled = saveProblemButton.Enabled = true;
+            newProblemButton.Enabled = openProblemButton.Enabled = true;
             this.Cursor = Cursors.Default;
           }));
@@ -282,9 +257,13 @@
 
     #region Helpers
-    private void EnableDisableButtons() {
-      startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
-      pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
-      stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
-      resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
+    private void SetEnabledStateOfExecutableButtons() {
+      if (Content == null) {
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+      } else {
+        startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
+        pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
+        stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
+        resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
+      }
     }
     #endregion
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.Designer.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.Designer.cs	(revision 3454)
@@ -50,5 +50,4 @@
       this.algorithmPanel = new System.Windows.Forms.Panel();
       this.algorithmViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
-      this.saveAlgorithmButton = new System.Windows.Forms.Button();
       this.openAlgorithmButton = new System.Windows.Forms.Button();
       this.newAlgorithmButton = new System.Windows.Forms.Button();
@@ -61,5 +60,4 @@
       this.executionTimeTextBox = new System.Windows.Forms.TextBox();
       this.openFileDialog = new System.Windows.Forms.OpenFileDialog();
-      this.saveFileDialog = new System.Windows.Forms.SaveFileDialog();
       this.repetitionsLabel = new System.Windows.Forms.Label();
       this.repetitionsNumericUpDown = new System.Windows.Forms.NumericUpDown();
@@ -99,5 +97,4 @@
       // 
       this.algorithmTabPage.Controls.Add(this.algorithmPanel);
-      this.algorithmTabPage.Controls.Add(this.saveAlgorithmButton);
       this.algorithmTabPage.Controls.Add(this.openAlgorithmButton);
       this.algorithmTabPage.Controls.Add(this.newAlgorithmButton);
@@ -135,15 +132,4 @@
       this.algorithmViewHost.ViewType = null;
       // 
-      // saveAlgorithmButton
-      // 
-      this.saveAlgorithmButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Save;
-      this.saveAlgorithmButton.Location = new System.Drawing.Point(66, 6);
-      this.saveAlgorithmButton.Name = "saveAlgorithmButton";
-      this.saveAlgorithmButton.Size = new System.Drawing.Size(24, 24);
-      this.saveAlgorithmButton.TabIndex = 2;
-      this.toolTip.SetToolTip(this.saveAlgorithmButton, "Save Problem");
-      this.saveAlgorithmButton.UseVisualStyleBackColor = true;
-      this.saveAlgorithmButton.Click += new System.EventHandler(this.saveAlgorithmButton_Click);
-      // 
       // openAlgorithmButton
       // 
@@ -252,12 +238,4 @@
       this.openFileDialog.Filter = "HeuristicLab Files|*.hl|All Files|*.*";
       this.openFileDialog.Title = "Open Algorithm";
-      // 
-      // saveFileDialog
-      // 
-      this.saveFileDialog.DefaultExt = "hl";
-      this.saveFileDialog.FileName = "Algorithm";
-      this.saveFileDialog.Filter = "Uncompressed HeuristicLab Files|*.hl|HeuristicLab Files|*.hl|All Files|*.*";
-      this.saveFileDialog.FilterIndex = 2;
-      this.saveFileDialog.Title = "Save Algorithm";
       // 
       // repetitionsLabel
@@ -353,5 +331,4 @@
     private HeuristicLab.MainForm.WindowsForms.ViewHost algorithmViewHost;
     private System.Windows.Forms.Button newAlgorithmButton;
-    private System.Windows.Forms.Button saveAlgorithmButton;
     private System.Windows.Forms.Button openAlgorithmButton;
     private System.Windows.Forms.Button startButton;
@@ -361,5 +338,4 @@
     private System.Windows.Forms.TextBox executionTimeTextBox;
     private System.Windows.Forms.OpenFileDialog openFileDialog;
-    private System.Windows.Forms.SaveFileDialog saveFileDialog;
     private System.Windows.Forms.TabPage runsTabPage;
     private System.Windows.Forms.Label repetitionsLabel;
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/BatchRunView.cs	(revision 3454)
@@ -78,22 +78,13 @@
       if (Content == null) {
         repetitionsNumericUpDown.Value = 1;
-        repetitionsNumericUpDown.Enabled = false;
         algorithmViewHost.Content = null;
         runsView.Content = null;
-        tabControl.Enabled = false;
-        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
         executionTimeTextBox.Text = "-";
-        executionTimeTextBox.Enabled = false;
       } else {
         repetitionsNumericUpDown.Value = Content.Repetitions;
-        repetitionsNumericUpDown.Enabled = true;
-        saveAlgorithmButton.Enabled = Content.Algorithm != null;
         algorithmViewHost.ViewType = null;
         algorithmViewHost.Content = Content.Algorithm;
         runsView.Content = Content.Runs;
-        tabControl.Enabled = true;
-        EnableDisableButtons();
         executionTimeTextBox.Text = Content.ExecutionTime.ToString();
-        executionTimeTextBox.Enabled = true;
       }
       SetEnableStateOfControls();
@@ -104,7 +95,13 @@
     }
     private void SetEnableStateOfControls() {
-      repetitionsNumericUpDown.ReadOnly = ReadOnly;
+      repetitionsNumericUpDown.Enabled = Content != null && !ReadOnly;
+      newAlgorithmButton.Enabled = Content != null && !ReadOnly;
+      openAlgorithmButton.Enabled = Content != null && !ReadOnly;
+      algorithmViewHost.Enabled = Content != null;
       algorithmViewHost.ReadOnly = ReadOnly;
+      runsView.Enabled = Content != null;
       runsView.ReadOnly = ReadOnly;
+      executionTimeTextBox.Enabled = Content != null;
+      SetEnabledStateOfExecutableButtons();
     }
 
@@ -121,6 +118,5 @@
         this.ReadOnly = Content.ExecutionState == ExecutionState.Started;
         Locked = Content.ExecutionState == ExecutionState.Started;
-        newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = saveAlgorithmButton.Enabled = Content.ExecutionState != ExecutionState.Started;
-        EnableDisableButtons();
+        SetEnabledStateOfExecutableButtons();
       }
     }
@@ -143,5 +139,4 @@
         algorithmViewHost.ViewType = null;
         algorithmViewHost.Content = Content.Algorithm;
-        saveAlgorithmButton.Enabled = Content.Algorithm != null;
       }
     }
@@ -182,5 +177,5 @@
       if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
         this.Cursor = Cursors.AppStarting;
-        newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = saveAlgorithmButton.Enabled = false;
+        newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = false;
         algorithmViewHost.Enabled = false;
 
@@ -199,30 +194,5 @@
               Content.Algorithm = algorithm;
             algorithmViewHost.Enabled = true;
-            newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = saveAlgorithmButton.Enabled = true;
-            this.Cursor = Cursors.Default;
-          }));
-        }, null);
-      }
-    }
-    private void saveAlgorithmButton_Click(object sender, EventArgs e) {
-      saveFileDialog.Title = "Save Algorithm";
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        this.Cursor = Cursors.AppStarting;
-        newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = saveAlgorithmButton.Enabled = false;
-        algorithmViewHost.Enabled = false;
-
-        var call = new Action<IAlgorithm, string, int>(XmlGenerator.Serialize);
-        int compression = 9;
-        if (saveFileDialog.FilterIndex == 1) compression = 0;
-        call.BeginInvoke(Content.Algorithm, saveFileDialog.FileName, compression, delegate(IAsyncResult a) {
-          try {
-            call.EndInvoke(a);
-          }
-          catch (Exception ex) {
-            Auxiliary.ShowErrorMessageBox(ex);
-          }
-          Invoke(new Action(delegate() {
-            algorithmViewHost.Enabled = true;
-            newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = saveAlgorithmButton.Enabled = true;
+            newAlgorithmButton.Enabled = openAlgorithmButton.Enabled = true;
             this.Cursor = Cursors.Default;
           }));
@@ -272,9 +242,13 @@
 
     #region Helpers
-    private void EnableDisableButtons() {
-      startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
-      pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
-      stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
-      resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
+    private void SetEnabledStateOfExecutableButtons() {
+      if (Content == null) {
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+      } else {
+        startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
+        pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
+        stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
+        resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
+      }
     }
     #endregion
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.Designer.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.Designer.cs	(revision 3454)
@@ -52,5 +52,4 @@
       this.engineViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       this.operatorGraphTabPage = new System.Windows.Forms.TabPage();
-      this.saveOperatorGraphButton = new System.Windows.Forms.Button();
       this.openOperatorGraphButton = new System.Windows.Forms.Button();
       this.newOperatorGraphButton = new System.Windows.Forms.Button();
@@ -99,8 +98,4 @@
       this.toolTip.SetToolTip(this.newProblemButton, "New Problem");
       // 
-      // saveProblemButton
-      // 
-      this.toolTip.SetToolTip(this.saveProblemButton, "Save Problem");
-      // 
       // openProblemButton
       // 
@@ -228,5 +223,4 @@
       // operatorGraphTabPage
       // 
-      this.operatorGraphTabPage.Controls.Add(this.saveOperatorGraphButton);
       this.operatorGraphTabPage.Controls.Add(this.openOperatorGraphButton);
       this.operatorGraphTabPage.Controls.Add(this.newOperatorGraphButton);
@@ -238,15 +232,4 @@
       this.operatorGraphTabPage.Text = "Operator Graph";
       this.operatorGraphTabPage.UseVisualStyleBackColor = true;
-      // 
-      // saveOperatorGraphButton
-      // 
-      this.saveOperatorGraphButton.Enabled = false;
-      this.saveOperatorGraphButton.Image = HeuristicLab.Common.Resources.VS2008ImageLibrary.Save;
-      this.saveOperatorGraphButton.Location = new System.Drawing.Point(63, 3);
-      this.saveOperatorGraphButton.Name = "saveOperatorGraphButton";
-      this.saveOperatorGraphButton.Size = new System.Drawing.Size(24, 24);
-      this.saveOperatorGraphButton.TabIndex = 1;
-      this.toolTip.SetToolTip(this.saveOperatorGraphButton, "Save Operator Graph");
-      this.saveOperatorGraphButton.UseVisualStyleBackColor = true;
       // 
       // openOperatorGraphButton
@@ -328,5 +311,4 @@
     protected System.Windows.Forms.TabPage operatorGraphTabPage;
     protected HeuristicLab.MainForm.WindowsForms.ViewHost operatorGraphViewHost;
-    protected System.Windows.Forms.Button saveOperatorGraphButton;
     protected System.Windows.Forms.Button openOperatorGraphButton;
     protected System.Windows.Forms.Button newOperatorGraphButton;
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/EngineAlgorithmView.cs	(revision 3454)
@@ -88,5 +88,4 @@
       if (Content == null) {
         engineViewHost.Content = null;
-        createUserDefinedAlgorithmButton.Enabled = false;
         operatorGraphViewHost.Content = null;
       } else {
@@ -99,5 +98,4 @@
         operatorGraphViewHost.ViewType = null;
         operatorGraphViewHost.Content = Content.OperatorGraph;
-        createUserDefinedAlgorithmButton.Enabled = true;
       }
       SetEnableStateOfControls();
@@ -108,20 +106,18 @@
       SetEnableStateOfControls();
     }
+    protected override void OnLockedChanged() {
+      base.OnLockedChanged();
+      SetEnableStateOfControls();
+    }
     private void SetEnableStateOfControls() {
+      engineViewHost.Enabled = Content != null;
       engineViewHost.ReadOnly = ReadOnly;
-      if (Content == null)
-        engineComboBox.Enabled = false;
-      else
-        engineComboBox.Enabled = Content.ExecutionState != ExecutionState.Started;
+      newOperatorGraphButton.Enabled = false;
+      openOperatorGraphButton.Enabled = false;
+      operatorGraphViewHost.Enabled = Content != null;
+      engineComboBox.Enabled = Content != null && !ReadOnly;
+      createUserDefinedAlgorithmButton.Enabled = Content != null && !Locked;
     }
 
-    protected override void Content_ExecutionStateChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_ExecutionStateChanged), sender, e);
-      else {
-        createUserDefinedAlgorithmButton.Enabled = Content.ExecutionState != ExecutionState.Started;
-        base.Content_ExecutionStateChanged(sender, e);
-      }
-    }
     protected virtual void Content_EngineChanged(object sender, System.EventArgs e) {
       if (InvokeRequired)
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/ExperimentView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/ExperimentView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/ExperimentView.cs	(revision 3454)
@@ -72,15 +72,9 @@
         optimizerListView.Content = null;
         runsViewHost.Content = null;
-        tabControl.Enabled = false;
-        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
         executionTimeTextBox.Text = "-";
-        executionTimeTextBox.Enabled = false;
       } else {
         optimizerListView.Content = Content.Optimizers;
         runsViewHost.Content = Content.Runs;
-        tabControl.Enabled = true;
-        EnableDisableButtons();
         executionTimeTextBox.Text = Content.ExecutionTime.ToString();
-        executionTimeTextBox.Enabled = true;
       }
       SetEnableStateOfControls();
@@ -92,5 +86,10 @@
     }
     private void SetEnableStateOfControls() {
+      optimizerListView.Enabled = Content != null;
       optimizerListView.ReadOnly = ReadOnly;
+      runsViewHost.Enabled = Content != null;
+      runsViewHost.ReadOnly = ReadOnly;
+      executionTimeTextBox.Enabled = Content != null;
+      SetEnabledStateOfExecutableButtons();
     }
 
@@ -108,5 +107,5 @@
         descriptionTextBox.Enabled = Content.ExecutionState != ExecutionState.Started;
         Locked = Content.ExecutionState == ExecutionState.Started;
-        EnableDisableButtons();
+        SetEnabledStateOfExecutableButtons();
       }
     }
@@ -148,9 +147,13 @@
 
     #region Helpers
-    private void EnableDisableButtons() {
-      startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
-      pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
-      stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
-      resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
+    private void SetEnabledStateOfExecutableButtons() {
+      if (Content == null) {
+        startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = resetButton.Enabled = false;
+      } else {
+        startButton.Enabled = (Content.ExecutionState == ExecutionState.Prepared) || (Content.ExecutionState == ExecutionState.Paused);
+        pauseButton.Enabled = Content.ExecutionState == ExecutionState.Started;
+        stopButton.Enabled = (Content.ExecutionState == ExecutionState.Started) || (Content.ExecutionState == ExecutionState.Paused);
+        resetButton.Enabled = Content.ExecutionState != ExecutionState.Started;
+      }
     }
     #endregion
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/ResultView.cs	(revision 3454)
@@ -104,14 +104,7 @@
     }
     private void SetEnabledStateOfControls() {
-      if (Content == null) {
-        dataTypeTextBox.Enabled = false;
-        valueGroupBox.Enabled = false;
-        viewHost.Enabled = false;
-      } else {
-        dataTypeTextBox.Enabled = true;
-        valueGroupBox.Enabled = true;
-        viewHost.Enabled = true;
-        viewHost.ReadOnly = ReadOnly;
-      }
+      dataTypeTextBox.Enabled = Content != null;
+      viewHost.Enabled = Content != null;
+      viewHost.ReadOnly = ReadOnly;
     }
 
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/RunCollectionBubbleChartView.cs	(revision 3454)
@@ -69,6 +69,4 @@
       this.chart.ChartAreas[0].CursorX.Interval = 0;
       this.chart.ChartAreas[0].CursorY.Interval = 0;
-
-      base.ReadOnly = true;
     }
 
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/RunView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/RunView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/RunView.cs	(revision 3454)
@@ -82,13 +82,13 @@
       SetEnabledStateOfControls();
     }
+    protected override void OnLockedChanged() {
+      base.OnLockedChanged();
+      SetEnabledStateOfControls();
+    }
     private void SetEnabledStateOfControls() {
-      if (Content == null) {
-        parametersResultsGroupBox.Enabled = false;
-        viewHost.Enabled = false;
-      } else {
-        parametersResultsGroupBox.Enabled = true;
-        viewHost.Enabled = true;
-        viewHost.ReadOnly = ReadOnly;
-      }
+      listView.Enabled = Content != null;
+      viewHost.Enabled = Content != null;
+      viewHost.ReadOnly = ReadOnly;
+      showAlgorithmButton.Enabled = Content != null && !Locked;
     }
 
@@ -147,9 +147,11 @@
     }
     private void showAlgorithmButton_Click(object sender, EventArgs e) {
-      IContentView view = MainFormManager.CreateDefaultView(Content.Algorithm.Clone());
-      if (view != null) {
-        view.ReadOnly = ReadOnly;
-        view.Locked = Locked;
-        view.Show();
+      if (!Locked) {
+        IContentView view = MainFormManager.CreateDefaultView(Content.Algorithm.Clone());
+        if (view != null) {
+          view.ReadOnly = ReadOnly;
+          view.Locked = Locked;
+          view.Show();
+        }
       }
     }
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.Designer.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.Designer.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.Designer.cs	(revision 3454)
@@ -79,8 +79,4 @@
       this.toolTip.SetToolTip(this.newProblemButton, "New Problem");
       // 
-      // saveProblemButton
-      // 
-      this.toolTip.SetToolTip(this.saveProblemButton, "Save Problem");
-      // 
       // openProblemButton
       // 
Index: trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.cs
===================================================================
--- trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.cs	(revision 3449)
+++ trunk/sources/HeuristicLab.Optimization.Views/3.3/UserDefinedAlgorithmView.cs	(revision 3454)
@@ -69,10 +69,9 @@
     }
     private void SetEnableStateOfControls() {
+      globalScopeView.Enabled = Content != null;
       globalScopeView.ReadOnly = ReadOnly;
+      newOperatorGraphButton.Enabled = Content != null && !ReadOnly;
+      openOperatorGraphButton.Enabled = Content != null && !ReadOnly;
       operatorGraphViewHost.ReadOnly = ReadOnly;
-      if (Content == null) 
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = false;
-      else
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = Content.ExecutionState != ExecutionState.Started;
     }
 
@@ -84,5 +83,5 @@
       if (openFileDialog.ShowDialog(this) == DialogResult.OK) {
         this.Cursor = Cursors.AppStarting;
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = false;
+        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = false;
         operatorGraphViewHost.Enabled = false;
 
@@ -102,30 +101,5 @@
               Content.OperatorGraph = operatorGraph;
             operatorGraphViewHost.Enabled = true;
-            newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
-            this.Cursor = Cursors.Default;
-          }));
-        }, null);
-      }
-    }
-    private void saveOperatorGraphButton_Click(object sender, EventArgs e) {
-      saveFileDialog.Title = "Save Operator Graph";
-      if (saveFileDialog.ShowDialog(this) == DialogResult.OK) {
-        this.Cursor = Cursors.AppStarting;
-        newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = false;
-        operatorGraphViewHost.Enabled = false;
-
-        var call = new Action<OperatorGraph, string, int>(XmlGenerator.Serialize);
-        int compression = 9;
-        if (saveFileDialog.FilterIndex == 1) compression = 0;
-        call.BeginInvoke(Content.OperatorGraph, saveFileDialog.FileName, compression, delegate(IAsyncResult a) {
-          try {
-            call.EndInvoke(a);
-          }
-          catch (Exception ex) {
-            Auxiliary.ShowErrorMessageBox(ex);
-          }
-          Invoke(new Action(delegate() {
-            operatorGraphViewHost.Enabled = true;
-            newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = saveOperatorGraphButton.Enabled = true;
+            newOperatorGraphButton.Enabled = openOperatorGraphButton.Enabled = true;
             this.Cursor = Cursors.Default;
           }));
