Index: branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/MenuItems/RunInHiveMenuItem.cs
===================================================================
--- branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/MenuItems/RunInHiveMenuItem.cs	(revision 16321)
+++ branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/MenuItems/RunInHiveMenuItem.cs	(revision 16433)
@@ -99,5 +99,5 @@
           rJob.Job.ResourceIds = hiveResourceSelectorDialog.SelectedResources.Select(x => x.Id).ToList();
 
-          progress = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>().AddOperationProgressToContent(this.content, "Uploading to Hive...");
+          progress = Progress.Show(this.content, "Uploading to Hive...", ProgressMode.Indeterminate);
           rJob.Progress = progress;
           progress.ProgressStateChanged += progress_ProgressStateChanged;
@@ -110,5 +110,5 @@
     private void progress_ProgressStateChanged(object sender, EventArgs e) {
       if (progress.ProgressState != ProgressState.Started) {
-        MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromContent(content);
+        Progress.Hide(content);
         progress.ProgressStateChanged -= progress_ProgressStateChanged;
       }
@@ -116,5 +116,5 @@
 
     private void HandleEx(Exception ex) {
-      MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromContent(content);
+      Progress.Hide(content);
       progress.ProgressStateChanged -= progress_ProgressStateChanged;
       ErrorHandling.ShowErrorDialog("Error uploading tasks", ex);
Index: branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.Designer.cs
===================================================================
--- branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.Designer.cs	(revision 16321)
+++ branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.Designer.cs	(revision 16433)
@@ -19,4 +19,6 @@
  */
 #endregion
+
+using System.Windows.Forms;
 
 namespace HeuristicLab.Clients.Hive.JobManager.Views {
@@ -114,4 +116,5 @@
       this.toolTip.SetToolTip(this.searchTextBox, "Enter string to search for resources");
       this.searchTextBox.TextChanged += new System.EventHandler(this.searchTextBox_TextChanged);
+      this.searchTextBox.MouseDown += new MouseEventHandler(this.searchTextBox_MouseDown);
       // 
       // splitContainer2
@@ -146,4 +149,5 @@
       this.projectsTreeView.Size = new System.Drawing.Size(204, 410);
       this.projectsTreeView.TabIndex = 3;
+      this.projectsTreeView.MouseDown += new System.Windows.Forms.MouseEventHandler(this.projectsTreeView_MouseDown);
       this.projectsTreeView.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.projectsTreeView_MouseDoubleClick);
       this.projectsTreeView.BeforeSelect += new System.Windows.Forms.TreeViewCancelEventHandler(this.projectsTreeView_BeforeSelect);
Index: branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs
===================================================================
--- branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 16321)
+++ branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 16433)
@@ -145,5 +145,5 @@
         selectedProject = value;
 
-        UpdateResourceTree();
+        UpdateResourceTree();                
         ExtractStatistics();
         OnSelectedProjectChanged();
@@ -223,4 +223,14 @@
       //UpdateFilteredTree();
       UpdateProjectTree();
+    }
+
+    private void searchTextBox_MouseDown(object sender, MouseEventArgs e) {
+      resourcesTreeView.SelectedNode = null;
+      ExtractStatistics();
+    }
+
+    private void projectsTreeView_MouseDown(object sender, MouseEventArgs e) {
+      resourcesTreeView.SelectedNode = null;
+      ExtractStatistics();
     }
 
Index: branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelectorDialog.cs
===================================================================
--- branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelectorDialog.cs	(revision 16321)
+++ branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelectorDialog.cs	(revision 16433)
@@ -96,6 +96,5 @@
       if (InvokeRequired) Invoke((Action<object, EventArgs>)HiveClient_Instance_Refreshing, sender, e);
       else {
-        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
-        mainForm.AddOperationProgressToView(this, "Refreshing ...");
+        Progress.ShowOnControl(this, "Refreshing", ProgressMode.Indeterminate);
         refreshButton.Enabled = false;
       }
@@ -105,6 +104,5 @@
       if (InvokeRequired) Invoke((Action<object, EventArgs>)HiveClient_Instance_Refreshed, sender, e);
       else {
-        var mainForm = MainFormManager.GetMainForm<MainForm.WindowsForms.MainForm>();
-        mainForm.RemoveOperationProgressFromView(this);
+        Progress.HideFromControl(this);
         refreshButton.Enabled = true;
       }
@@ -140,7 +138,7 @@
       okButton.Enabled = hiveResourceSelector.AssignedResources.Any();
 
-      if(!hiveResourceSelector.AssignedResources.Any()) {
+      if (!hiveResourceSelector.AssignedResources.Any()) {
         errorProvider.SetError(okButton, "Note: currently no resources are assigned");
-      } else if(hiveResourceSelector.AssignedCores == 0) {
+      } else if (hiveResourceSelector.AssignedCores == 0) {
         errorProvider.SetError(okButton, "Note: currently no resources with cores are assigned");
       } else {
Index: branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs
===================================================================
--- branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs	(revision 16321)
+++ branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs	(revision 16433)
@@ -47,5 +47,5 @@
       this.itemsListView.FullRowSelect = true;
 
-      this.itemsListView.ListViewItemSorter = new ListViewItemComparer(new int[] { 2, 0 }, new SortOrder[] { SortOrder.Ascending, SortOrder.Ascending });      
+      this.itemsListView.ListViewItemSorter = new ListViewItemComparer(new int[] { 2, 0 }, new SortOrder[] { SortOrder.Ascending, SortOrder.Ascending });
 
       foreach (ColumnHeader c in this.itemsListView.Columns) {
@@ -53,5 +53,5 @@
         int w = c.Width;
         c.AutoResize(ColumnHeaderAutoResizeStyle.ColumnContent);
-        if(w > c.Width) {
+        if (w > c.Width) {
           c.AutoResize(ColumnHeaderAutoResizeStyle.HeaderSize);
         }
@@ -120,5 +120,5 @@
 
         task.ContinueWith((t) => {
-          MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this);
+          Progress.Hide(this);
           ErrorHandling.ShowErrorDialog("An error occured while deleting the job. ", t.Exception);
         }, TaskContinuationOptions.OnlyOnFaulted);
@@ -131,9 +131,9 @@
 
     private void DeleteHiveJobsAsync(object items) {
-      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, "Deleting job...");
+      Progress.Show(this, "Deleting job...", ProgressMode.Indeterminate);
       foreach (RefreshableJob item in (List<RefreshableJob>)items) {
         Content.Remove(item);
       }
-      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this);
+      Progress.Hide(this);
     }
 
@@ -197,5 +197,5 @@
       listViewItem.SubItems.Insert(1, new ListViewItem.ListViewSubItem(listViewItem, item.Job.Name));
       listViewItem.SubItems.Insert(2, new ListViewItem.ListViewSubItem(listViewItem, HiveClient.Instance.GetProjectAncestry(item.Job.ProjectId)));
-      
+
       listViewItem.Group = GetListViewGroup(item.Job.OwnerUsername);
       return listViewItem;
Index: branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs
===================================================================
--- branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 16321)
+++ branches/2965_CancelablePersistence/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 16433)
@@ -75,5 +75,5 @@
       Content.Loaded += new EventHandler(Content_Loaded);
       Content.TaskReceived += new EventHandler(Content_TaskReceived);
-      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().AddOperationProgressToView(this, Content.Progress);
+      Progress.Show(this, Content.Progress);
     }
 
@@ -90,5 +90,5 @@
       Content.Loaded -= new EventHandler(Content_Loaded);
       Content.TaskReceived -= new EventHandler(Content_TaskReceived);
-      MainFormManager.GetMainForm<HeuristicLab.MainForm.WindowsForms.MainForm>().RemoveOperationProgressFromView(this, false);
+      Progress.Hide(this, false);
       DeregisterHiveExperimentEvents();
       DeregisterHiveTasksEvents();
@@ -133,6 +133,6 @@
           stateLogViewHost.Content = null;
         } else {
-          if(Content.Job != null 
-            && Content.Job.Id != Guid.Empty 
+          if (Content.Job != null
+            && Content.Job.Id != Guid.Empty
             && !originalJobProjectAssignment.ContainsKey(Content.Job.Id)) {
             originalJobProjectAssignment.Add(Content.Job.Id, Content.Job.ProjectId);
@@ -159,5 +159,5 @@
                 projectNameTextBox.Text = HiveClient.Instance.GetProjectAncestry(Content.Job.ProjectId);
                 projectNameTextBox.Text += "   (" + (cores.HasValue ? cores.Value.ToString() : "0") + " cores)";
-              }                
+              }
             }
           } else if (Content.Job != null && Content.Job.ProjectId != Guid.Empty) {
@@ -167,5 +167,5 @@
             }
 
-            if(hiveResourceSelectorDialog == null)
+            if (hiveResourceSelectorDialog == null)
               hiveResourceSelectorDialog = new HiveResourceSelectorDialog(Content.Job.Id, Content.Job.ProjectId);
 
@@ -203,5 +203,5 @@
           executionTimeTextBox.Text = Content.ExecutionTime.ToString();
           refreshAutomaticallyCheckBox.Checked = Content.RefreshAutomatically;
-          
+
           logView.Content = Content.Log;
           lock (runCollectionViewLocker) {
@@ -408,5 +408,5 @@
       if (hiveResourceSelectorDialog == null) {
         hiveResourceSelectorDialog = new HiveResourceSelectorDialog(Content.Job.Id, Content.Job.ProjectId);
-      } else if(hiveResourceSelectorDialog.JobId != Content.Job.Id) {
+      } else if (hiveResourceSelectorDialog.JobId != Content.Job.Id) {
         hiveResourceSelectorDialog.JobId = Content.Job.Id;
         hiveResourceSelectorDialog.SelectedProjectId = Content.Job.ProjectId;
@@ -418,5 +418,5 @@
           hiveResourceSelectorDialog.ProjectId = Guid.Empty;
         }
-      } else if(hiveResourceSelectorDialog.JobId == Guid.Empty && Content.Job.Id == Guid.Empty) {
+      } else if (hiveResourceSelectorDialog.JobId == Guid.Empty && Content.Job.Id == Guid.Empty) {
         hiveResourceSelectorDialog.JobId = Content.Job.Id;
         hiveResourceSelectorDialog.ProjectId = Guid.Empty;
@@ -430,5 +430,5 @@
       if (hiveResourceSelectorDialog.ShowDialog(this) == DialogResult.OK) {
         selectedProject = hiveResourceSelectorDialog.SelectedProject;
-        if(selectedProject != null) {       
+        if (selectedProject != null) {
           Content.Job.ProjectId = selectedProject.Id;
           Content.Job.ResourceIds = hiveResourceSelectorDialog.SelectedResources.Select(x => x.Id).ToList();
@@ -493,5 +493,5 @@
 
     private void PauseJobAsync(object job) {
-      Content.Progress.Start("Pausing job...");
+      Content.Progress.Start("Pausing job...", ProgressMode.Indeterminate);
       HiveClient.PauseJob((RefreshableJob)job);
       Content.Progress.Finish();
@@ -499,5 +499,5 @@
 
     private void StopJobAsync(object job) {
-      Content.Progress.Start("Stopping job...");
+      Content.Progress.Start("Stopping job...", ProgressMode.Indeterminate);
       HiveClient.StopJob((RefreshableJob)job);
       Content.Progress.Finish();
@@ -505,5 +505,5 @@
 
     private void ResumeJobAsync(object job) {
-      Content.Progress.Start("Resuming job...");
+      Content.Progress.Start("Resuming job...", ProgressMode.Indeterminate);
       HiveClient.ResumeJob((RefreshableJob)job);
       Content.Progress.Finish();
@@ -582,6 +582,6 @@
         startButton.Enabled = pauseButton.Enabled = stopButton.Enabled = false;
       } else {
-        startButton.Enabled = Content.IsControllable && Content.HiveTasks != null && Content.HiveTasks.Count > 0 
-          && Content.Job.ProjectId != Guid.Empty && Content.Job.ResourceIds != null  && Content.Job.ResourceIds.Any() 
+        startButton.Enabled = Content.IsControllable && Content.HiveTasks != null && Content.HiveTasks.Count > 0
+          && Content.Job.ProjectId != Guid.Empty && Content.Job.ResourceIds != null && Content.Job.ResourceIds.Any()
           && (Content.ExecutionState == ExecutionState.Prepared || Content.ExecutionState == ExecutionState.Paused) && !Content.IsProgressing;
         pauseButton.Enabled = Content.IsControllable && Content.ExecutionState == ExecutionState.Started && !Content.IsProgressing;
@@ -589,5 +589,5 @@
       }
     }
-   
+
     private Project GetProject(Guid projectId) {
       return HiveServiceLocator.Instance.CallHiveService(s => s.GetProject(projectId));
@@ -595,5 +595,5 @@
 
     private void UpdateSelectorDialog() {
-      if(hiveResourceSelectorDialog != null) {
+      if (hiveResourceSelectorDialog != null) {
         hiveResourceSelectorDialog = null;
         //hiveResourceSelectorDialog.JobId = Content.Job.Id;
