Index: /trunk/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs
===================================================================
--- /trunk/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 16218)
+++ /trunk/HeuristicLab.Clients.Hive.JobManager/3.3/Views/HiveResourceSelector.cs	(revision 16219)
@@ -26,4 +26,5 @@
 using System.Windows.Forms;
 using HeuristicLab.Collections;
+using HeuristicLab.Common;
 using HeuristicLab.Common.Resources;
 using HeuristicLab.Core;
@@ -637,4 +638,5 @@
         additionalNode = new TreeNode(additionalSlavesGroupName) {
           ForeColor = SystemColors.GrayText,
+          ImageIndex = slaveGroupImageIndex,
           Tag = new SlaveGroup() {
             Name = additionalSlavesGroupName,
@@ -645,4 +647,23 @@
         foreach (var slave in singleSlaves.OrderBy(x => x.Name)) {
           var slaveNode = new TreeNode(slave.Name) { Tag = slave };
+
+          if (newAssignedResources.Select(x => x.Id).Contains(slave.Id)) {
+            slaveNode.Checked = true;
+            if (!addedAssignments.Select(x => x.Id).Contains(slave.Id) &&
+                !removedAssignments.Select(x => x.Id).Contains(slave.Id)) {
+              slaveNode.Text += SELECTED_TAG;
+            }
+          }
+
+          if (addedAssignments.Select(x => x.Id).Contains(slave.Id)) {
+            slaveNode.BackColor = addedAssignmentColor;
+            slaveNode.ForeColor = controlTextColor;
+            slaveNode.Text += ADDED_SELECTION_TAG;
+          } else if (removedAssignments.Select(x => x.Id).Contains(slave.Id)) {
+            slaveNode.BackColor = removedAssignmentColor;
+            slaveNode.ForeColor = controlTextColor;
+            slaveNode.Text += REMOVED_SELECTION_TAG;
+          }
+
           additionalNode.Nodes.Add(slaveNode);
         }
@@ -661,6 +682,7 @@
         Resource r = (Resource)n.Tag;
         if(n.Nodes.Count > 0) {
-          if(HiveClient.Instance.GetAvailableResourceDescendants(r.Id).OfType<SlaveGroup>().Any()
-            || HiveClient.Instance.GetAvailableResourceDescendants(r.Id).OfType<Slave>().Intersect(assignedResources.Union(newAssignedResources)).Any()) {
+          if(HiveClient.Instance.GetAvailableResourceDescendants(r.Id).OfType<SlaveGroup>().Any()            
+            || HiveClient.Instance.GetAvailableResourceDescendants(r.Id).OfType<Slave>().Intersect(assignedResources.Union(newAssignedResources)).Any()
+            || (n == additionalNode && additionalNode.Nodes.Count > 0 && additionalNode.Nodes.Cast<TreeNode>().Any(x => x.Checked))) {
             n.Expand();
             ExpandResourceNodesOfInterest(n.Nodes);
Index: /trunk/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs
===================================================================
--- /trunk/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 16218)
+++ /trunk/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 16219)
@@ -141,4 +141,5 @@
           // project look up
           if (Content.Job != null && Content.Job.ProjectId == Guid.Empty) {
+            projectNameTextBox.Text = string.Empty;
             if (HiveClient.Instance != null && HiveClient.Instance.Projects != null && HiveClient.Instance.Projects.Count == 1) {
               var p = HiveClient.Instance.Projects.FirstOrDefault();
@@ -146,7 +147,16 @@
                 hiveResourceSelectorDialog = new HiveResourceSelectorDialog(Content.Job.Id, Content.Job.ProjectId);
                 Content.Job.ProjectId = p.Id;
-                Content.Job.ResourceIds = HiveClient.Instance.GetAvailableResourcesForProject(p.Id).Select(x => x.Id).ToList();
+                var resources = HiveClient.Instance.GetAvailableResourcesForProject(p.Id).ToList();
+                Content.Job.ResourceIds = resources.Select(x => x.Id).ToList();
                 hiveResourceSelectorDialog.SelectedProjectId = Content.Job.ProjectId;
                 hiveResourceSelectorDialog.SelectedResourceIds = Content.Job.ResourceIds;
+
+                var cores = resources.Union(resources.SelectMany(x => HiveClient.Instance.GetAvailableResourceDescendants(x.Id)))
+                  .OfType<Slave>()
+                  .Distinct()
+                  .Sum(x => x.Cores);
+
+                projectNameTextBox.Text = HiveClient.Instance.GetProjectAncestry(Content.Job.ProjectId);
+                projectNameTextBox.Text += "   (" + (cores.HasValue ? cores.Value.ToString() : "0") + " cores)";
               }                
             }
@@ -155,9 +165,4 @@
               selectedProject = GetProject(Content.Job.ProjectId);
               hiveResourceSelectorDialog = null;
-              if (selectedProject != null) {
-                projectNameTextBox.Text = selectedProject.Name;
-              } else {
-                projectNameTextBox.Text = string.Empty;
-              }
             }
 
@@ -165,10 +170,25 @@
               hiveResourceSelectorDialog = new HiveResourceSelectorDialog(Content.Job.Id, Content.Job.ProjectId);
 
-            if (Content.Job.ResourceIds == null) {
-              Content.Job.ResourceIds = HiveClient.Instance.GetAssignedResourcesForJob(Content.Job.Id)
-                .Select(x => x.Id)
-                .ToList();
-              hiveResourceSelectorDialog.SelectedResourceIds = Content.Job.ResourceIds;
+            if (selectedProject != null) {
+              projectNameTextBox.Text = HiveClient.Instance.GetProjectAncestry(selectedProject.Id);
+            } else {
+              projectNameTextBox.Text = string.Empty;
             }
+
+            List<Resource> resources = null;
+            if (Content.Job.ResourceIds == null)
+              resources = HiveClient.Instance.GetAssignedResourcesForJob(Content.Job.Id).ToList();
+            else
+              resources = HiveClient.Instance.Resources.Where(x => Content.Job.ResourceIds.Contains(x.Id)).ToList();
+
+            Content.Job.ResourceIds = resources.Select(x => x.Id).ToList();
+            hiveResourceSelectorDialog.SelectedResourceIds = Content.Job.ResourceIds;
+
+            var cores = resources.Union(resources.SelectMany(x => HiveClient.Instance.GetAvailableResourceDescendants(x.Id)))
+              .OfType<Slave>()
+              .Distinct()
+              .Sum(x => x.Cores);
+
+            projectNameTextBox.Text += "   (" + (cores.HasValue ? cores.Value.ToString() : "0") + " cores)";
 
           } else {
@@ -192,5 +212,5 @@
         SuppressEvents = false;
       }
-      hiveExperimentPermissionListView.Content = null; // has to be filled by refresh button
+      hiveExperimentPermissionListView.Content = null; // has to be filled by refresh
       Content_JobStatisticsChanged(this, EventArgs.Empty);
       Content_HiveExperimentChanged(this, EventArgs.Empty);
@@ -410,8 +430,18 @@
       if (hiveResourceSelectorDialog.ShowDialog(this) == DialogResult.OK) {
         selectedProject = hiveResourceSelectorDialog.SelectedProject;
-        if(selectedProject != null) {
-          projectNameTextBox.Text = selectedProject.Name;
+        if(selectedProject != null) {       
           Content.Job.ProjectId = selectedProject.Id;
           Content.Job.ResourceIds = hiveResourceSelectorDialog.SelectedResources.Select(x => x.Id).ToList();
+
+          var cores = hiveResourceSelectorDialog.SelectedResources
+            .Union(hiveResourceSelectorDialog.SelectedResources
+              .SelectMany(x => HiveClient.Instance.GetAvailableResourceDescendants(x.Id)))
+            .OfType<Slave>()
+            .Distinct()
+            .Sum(x => x.Cores);
+
+          projectNameTextBox.Text = HiveClient.Instance.GetProjectAncestry(selectedProject.Id) + "";
+          projectNameTextBox.Text += "   (" + (cores.HasValue ? cores.Value.ToString() : "0") + " cores)";
+
         } else {
           selectedProject = null;
