Index: stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs
===================================================================
--- stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 9722)
+++ stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 9933)
@@ -42,7 +42,5 @@
     private ISet<TreeNode> filteredTreeNodes;
     private ISet<TreeNode> nodeStore;
-    private Progress progress;
-    private ProgressView progressView;
-
+    
     private ISet<Resource> selectedResources;
     public ISet<Resource> SelectedResources {
@@ -64,30 +62,12 @@
       imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.MonitorLarge);
       imageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.NetworkCenterLarge);
-      progress = new Progress() {
-        CanBeCanceled = false,
-        ProgressState = ProgressState.Finished
-      };
-    }
-
-    protected override void DeregisterContentEvents() {
-      if (progressView != null) {
-        progressView.Content = null;
-        progressView.Dispose();
-        progressView = null;
-      }
-      base.DeregisterContentEvents();
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      progressView = new ProgressView(this, progress);
-    }
-
+    }
+  
     public void StartProgressView() {
       if (InvokeRequired) {
         Invoke(new Action(StartProgressView));
       } else {
-        progress.Status = "Downloading resources. Please be patient.";
-        progress.ProgressState = ProgressState.Started;
+        var message = "Downloading resources. Please be patient.";
+        MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, message);
       }
     }
@@ -97,5 +77,5 @@
         Invoke(new Action(FinishProgressView));
       } else {
-        progress.Finish();
+        MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this);
       }
     }
Index: stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs
===================================================================
--- stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs	(revision 9722)
+++ stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs	(revision 9933)
@@ -34,7 +34,4 @@
   [Content(typeof(ItemCollection<RefreshableJob>), false)]
   public partial class RefreshableHiveJobListView : HeuristicLab.Core.Views.ItemCollectionView<RefreshableJob> {
-    private Progress progress;
-    private ProgressView progressView;
-
     public RefreshableHiveJobListView() {
       InitializeComponent();
@@ -49,10 +46,4 @@
 
       this.itemsListView.ListViewItemSorter = new ListViewItemDateComparer(0, SortOrder.Ascending);
-
-      progress = new Progress() {
-        CanBeCanceled = false,
-        ProgressState = ProgressState.Finished
-      };
-      progressView = new ProgressView(this, progress);
     }
 
@@ -118,5 +109,5 @@
 
         task.ContinueWith((t) => {
-          progress.Finish();
+          MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this);
           ErrorHandling.ShowErrorDialog("An error occured while deleting the job. ", t.Exception);
         }, TaskContinuationOptions.OnlyOnFaulted);
@@ -129,11 +120,9 @@
 
     private void DeleteHiveJobsAsync(object items) {
-      progress.Status = "Deleting job...";
-      progress.ProgressState = ProgressState.Started;
-      progress.ProgressValue = 0.0;
+      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, "Deleting job...");
       foreach (RefreshableJob item in (List<RefreshableJob>)items) {
         Content.Remove(item);
       }
-      progress.Finish();
+      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this);
     }
 
@@ -227,6 +216,4 @@
       if (disposing) {
         if (components != null) components.Dispose();
-        progressView.Content = null;
-        progressView.Dispose();
       }
       base.Dispose(disposing);
Index: stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs
===================================================================
--- stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 9722)
+++ stable/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 9933)
@@ -42,6 +42,4 @@
   [Content(typeof(RefreshableJob), true)]
   public partial class RefreshableHiveJobView : HeuristicLab.Core.Views.ItemView {
-    private Progress progress;
-    private ProgressView progressView;
     private HiveResourceSelectorDialog hiveResourceSelectorDialog;
     private bool SuppressEvents { get; set; }
@@ -58,8 +56,4 @@
     public RefreshableHiveJobView() {
       InitializeComponent();
-      progress = new Progress() {
-        CanBeCanceled = false,
-        ProgressState = ProgressState.Finished
-      };
     }
 
@@ -72,5 +66,4 @@
       Content.ExceptionOccured += new EventHandler<EventArgs<Exception>>(Content_ExceptionOccured);
       Content.StateLogListChanged += new EventHandler(Content_StateLogListChanged);
-      Content.IsProgressingChanged += new EventHandler(Content_IsProgressingChanged);
       Content.HiveTasksChanged += new EventHandler(Content_HiveTasksChanged);
       Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
@@ -78,5 +71,5 @@
       Content.Loaded += new EventHandler(Content_Loaded);
       Content.TaskReceived += new EventHandler(Content_TaskReceived);
-      progressView = new ProgressView(this, progress);
+      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, Content.Progress);
     }
 
@@ -88,5 +81,4 @@
       Content.ExceptionOccured -= new EventHandler<EventArgs<Exception>>(Content_ExceptionOccured);
       Content.StateLogListChanged -= new EventHandler(Content_StateLogListChanged);
-      Content.IsProgressingChanged -= new EventHandler(Content_IsProgressingChanged);
       Content.HiveTasksChanged -= new EventHandler(Content_HiveTasksChanged);
       Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
@@ -94,9 +86,5 @@
       Content.Loaded -= new EventHandler(Content_Loaded);
       Content.TaskReceived -= new EventHandler(Content_TaskReceived);
-      if (progressView != null) {
-        progressView.Content = null;
-        progressView.Dispose();
-        progressView = null;
-      }
+      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this, false);
       DeregisterHiveExperimentEvents();
       DeregisterHiveTasksEvents();
@@ -159,5 +147,4 @@
       Content_HiveExperimentChanged(this, EventArgs.Empty);
       Content_HiveTasksChanged(this, EventArgs.Empty);
-      Content_IsProgressingChanged(this, EventArgs.Empty);
       Content_StateLogListChanged(this, EventArgs.Empty);
       HiveExperiment_PropertyChanged(this, new PropertyChangedEventArgs("Id"));
@@ -260,38 +247,5 @@
         SetEnabledStateOfControls();
     }
-    private void Content_Prepared(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_Prepared), sender, e);
-      else {
-        nameTextBox.Enabled = true;
-        Locked = false;
-        SetEnabledStateOfControls();
-      }
-    }
-    private void Content_Started(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_Started), sender, e);
-      else {
-        nameTextBox.Enabled = false;
-        SetEnabledStateOfControls();
-      }
-    }
-    private void Content_Paused(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_Paused), sender, e);
-      else {
-        nameTextBox.Enabled = true;
-        SetEnabledStateOfControls();
-      }
-    }
-    private void Content_Stopped(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_Stopped), sender, e);
-      else {
-        nameTextBox.Enabled = true;
-        Locked = false;
-        SetEnabledStateOfControls();
-      }
-    }
+
     private void Content_ExecutionTimeChanged(object sender, EventArgs e) {
       if (InvokeRequired)
@@ -336,5 +290,4 @@
       if (Content != null && Content.Job != null) {
         RegisterHiveExperimentEvents();
-        Content_IsProgressingChanged(sender, e);
       }
     }
@@ -410,5 +363,5 @@
         var task = System.Threading.Tasks.Task.Factory.StartNew(ResumeJobAsync, Content);
         task.ContinueWith((t) => {
-          progress.Finish();
+          Content.Progress.Finish();
           MessageBox.Show("An error occured resuming the job. See the log for more information.", "HeuristicLab Hive Job Manager", MessageBoxButtons.OK, MessageBoxIcon.Error);
           Content.Log.LogException(t.Exception);
@@ -422,5 +375,5 @@
       var task = System.Threading.Tasks.Task.Factory.StartNew(PauseJobAsync, Content);
       task.ContinueWith((t) => {
-        progress.Finish();
+        Content.Progress.Finish();
         MessageBox.Show("An error occured pausing the job. See the log for more information.", "HeuristicLab Hive Job Manager", MessageBoxButtons.OK, MessageBoxIcon.Error);
         Content.Log.LogException(t.Exception);
@@ -431,5 +384,5 @@
       var task = System.Threading.Tasks.Task.Factory.StartNew(StopJobAsync, Content);
       task.ContinueWith((t) => {
-        progress.Finish();
+        Content.Progress.Finish();
         MessageBox.Show("An error occured stopping the job. See the log for more information.", "HeuristicLab Hive Job Manager", MessageBoxButtons.OK, MessageBoxIcon.Error);
         Content.Log.LogException(t.Exception);
@@ -439,22 +392,19 @@
 
     private void PauseJobAsync(object job) {
-      progress.Status = "Pausing job...";
-      progress.ProgressState = ProgressState.Started;
+      Content.Progress.Start("Pausing job...");
       HiveClient.PauseJob((RefreshableJob)job);
-      progress.Finish();
+      Content.Progress.Finish();
     }
 
     private void StopJobAsync(object job) {
-      progress.Status = "Stopping job...";
-      progress.ProgressState = ProgressState.Started;
+      Content.Progress.Start("Stopping job...");
       HiveClient.StopJob((RefreshableJob)job);
-      progress.Finish();
+      Content.Progress.Finish();
     }
 
     private void ResumeJobAsync(object job) {
-      progress.Status = "Resuming job...";
-      progress.ProgressState = ProgressState.Started;
+      Content.Progress.Start("Resuming job...");
       HiveClient.ResumeJob((RefreshableJob)job);
-      progress.Finish();
+      Content.Progress.Finish();
     }
 
@@ -507,18 +457,4 @@
         stopButton.Enabled = Content.IsControllable && Content.ExecutionState == ExecutionState.Started && !Content.IsProgressing;
         resetButton.Enabled = false;
-      }
-    }
-    #endregion
-
-    #region Progress reporting
-    private void Content_IsProgressingChanged(object sender, EventArgs e) {
-      if (this.InvokeRequired) {
-        Invoke(new EventHandler(Content_IsProgressingChanged), sender, e);
-      } else {
-        if (Content != null && Content.Progress != null && Content.IsProgressing) {
-          progressView.Content = Content.Progress;
-        } else if (Content != null) {
-          progressView.Content = progress;
-        }
       }
     }
