Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobListView.cs	(revision 6834)
@@ -52,5 +52,5 @@
 
     protected override void removeButton_Click(object sender, EventArgs e) {
-      DialogResult result = MessageBox.Show("This action will permanently delete this experiment (also on the hive server). Continue?", "Delete Experiment", MessageBoxButtons.OKCancel);
+      DialogResult result = MessageBox.Show("This action will permanently delete this job (also on the hive server). Continue?", "Delete Job", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
       if (result == DialogResult.OK) {
         base.removeButton_Click(sender, e);
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.Designer.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.Designer.cs	(revision 6834)
@@ -58,7 +58,9 @@
       this.calculatingLabel = new System.Windows.Forms.Label();
       this.jobsLabel = new System.Windows.Forms.Label();
+      this.runCollectionViewHost = new HeuristicLab.MainForm.WindowsForms.ViewHost();
       this.tabControl.SuspendLayout();
       this.tasksTabPage.SuspendLayout();
       this.permissionTabPage.SuspendLayout();
+      this.runsTabPage.SuspendLayout();
       this.stateTabPage.SuspendLayout();
       this.logTabPage.SuspendLayout();
@@ -149,4 +151,5 @@
       // runsTabPage
       // 
+      this.runsTabPage.Controls.Add(this.runCollectionViewHost);
       this.runsTabPage.Location = new System.Drawing.Point(4, 22);
       this.runsTabPage.Name = "runsTabPage";
@@ -418,5 +421,21 @@
       this.jobsLabel.Text = "Waiting:";
       // 
-      // RefreshableHiveExperimentView
+      // runCollectionViewHost
+      // 
+      this.runCollectionViewHost.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.runCollectionViewHost.Caption = "View";
+      this.runCollectionViewHost.Content = null;
+      this.runCollectionViewHost.Enabled = false;
+      this.runCollectionViewHost.Location = new System.Drawing.Point(3, 3);
+      this.runCollectionViewHost.Name = "runCollectionViewHost";
+      this.runCollectionViewHost.ReadOnly = false;
+      this.runCollectionViewHost.Size = new System.Drawing.Size(703, 420);
+      this.runCollectionViewHost.TabIndex = 2;
+      this.runCollectionViewHost.ViewsLabelVisible = true;
+      this.runCollectionViewHost.ViewType = null;
+      // 
+      // RefreshableHiveJobView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@@ -437,9 +456,10 @@
       this.Controls.Add(this.stopButton);
       this.Controls.Add(this.resetButton);
-      this.Name = "RefreshableHiveExperimentView";
+      this.Name = "RefreshableHiveJobView";
       this.Size = new System.Drawing.Size(717, 560);
       this.tabControl.ResumeLayout(false);
       this.tasksTabPage.ResumeLayout(false);
       this.permissionTabPage.ResumeLayout(false);
+      this.runsTabPage.ResumeLayout(false);
       this.stateTabPage.ResumeLayout(false);
       this.logTabPage.ResumeLayout(false);
@@ -484,4 +504,5 @@
     private System.Windows.Forms.Button refreshPermissionsButton;
     private System.Windows.Forms.TabPage runsTabPage;
+    private MainForm.WindowsForms.ViewHost runCollectionViewHost;
 
   }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.JobManager/3.3/Views/RefreshableHiveJobView.cs	(revision 6834)
@@ -63,8 +63,9 @@
       Content.StateLogListChanged += new EventHandler(Content_StateLogListChanged);
       Content.IsProgressingChanged += new EventHandler(Content_IsProgressingChanged);
-      Content.HiveJobsChanged += new EventHandler(Content_HiveJobChanged);
+      Content.HiveTasksChanged += new EventHandler(Content_HiveTasksChanged);
       Content.ExecutionStateChanged += new EventHandler(Content_ExecutionStateChanged);
       Content.ExecutionTimeChanged += new EventHandler(Content_ExecutionTimeChanged);
       Content.IsAllowedPrivilegedChanged += new EventHandler(Content_IsAllowedPrivilegedChanged);
+      Content.Loaded += new EventHandler(Content_Loaded);
     }
 
@@ -77,7 +78,8 @@
       Content.StateLogListChanged -= new EventHandler(Content_StateLogListChanged);
       Content.IsProgressingChanged -= new EventHandler(Content_IsProgressingChanged);
-      Content.HiveJobsChanged -= new EventHandler(Content_HiveJobChanged);
+      Content.HiveTasksChanged -= new EventHandler(Content_HiveTasksChanged);
       Content.ExecutionStateChanged -= new EventHandler(Content_ExecutionStateChanged);
       Content.ExecutionTimeChanged -= new EventHandler(Content_ExecutionTimeChanged);
+      Content.Loaded -= new EventHandler(Content_Loaded);
       base.DeregisterContentEvents();
     }
@@ -92,12 +94,12 @@
 
     private void RegisterHiveJobEvents() {
-      Content.HiveTasks.ItemsAdded += new CollectionItemsChangedEventHandler<HiveTask>(HiveJobs_ItemsAdded_Removed_Reset);
-      Content.HiveTasks.ItemsRemoved += new CollectionItemsChangedEventHandler<HiveTask>(HiveJobs_ItemsAdded_Removed_Reset);
-      Content.HiveTasks.CollectionReset += new CollectionItemsChangedEventHandler<HiveTask>(HiveJobs_ItemsAdded_Removed_Reset);
+      Content.HiveTasks.ItemsAdded += new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_ItemsAdded);
+      Content.HiveTasks.ItemsRemoved += new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_ItemsRemoved);
+      Content.HiveTasks.CollectionReset += new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_CollectionReset);
     }
     private void DeregisterHiveJobEvents() {
-      Content.HiveTasks.ItemsAdded -= new CollectionItemsChangedEventHandler<HiveTask>(HiveJobs_ItemsAdded_Removed_Reset);
-      Content.HiveTasks.ItemsRemoved -= new CollectionItemsChangedEventHandler<HiveTask>(HiveJobs_ItemsAdded_Removed_Reset);
-      Content.HiveTasks.CollectionReset -= new CollectionItemsChangedEventHandler<HiveTask>(HiveJobs_ItemsAdded_Removed_Reset);
+      Content.HiveTasks.ItemsAdded -= new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_ItemsAdded);
+      Content.HiveTasks.ItemsRemoved -= new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_ItemsRemoved);
+      Content.HiveTasks.CollectionReset -= new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_CollectionReset);
     }
 
@@ -112,4 +114,5 @@
         refreshAutomaticallyCheckBox.Checked = false;
         logView.Content = null;
+        runCollectionViewHost.Content = null;
       } else {
         nameTextBox.Text = Content.Job.Name;
@@ -119,9 +122,10 @@
         refreshAutomaticallyCheckBox.Checked = Content.RefreshAutomatically;
         logView.Content = Content.Log;
+        runCollectionViewHost.Content = GetAllRunsFromJob(Content);
       }
       hiveExperimentPermissionListView.Content = null; // has to be filled by refresh button
       Content_JobStatisticsChanged(this, EventArgs.Empty);
       Content_HiveExperimentChanged(this, EventArgs.Empty);
-      Content_HiveJobChanged(this, EventArgs.Empty);
+      Content_HiveTasksChanged(this, EventArgs.Empty);
       Content_IsProgressingChanged(this, EventArgs.Empty);
       Content_StateLogListChanged(this, EventArgs.Empty);
@@ -163,11 +167,41 @@
 
     #region Content Events
-    private void HiveJobs_ItemsAdded_Removed_Reset(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
-      if (InvokeRequired)
-        Invoke(new CollectionItemsChangedEventHandler<HiveTask>(HiveJobs_ItemsAdded_Removed_Reset), sender, e);
-      else {
-        SetEnabledStateOfControls();
-      }
-    }
+    private void HiveTasks_ItemsAdded(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
+      if (InvokeRequired)
+        Invoke(new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_ItemsAdded), sender, e);
+      else {
+        foreach (HiveTask t in e.Items) {
+          t.TaskStateChanged += new EventHandler(HiveTask_TaskStateChanged);
+        }
+        SetEnabledStateOfControls();
+      }
+    }
+
+    private void HiveTasks_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
+      if (InvokeRequired)
+        Invoke(new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_ItemsRemoved), sender, e);
+      else {
+        foreach (HiveTask t in e.Items) {
+          t.TaskStateChanged -= new EventHandler(HiveTask_TaskStateChanged);
+        }
+        SetEnabledStateOfControls();
+      }
+    }
+
+    private void HiveTasks_CollectionReset(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
+      if (InvokeRequired)
+        Invoke(new CollectionItemsChangedEventHandler<HiveTask>(HiveTasks_CollectionReset), sender, e);
+      else {
+        foreach (HiveTask t in e.Items) {
+          t.TaskStateChanged -= new EventHandler(HiveTask_TaskStateChanged);
+        }
+        SetEnabledStateOfControls();
+      }
+    }
+
+    void HiveTask_TaskStateChanged(object sender, EventArgs e) {
+      runCollectionViewHost.Content = GetAllRunsFromJob(Content);
+    }
+
     private void Content_ExecutionStateChanged(object sender, EventArgs e) {
       if (InvokeRequired)
@@ -224,7 +258,7 @@
       }
     }
-    private void Content_HiveJobChanged(object sender, EventArgs e) {
-      if (InvokeRequired)
-        Invoke(new EventHandler(Content_HiveJobChanged), sender, e);
+    private void Content_HiveTasksChanged(object sender, EventArgs e) {
+      if (InvokeRequired)
+        Invoke(new EventHandler(Content_HiveTasksChanged), sender, e);
       else {
         if (Content != null && Content.HiveTasks != null) {
@@ -236,4 +270,8 @@
         SetEnabledStateOfControls();
       }
+    }
+
+    void Content_Loaded(object sender, EventArgs e) {
+      runCollectionViewHost.Content = GetAllRunsFromJob(Content);
     }
 
@@ -419,4 +457,20 @@
       }
     }
+
+    private RunCollection GetAllRunsFromJob(RefreshableJob job) {
+      if (job != null) {
+        RunCollection runs = new RunCollection();
+
+        foreach (HiveTask subTask in job.HiveTasks) {
+          if (subTask is OptimizerHiveTask) {
+            OptimizerHiveTask ohTask = subTask as OptimizerHiveTask;
+            runs.AddRange(ohTask.ItemTask.Item.Runs);
+          }
+        }
+        return runs;
+      } else {
+        return null;
+      }
+    }
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.App/3.3/MainWindow.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.App/3.3/MainWindow.Designer.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.App/3.3/MainWindow.Designer.cs	(revision 6834)
@@ -50,4 +50,5 @@
       this.Name = "MainWindow";
       this.Text = "Hive Slave";
+      this.SizeChanged += new System.EventHandler(this.MainWindow_SizeChanged);
       this.ResumeLayout(false);
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.App/3.3/MainWindow.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.App/3.3/MainWindow.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.App/3.3/MainWindow.cs	(revision 6834)
@@ -36,4 +36,7 @@
       } else {
         Show();
+        if (WindowState == FormWindowState.Minimized) {
+          WindowState = FormWindowState.Normal;
+        }
       }
     }
@@ -45,4 +48,12 @@
       }
     }
+
+    private void MainWindow_SizeChanged(object sender, EventArgs e) {
+      if (WindowState == FormWindowState.Minimized) {
+        Hide();
+      } /*else if (Visible == false) {
+        Show();
+      }   */
+    }
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/HeuristicLab.Clients.Hive.Slave.Views-3.3.csproj
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/HeuristicLab.Clients.Hive.Slave.Views-3.3.csproj	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/HeuristicLab.Clients.Hive.Slave.Views-3.3.csproj	(revision 6834)
@@ -177,9 +177,9 @@
       <DependentUpon>SlaveStats.cs</DependentUpon>
     </Compile>
-    <Compile Include="JobsView.cs">
-      <SubType>UserControl</SubType>
-    </Compile>
-    <Compile Include="JobsView.Designer.cs">
-      <DependentUpon>JobsView.cs</DependentUpon>
+    <Compile Include="TaskView.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="TaskView.Designer.cs">
+      <DependentUpon>TaskView.cs</DependentUpon>
     </Compile>
     <Compile Include="LogView.cs">
@@ -248,6 +248,6 @@
       <SubType>Designer</SubType>
     </EmbeddedResource>
-    <EmbeddedResource Include="JobsView.resx">
-      <DependentUpon>JobsView.cs</DependentUpon>
+    <EmbeddedResource Include="TaskView.resx">
+      <DependentUpon>TaskView.cs</DependentUpon>
     </EmbeddedResource>
     <EmbeddedResource Include="LogView.resx">
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/JobsView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/JobsView.Designer.cs	(revision 6833)
+++ 	(revision )
@@ -1,94 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-namespace HeuristicLab.Clients.Hive.SlaveCore.Views {
-  partial class JobsView {
-    /// <summary> 
-    /// Required designer variable.
-    /// </summary>
-    private System.ComponentModel.IContainer components = null;
-
-    /// <summary> 
-    /// Clean up any resources being used.
-    /// </summary>
-    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
-    protected override void Dispose(bool disposing) {
-      if (disposing && (components != null)) {
-        components.Dispose();
-      }
-      base.Dispose(disposing);
-    }
-
-    #region Component Designer generated code
-
-    /// <summary> 
-    /// Required method for Designer support - do not modify 
-    /// the contents of this method with the code editor.
-    /// </summary>
-    private void InitializeComponent() {
-      this.lstJobs = new System.Windows.Forms.ListView();
-      this.columnJobId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
-      this.columnExecutionTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
-      this.SuspendLayout();
-      // 
-      // lstJobs
-      // 
-      this.lstJobs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.lstJobs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
-            this.columnJobId,
-            this.columnExecutionTime});
-      this.lstJobs.Location = new System.Drawing.Point(3, 3);
-      this.lstJobs.Name = "lstJobs";
-      this.lstJobs.Size = new System.Drawing.Size(380, 164);
-      this.lstJobs.TabIndex = 0;
-      this.lstJobs.UseCompatibleStateImageBehavior = false;
-      this.lstJobs.View = System.Windows.Forms.View.Details;
-      // 
-      // columnJobId
-      // 
-      this.columnJobId.Text = "Job Id";
-      this.columnJobId.Width = 120;
-      // 
-      // columnExecutionTime
-      // 
-      this.columnExecutionTime.Text = "Execution Time";
-      this.columnExecutionTime.Width = 120;
-      // 
-      // JobsView
-      // 
-      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
-      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.lstJobs);
-      this.Name = "JobsView";
-      this.Size = new System.Drawing.Size(386, 170);
-      this.ResumeLayout(false);
-
-    }
-
-    #endregion
-
-    private System.Windows.Forms.ListView lstJobs;
-    private System.Windows.Forms.ColumnHeader columnJobId;
-    private System.Windows.Forms.ColumnHeader columnExecutionTime;
-  }
-}
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/JobsView.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/JobsView.cs	(revision 6833)
+++ 	(revision )
@@ -1,81 +1,0 @@
-﻿#region License Information
-/* HeuristicLab
- * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
- *
- * This file is part of HeuristicLab.
- *
- * HeuristicLab is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * HeuristicLab is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
- */
-#endregion
-
-using System;
-using System.Windows.Forms;
-using HeuristicLab.Core.Views;
-using HeuristicLab.MainForm;
-
-namespace HeuristicLab.Clients.Hive.SlaveCore.Views {
-  [View("Jobs View")]
-  [Content(typeof(SlaveItem), IsDefaultView = false)]
-  public partial class JobsView : ItemView {
-    public new SlaveItem Content {
-      get { return (SlaveItem)base.Content; }
-      set { base.Content = value; }
-    }
-
-    public JobsView() {
-      InitializeComponent();
-    }
-
-    #region Register Content Events
-    protected override void DeregisterContentEvents() {
-      Content.SlaveStatusChanged -= new EventHandler<Common.EventArgs<StatusCommons>>(Content_SlaveStatusChanged);
-      base.DeregisterContentEvents();
-    }
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.SlaveStatusChanged += new EventHandler<Common.EventArgs<StatusCommons>>(Content_SlaveStatusChanged);
-    }
-    #endregion
-
-    protected override void OnContentChanged() {
-      base.OnContentChanged();
-    }
-
-    protected override void SetEnabledStateOfControls() {
-      base.SetEnabledStateOfControls();
-    }
-
-    #region Event Handlers
-    void Content_SlaveStatusChanged(object sender, Common.EventArgs<StatusCommons> e) {
-      if (InvokeRequired) {
-        Action<object, Common.EventArgs<StatusCommons>> action = new Action<object, Common.EventArgs<StatusCommons>>(Content_SlaveStatusChanged);
-        Invoke(action, sender, e);
-      } else {
-        lstJobs.Items.Clear();
-        foreach (TaskStatus job in e.Value.Jobs) {
-          ListViewItem item = new ListViewItem();
-          item.Text = job.TaskId.ToString();
-          item.SubItems.Add(job.ExecutionTime.ToString());
-          lstJobs.Items.Add(item);
-        }
-        if (e.Value.Jobs.Count == 0) {
-          lstJobs.AutoResizeColumns(ColumnHeaderAutoResizeStyle.None);
-        } else {
-          lstJobs.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
-        }
-      }
-    }
-    #endregion
-  }
-}
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/JobsView.resx
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/JobsView.resx	(revision 6833)
+++ 	(revision )
@@ -1,120 +1,0 @@
-﻿<?xml version="1.0" encoding="utf-8"?>
-<root>
-  <!-- 
-    Microsoft ResX Schema 
-    
-    Version 2.0
-    
-    The primary goals of this format is to allow a simple XML format 
-    that is mostly human readable. The generation and parsing of the 
-    various data types are done through the TypeConverter classes 
-    associated with the data types.
-    
-    Example:
-    
-    ... ado.net/XML headers & schema ...
-    <resheader name="resmimetype">text/microsoft-resx</resheader>
-    <resheader name="version">2.0</resheader>
-    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
-    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
-    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
-    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
-    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
-        <value>[base64 mime encoded serialized .NET Framework object]</value>
-    </data>
-    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
-        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
-        <comment>This is a comment</comment>
-    </data>
-                
-    There are any number of "resheader" rows that contain simple 
-    name/value pairs.
-    
-    Each data row contains a name, and value. The row also contains a 
-    type or mimetype. Type corresponds to a .NET class that support 
-    text/value conversion through the TypeConverter architecture. 
-    Classes that don't support this are serialized and stored with the 
-    mimetype set.
-    
-    The mimetype is used for serialized objects, and tells the 
-    ResXResourceReader how to depersist the object. This is currently not 
-    extensible. For a given mimetype the value must be set accordingly:
-    
-    Note - application/x-microsoft.net.object.binary.base64 is the format 
-    that the ResXResourceWriter will generate, however the reader can 
-    read any of the formats listed below.
-    
-    mimetype: application/x-microsoft.net.object.binary.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
-            : and then encoded with base64 encoding.
-    
-    mimetype: application/x-microsoft.net.object.soap.base64
-    value   : The object must be serialized with 
-            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
-            : and then encoded with base64 encoding.
-
-    mimetype: application/x-microsoft.net.object.bytearray.base64
-    value   : The object must be serialized into a byte array 
-            : using a System.ComponentModel.TypeConverter
-            : and then encoded with base64 encoding.
-    -->
-  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
-    <xsd:element name="root" msdata:IsDataSet="true">
-      <xsd:complexType>
-        <xsd:choice maxOccurs="unbounded">
-          <xsd:element name="metadata">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" />
-              </xsd:sequence>
-              <xsd:attribute name="name" use="required" type="xsd:string" />
-              <xsd:attribute name="type" type="xsd:string" />
-              <xsd:attribute name="mimetype" type="xsd:string" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="assembly">
-            <xsd:complexType>
-              <xsd:attribute name="alias" type="xsd:string" />
-              <xsd:attribute name="name" type="xsd:string" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="data">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
-              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
-              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
-              <xsd:attribute ref="xml:space" />
-            </xsd:complexType>
-          </xsd:element>
-          <xsd:element name="resheader">
-            <xsd:complexType>
-              <xsd:sequence>
-                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
-              </xsd:sequence>
-              <xsd:attribute name="name" type="xsd:string" use="required" />
-            </xsd:complexType>
-          </xsd:element>
-        </xsd:choice>
-      </xsd:complexType>
-    </xsd:element>
-  </xsd:schema>
-  <resheader name="resmimetype">
-    <value>text/microsoft-resx</value>
-  </resheader>
-  <resheader name="version">
-    <value>2.0</value>
-  </resheader>
-  <resheader name="reader">
-    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-  <resheader name="writer">
-    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
-  </resheader>
-</root>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveStats.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveStats.Designer.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveStats.Designer.cs	(revision 6834)
@@ -45,87 +45,104 @@
     /// </summary>
     private void InitializeComponent() {
-      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea7 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
-      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel13 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
-      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel14 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
-      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel15 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
-      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel16 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
-      System.Windows.Forms.DataVisualization.Charting.Legend legend7 = new System.Windows.Forms.DataVisualization.Charting.Legend();
-      System.Windows.Forms.DataVisualization.Charting.Series series19 = new System.Windows.Forms.DataVisualization.Charting.Series();
-      System.Windows.Forms.DataVisualization.Charting.Series series20 = new System.Windows.Forms.DataVisualization.Charting.Series();
-      System.Windows.Forms.DataVisualization.Charting.Series series21 = new System.Windows.Forms.DataVisualization.Charting.Series();
-      System.Windows.Forms.DataVisualization.Charting.Series series22 = new System.Windows.Forms.DataVisualization.Charting.Series();
-      System.Windows.Forms.DataVisualization.Charting.Series series23 = new System.Windows.Forms.DataVisualization.Charting.Series();
-      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea8 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
-      System.Windows.Forms.DataVisualization.Charting.Legend legend8 = new System.Windows.Forms.DataVisualization.Charting.Legend();
-      System.Windows.Forms.DataVisualization.Charting.Series series24 = new System.Windows.Forms.DataVisualization.Charting.Series();
-      this.jobChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
+      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel1 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
+      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel2 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
+      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel3 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
+      System.Windows.Forms.DataVisualization.Charting.CustomLabel customLabel4 = new System.Windows.Forms.DataVisualization.Charting.CustomLabel();
+      System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+      System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series();
+      System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series();
+      System.Windows.Forms.DataVisualization.Charting.Series series3 = new System.Windows.Forms.DataVisualization.Charting.Series();
+      System.Windows.Forms.DataVisualization.Charting.Series series4 = new System.Windows.Forms.DataVisualization.Charting.Series();
+      System.Windows.Forms.DataVisualization.Charting.Series series5 = new System.Windows.Forms.DataVisualization.Charting.Series();
+      System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea();
+      System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend();
+      System.Windows.Forms.DataVisualization.Charting.Series series6 = new System.Windows.Forms.DataVisualization.Charting.Series();
+      this.taskChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
       this.coresChart = new System.Windows.Forms.DataVisualization.Charting.Chart();
       this.label1 = new System.Windows.Forms.Label();
       this.txtSlaveState = new System.Windows.Forms.TextBox();
-      ((System.ComponentModel.ISupportInitialize)(this.jobChart)).BeginInit();
+      this.mainSplitContainer = new System.Windows.Forms.SplitContainer();
+      this.coresGroupBox = new System.Windows.Forms.GroupBox();
+      this.groupBoxTaskChart = new System.Windows.Forms.GroupBox();
+      ((System.ComponentModel.ISupportInitialize)(this.taskChart)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.coresChart)).BeginInit();
+      ((System.ComponentModel.ISupportInitialize)(this.mainSplitContainer)).BeginInit();
+      this.mainSplitContainer.Panel1.SuspendLayout();
+      this.mainSplitContainer.Panel2.SuspendLayout();
+      this.mainSplitContainer.SuspendLayout();
+      this.coresGroupBox.SuspendLayout();
+      this.groupBoxTaskChart.SuspendLayout();
       this.SuspendLayout();
       // 
-      // jobChart
-      // 
-      this.jobChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.jobChart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None;
-      customLabel13.Text = "Jobs";
-      customLabel14.Text = "Aborted Jobs";
-      customLabel15.Text = "Finished Jobs";
-      customLabel16.Text = "Fetched Jobs";
-      chartArea7.AxisX.CustomLabels.Add(customLabel13);
-      chartArea7.AxisX.CustomLabels.Add(customLabel14);
-      chartArea7.AxisX.CustomLabels.Add(customLabel15);
-      chartArea7.AxisX.CustomLabels.Add(customLabel16);
-      chartArea7.AxisX.Enabled = System.Windows.Forms.DataVisualization.Charting.AxisEnabled.True;
-      chartArea7.AxisX.MajorGrid.Enabled = false;
-      chartArea7.AxisX.MajorTickMark.Enabled = false;
-      chartArea7.Name = "ChartArea1";
-      this.jobChart.ChartAreas.Add(chartArea7);
-      legend7.Name = "Legend1";
-      this.jobChart.Legends.Add(legend7);
-      this.jobChart.Location = new System.Drawing.Point(3, 121);
-      this.jobChart.Name = "jobChart";
-      series19.ChartArea = "ChartArea1";
-      series19.Legend = "Legend1";
-      series19.Name = "Series1";
-      series20.ChartArea = "ChartArea1";
-      series20.Legend = "Legend1";
-      series20.Name = "Series2";
-      series21.ChartArea = "ChartArea1";
-      series21.Legend = "Legend1";
-      series21.Name = "Series3";
-      series22.ChartArea = "ChartArea1";
-      series22.Legend = "Legend1";
-      series22.Name = "Series4";
-      series23.ChartArea = "ChartArea1";
-      series23.Legend = "Legend1";
-      series23.Name = "Series5";
-      this.jobChart.Series.Add(series19);
-      this.jobChart.Series.Add(series20);
-      this.jobChart.Series.Add(series21);
-      this.jobChart.Series.Add(series22);
-      this.jobChart.Series.Add(series23);
-      this.jobChart.Size = new System.Drawing.Size(412, 189);
-      this.jobChart.TabIndex = 7;
+      // taskChart
+      // 
+      this.taskChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      customLabel1.Text = "Jobs";
+      customLabel2.Text = "Aborted Jobs";
+      customLabel3.Text = "Finished Jobs";
+      customLabel4.Text = "Fetched Jobs";
+      chartArea1.AxisX.CustomLabels.Add(customLabel1);
+      chartArea1.AxisX.CustomLabels.Add(customLabel2);
+      chartArea1.AxisX.CustomLabels.Add(customLabel3);
+      chartArea1.AxisX.CustomLabels.Add(customLabel4);
+      chartArea1.AxisX.Enabled = System.Windows.Forms.DataVisualization.Charting.AxisEnabled.True;
+      chartArea1.AxisX.MajorGrid.Enabled = false;
+      chartArea1.AxisX.MajorTickMark.Enabled = false;
+      chartArea1.AxisY.Enabled = System.Windows.Forms.DataVisualization.Charting.AxisEnabled.True;
+      chartArea1.AxisY.Title = "Number of...";
+      chartArea1.InnerPlotPosition.Auto = false;
+      chartArea1.InnerPlotPosition.Height = 97F;
+      chartArea1.InnerPlotPosition.Width = 97F;
+      chartArea1.InnerPlotPosition.X = 3F;
+      chartArea1.InnerPlotPosition.Y = 3F;
+      chartArea1.Name = "ChartArea1";
+      this.taskChart.ChartAreas.Add(chartArea1);
+      legend1.Name = "Legend1";
+      this.taskChart.Legends.Add(legend1);
+      this.taskChart.Location = new System.Drawing.Point(6, 19);
+      this.taskChart.Name = "taskChart";
+      series1.ChartArea = "ChartArea1";
+      series1.Legend = "Legend1";
+      series1.Name = "Series1";
+      series2.ChartArea = "ChartArea1";
+      series2.Legend = "Legend1";
+      series2.Name = "Series2";
+      series3.ChartArea = "ChartArea1";
+      series3.Legend = "Legend1";
+      series3.Name = "Series3";
+      series4.ChartArea = "ChartArea1";
+      series4.Legend = "Legend1";
+      series4.Name = "Series4";
+      series5.ChartArea = "ChartArea1";
+      series5.Legend = "Legend1";
+      series5.Name = "Series5";
+      this.taskChart.Series.Add(series1);
+      this.taskChart.Series.Add(series2);
+      this.taskChart.Series.Add(series3);
+      this.taskChart.Series.Add(series4);
+      this.taskChart.Series.Add(series5);
+      this.taskChart.Size = new System.Drawing.Size(406, 178);
+      this.taskChart.TabIndex = 7;
       // 
       // coresChart
       // 
-      this.coresChart.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      chartArea8.Name = "ChartArea1";
-      this.coresChart.ChartAreas.Add(chartArea8);
-      legend8.Name = "Legend1";
-      this.coresChart.Legends.Add(legend8);
-      this.coresChart.Location = new System.Drawing.Point(186, 3);
+      this.coresChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      chartArea2.Name = "ChartArea1";
+      this.coresChart.ChartAreas.Add(chartArea2);
+      legend2.Name = "Legend1";
+      this.coresChart.Legends.Add(legend2);
+      this.coresChart.Location = new System.Drawing.Point(6, 19);
       this.coresChart.Name = "coresChart";
-      series24.ChartArea = "ChartArea1";
-      series24.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
-      series24.Legend = "Legend1";
-      series24.Name = "Series1";
-      this.coresChart.Series.Add(series24);
-      this.coresChart.Size = new System.Drawing.Size(229, 80);
+      series6.ChartArea = "ChartArea1";
+      series6.ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.Pie;
+      series6.Legend = "Legend1";
+      series6.Name = "Series1";
+      this.coresChart.Series.Add(series6);
+      this.coresChart.Size = new System.Drawing.Size(187, 72);
       this.coresChart.TabIndex = 9;
       // 
@@ -133,5 +150,5 @@
       // 
       this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(7, 5);
+      this.label1.Location = new System.Drawing.Point(5, 6);
       this.label1.Name = "label1";
       this.label1.Size = new System.Drawing.Size(65, 13);
@@ -142,23 +159,73 @@
       // 
       this.txtSlaveState.Enabled = false;
-      this.txtSlaveState.Location = new System.Drawing.Point(78, 2);
+      this.txtSlaveState.Location = new System.Drawing.Point(76, 3);
       this.txtSlaveState.Name = "txtSlaveState";
       this.txtSlaveState.Size = new System.Drawing.Size(100, 20);
       this.txtSlaveState.TabIndex = 15;
       // 
+      // mainSplitContainer
+      // 
+      this.mainSplitContainer.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.mainSplitContainer.Location = new System.Drawing.Point(3, 3);
+      this.mainSplitContainer.Name = "mainSplitContainer";
+      this.mainSplitContainer.Orientation = System.Windows.Forms.Orientation.Horizontal;
+      // 
+      // mainSplitContainer.Panel1
+      // 
+      this.mainSplitContainer.Panel1.Controls.Add(this.coresGroupBox);
+      this.mainSplitContainer.Panel1.Controls.Add(this.txtSlaveState);
+      this.mainSplitContainer.Panel1.Controls.Add(this.label1);
+      // 
+      // mainSplitContainer.Panel2
+      // 
+      this.mainSplitContainer.Panel2.Controls.Add(this.groupBoxTaskChart);
+      this.mainSplitContainer.Size = new System.Drawing.Size(424, 319);
+      this.mainSplitContainer.SplitterDistance = 106;
+      this.mainSplitContainer.TabIndex = 16;
+      // 
+      // coresGroupBox
+      // 
+      this.coresGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.coresGroupBox.Controls.Add(this.coresChart);
+      this.coresGroupBox.Location = new System.Drawing.Point(216, 6);
+      this.coresGroupBox.Name = "coresGroupBox";
+      this.coresGroupBox.Size = new System.Drawing.Size(199, 97);
+      this.coresGroupBox.TabIndex = 0;
+      this.coresGroupBox.TabStop = false;
+      this.coresGroupBox.Text = "Cores";
+      // 
+      // groupBoxTaskChart
+      // 
+      this.groupBoxTaskChart.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.groupBoxTaskChart.Controls.Add(this.taskChart);
+      this.groupBoxTaskChart.Location = new System.Drawing.Point(3, 3);
+      this.groupBoxTaskChart.Name = "groupBoxTaskChart";
+      this.groupBoxTaskChart.Size = new System.Drawing.Size(418, 203);
+      this.groupBoxTaskChart.TabIndex = 0;
+      this.groupBoxTaskChart.TabStop = false;
+      this.groupBoxTaskChart.Text = "Tasks";
+      // 
       // SlaveStats
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.txtSlaveState);
-      this.Controls.Add(this.label1);
-      this.Controls.Add(this.coresChart);
-      this.Controls.Add(this.jobChart);
+      this.Controls.Add(this.mainSplitContainer);
       this.Name = "SlaveStats";
-      this.Size = new System.Drawing.Size(418, 313);
-      ((System.ComponentModel.ISupportInitialize)(this.jobChart)).EndInit();
+      this.Size = new System.Drawing.Size(430, 325);
+      ((System.ComponentModel.ISupportInitialize)(this.taskChart)).EndInit();
       ((System.ComponentModel.ISupportInitialize)(this.coresChart)).EndInit();
+      this.mainSplitContainer.Panel1.ResumeLayout(false);
+      this.mainSplitContainer.Panel1.PerformLayout();
+      this.mainSplitContainer.Panel2.ResumeLayout(false);
+      ((System.ComponentModel.ISupportInitialize)(this.mainSplitContainer)).EndInit();
+      this.mainSplitContainer.ResumeLayout(false);
+      this.coresGroupBox.ResumeLayout(false);
+      this.groupBoxTaskChart.ResumeLayout(false);
       this.ResumeLayout(false);
-      this.PerformLayout();
 
     }
@@ -166,8 +233,11 @@
     #endregion
 
-    private System.Windows.Forms.DataVisualization.Charting.Chart jobChart;
+    private System.Windows.Forms.DataVisualization.Charting.Chart taskChart;
     private System.Windows.Forms.DataVisualization.Charting.Chart coresChart;
     private System.Windows.Forms.Label label1;
     private System.Windows.Forms.TextBox txtSlaveState;
+    private System.Windows.Forms.SplitContainer mainSplitContainer;
+    private System.Windows.Forms.GroupBox groupBoxTaskChart;
+    private System.Windows.Forms.GroupBox coresGroupBox;
   }
 }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveStats.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveStats.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveStats.cs	(revision 6834)
@@ -101,9 +101,9 @@
         Invoke(new Action<StatusCommons>(RenderJobChart), status);
       } else {
-        jobChart.Series[0].Points.Clear();
-        jobChart.Series[1].Points.Clear();
-        jobChart.Series[2].Points.Clear();
-        jobChart.Series[3].Points.Clear();
-        jobChart.Series[4].Points.Clear();
+        taskChart.Series[0].Points.Clear();
+        taskChart.Series[1].Points.Clear();
+        taskChart.Series[2].Points.Clear();
+        taskChart.Series[3].Points.Clear();
+        taskChart.Series[4].Points.Clear();
 
 
@@ -114,38 +114,38 @@
         DataPoint pJobsFailed = new DataPoint(5, status.JobsFailed);
 
-        pJobs.LegendText = "Current jobs: " + status.Jobs.Count;
+        pJobs.LegendText = "Current tasks: " + status.Jobs.Count;
         pJobs.Color = System.Drawing.Color.Yellow;
         pJobs.ToolTip = pJobs.LegendText;
-        jobChart.Series[0].Color = System.Drawing.Color.Yellow;
-        jobChart.Series[0].LegendText = pJobs.LegendText;
-        jobChart.Series[0].Points.Add(pJobs);
+        taskChart.Series[0].Color = System.Drawing.Color.Yellow;
+        taskChart.Series[0].LegendText = pJobs.LegendText;
+        taskChart.Series[0].Points.Add(pJobs);
 
-        pJobsAborted.LegendText = "Aborted jobs: " + status.JobsAborted;
+        pJobsAborted.LegendText = "Aborted tasks: " + status.JobsAborted;
         pJobsAborted.Color = System.Drawing.Color.Orange;
         pJobsAborted.ToolTip = pJobsAborted.LegendText;
-        jobChart.Series[1].Color = System.Drawing.Color.Orange;
-        jobChart.Series[1].LegendText = pJobsAborted.LegendText;
-        jobChart.Series[1].Points.Add(pJobsAborted);
+        taskChart.Series[1].Color = System.Drawing.Color.Orange;
+        taskChart.Series[1].LegendText = pJobsAborted.LegendText;
+        taskChart.Series[1].Points.Add(pJobsAborted);
 
-        pJobsDone.LegendText = "Finished jobs: " + status.JobsFinished;
+        pJobsDone.LegendText = "Finished tasks: " + status.JobsFinished;
         pJobsDone.Color = System.Drawing.Color.Green;
         pJobsDone.ToolTip = pJobsDone.LegendText;
-        jobChart.Series[2].Color = System.Drawing.Color.Green;
-        jobChart.Series[2].LegendText = pJobsDone.LegendText;
-        jobChart.Series[2].Points.Add(pJobsDone);
+        taskChart.Series[2].Color = System.Drawing.Color.Green;
+        taskChart.Series[2].LegendText = pJobsDone.LegendText;
+        taskChart.Series[2].Points.Add(pJobsDone);
 
-        pJobsFetched.LegendText = "Fetched jobs: " + status.JobsFetched;
+        pJobsFetched.LegendText = "Fetched tasks: " + status.JobsFetched;
         pJobsFetched.ToolTip = pJobsFetched.LegendText;
         pJobsFetched.Color = System.Drawing.Color.Blue;
-        jobChart.Series[3].Color = System.Drawing.Color.Blue;
-        jobChart.Series[3].LegendText = pJobsFetched.LegendText;
-        jobChart.Series[3].Points.Add(pJobsFetched);
+        taskChart.Series[3].Color = System.Drawing.Color.Blue;
+        taskChart.Series[3].LegendText = pJobsFetched.LegendText;
+        taskChart.Series[3].Points.Add(pJobsFetched);
 
-        pJobsFailed.LegendText = "Failed jobs: " + status.JobsFailed;
+        pJobsFailed.LegendText = "Failed tasks: " + status.JobsFailed;
         pJobsFailed.ToolTip = pJobsFailed.LegendText;
         pJobsFailed.Color = System.Drawing.Color.Red;
-        jobChart.Series[4].Color = System.Drawing.Color.Red;
-        jobChart.Series[4].LegendText = pJobsFailed.LegendText;
-        jobChart.Series[4].Points.Add(pJobsFailed);
+        taskChart.Series[4].Color = System.Drawing.Color.Red;
+        taskChart.Series[4].LegendText = pJobsFailed.LegendText;
+        taskChart.Series[4].Points.Add(pJobsFailed);
       }
     }
@@ -161,7 +161,7 @@
         coresChart.Series[0].Points.Clear();
 
-        pFreeCores.LegendText = "Free cores: " + statusCommons.FreeCores;
+        pFreeCores.LegendText = "Free: " + statusCommons.FreeCores;
         pFreeCores.Color = System.Drawing.Color.Green;
-        pUsedCores.LegendText = "Used cores: " + usedCores;
+        pUsedCores.LegendText = "Used: " + usedCores;
         pUsedCores.Color = System.Drawing.Color.Red;
 
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveView.Designer.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/SlaveView.Designer.cs	(revision 6834)
@@ -45,7 +45,7 @@
     /// </summary>
     private void InitializeComponent() {
+      this.splitContainer = new System.Windows.Forms.SplitContainer();
       this.slaveStats = new HeuristicLab.Clients.Hive.SlaveCore.Views.SlaveStats();
-      this.splitContainer = new System.Windows.Forms.SplitContainer();
-      this.jobsView = new HeuristicLab.Clients.Hive.SlaveCore.Views.JobsView();
+      this.jobsView = new HeuristicLab.Clients.Hive.SlaveCore.Views.TaskView();
       ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit();
       this.splitContainer.Panel1.SuspendLayout();
@@ -53,17 +53,4 @@
       this.splitContainer.SuspendLayout();
       this.SuspendLayout();
-      // 
-      // slaveStats
-      // 
-      this.slaveStats.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
-                  | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.slaveStats.Caption = "HeuristicLab Slave View";
-      this.slaveStats.Content = null;
-      this.slaveStats.Location = new System.Drawing.Point(3, 3);
-      this.slaveStats.Name = "slaveStats";
-      this.slaveStats.ReadOnly = false;
-      this.slaveStats.Size = new System.Drawing.Size(508, 194);
-      this.slaveStats.TabIndex = 0;
       // 
       // splitContainer
@@ -86,4 +73,17 @@
       this.splitContainer.SplitterDistance = 200;
       this.splitContainer.TabIndex = 2;
+      // 
+      // slaveStats
+      // 
+      this.slaveStats.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.slaveStats.Caption = "HeuristicLab Slave View";
+      this.slaveStats.Content = null;
+      this.slaveStats.Location = new System.Drawing.Point(3, 3);
+      this.slaveStats.Name = "slaveStats";
+      this.slaveStats.ReadOnly = false;
+      this.slaveStats.Size = new System.Drawing.Size(508, 194);
+      this.slaveStats.TabIndex = 0;
       // 
       // jobsView
@@ -119,5 +119,5 @@
     private SlaveStats slaveStats;
     private System.Windows.Forms.SplitContainer splitContainer;
-    private JobsView jobsView;
+    private TaskView jobsView;
 
   }
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.Designer.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.Designer.cs	(revision 6834)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.Designer.cs	(revision 6834)
@@ -0,0 +1,94 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+namespace HeuristicLab.Clients.Hive.SlaveCore.Views {
+  partial class TaskView {
+    /// <summary> 
+    /// Required designer variable.
+    /// </summary>
+    private System.ComponentModel.IContainer components = null;
+
+    /// <summary> 
+    /// Clean up any resources being used.
+    /// </summary>
+    /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
+    protected override void Dispose(bool disposing) {
+      if (disposing && (components != null)) {
+        components.Dispose();
+      }
+      base.Dispose(disposing);
+    }
+
+    #region Component Designer generated code
+
+    /// <summary> 
+    /// Required method for Designer support - do not modify 
+    /// the contents of this method with the code editor.
+    /// </summary>
+    private void InitializeComponent() {
+      this.lstJobs = new System.Windows.Forms.ListView();
+      this.columnTaskId = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+      this.columnExecutionTime = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader()));
+      this.SuspendLayout();
+      // 
+      // lstJobs
+      // 
+      this.lstJobs.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
+                  | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.lstJobs.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] {
+            this.columnTaskId,
+            this.columnExecutionTime});
+      this.lstJobs.Location = new System.Drawing.Point(3, 3);
+      this.lstJobs.Name = "lstJobs";
+      this.lstJobs.Size = new System.Drawing.Size(380, 164);
+      this.lstJobs.TabIndex = 0;
+      this.lstJobs.UseCompatibleStateImageBehavior = false;
+      this.lstJobs.View = System.Windows.Forms.View.Details;
+      // 
+      // columnTaskId
+      // 
+      this.columnTaskId.Text = "Task Id";
+      this.columnTaskId.Width = 120;
+      // 
+      // columnExecutionTime
+      // 
+      this.columnExecutionTime.Text = "Execution Time";
+      this.columnExecutionTime.Width = 120;
+      // 
+      // JobsView
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.lstJobs);
+      this.Name = "JobsView";
+      this.Size = new System.Drawing.Size(386, 170);
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.ListView lstJobs;
+    private System.Windows.Forms.ColumnHeader columnTaskId;
+    private System.Windows.Forms.ColumnHeader columnExecutionTime;
+  }
+}
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.cs	(revision 6834)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.cs	(revision 6834)
@@ -0,0 +1,81 @@
+﻿#region License Information
+/* HeuristicLab
+ * Copyright (C) 2002-2011 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
+ *
+ * This file is part of HeuristicLab.
+ *
+ * HeuristicLab is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * HeuristicLab is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
+ */
+#endregion
+
+using System;
+using System.Windows.Forms;
+using HeuristicLab.Core.Views;
+using HeuristicLab.MainForm;
+
+namespace HeuristicLab.Clients.Hive.SlaveCore.Views {
+  [View("Jobs View")]
+  [Content(typeof(SlaveItem), IsDefaultView = false)]
+  public partial class TaskView : ItemView {
+    public new SlaveItem Content {
+      get { return (SlaveItem)base.Content; }
+      set { base.Content = value; }
+    }
+
+    public TaskView() {
+      InitializeComponent();
+    }
+
+    #region Register Content Events
+    protected override void DeregisterContentEvents() {
+      Content.SlaveStatusChanged -= new EventHandler<Common.EventArgs<StatusCommons>>(Content_SlaveStatusChanged);
+      base.DeregisterContentEvents();
+    }
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.SlaveStatusChanged += new EventHandler<Common.EventArgs<StatusCommons>>(Content_SlaveStatusChanged);
+    }
+    #endregion
+
+    protected override void OnContentChanged() {
+      base.OnContentChanged();
+    }
+
+    protected override void SetEnabledStateOfControls() {
+      base.SetEnabledStateOfControls();
+    }
+
+    #region Event Handlers
+    void Content_SlaveStatusChanged(object sender, Common.EventArgs<StatusCommons> e) {
+      if (InvokeRequired) {
+        Action<object, Common.EventArgs<StatusCommons>> action = new Action<object, Common.EventArgs<StatusCommons>>(Content_SlaveStatusChanged);
+        Invoke(action, sender, e);
+      } else {
+        lstJobs.Items.Clear();
+        foreach (TaskStatus job in e.Value.Jobs) {
+          ListViewItem item = new ListViewItem();
+          item.Text = job.TaskId.ToString();
+          item.SubItems.Add(job.ExecutionTime.ToString());
+          lstJobs.Items.Add(item);
+        }
+        if (e.Value.Jobs.Count == 0) {
+          lstJobs.AutoResizeColumns(ColumnHeaderAutoResizeStyle.None);
+        } else {
+          lstJobs.AutoResizeColumns(ColumnHeaderAutoResizeStyle.ColumnContent);
+        }
+      }
+    }
+    #endregion
+  }
+}
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.resx
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.resx	(revision 6834)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Slave.Views/3.3/TaskView.resx	(revision 6834)
@@ -0,0 +1,120 @@
+﻿<?xml version="1.0" encoding="utf-8"?>
+<root>
+  <!-- 
+    Microsoft ResX Schema 
+    
+    Version 2.0
+    
+    The primary goals of this format is to allow a simple XML format 
+    that is mostly human readable. The generation and parsing of the 
+    various data types are done through the TypeConverter classes 
+    associated with the data types.
+    
+    Example:
+    
+    ... ado.net/XML headers & schema ...
+    <resheader name="resmimetype">text/microsoft-resx</resheader>
+    <resheader name="version">2.0</resheader>
+    <resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
+    <resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
+    <data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
+    <data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
+    <data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
+        <value>[base64 mime encoded serialized .NET Framework object]</value>
+    </data>
+    <data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+        <value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
+        <comment>This is a comment</comment>
+    </data>
+                
+    There are any number of "resheader" rows that contain simple 
+    name/value pairs.
+    
+    Each data row contains a name, and value. The row also contains a 
+    type or mimetype. Type corresponds to a .NET class that support 
+    text/value conversion through the TypeConverter architecture. 
+    Classes that don't support this are serialized and stored with the 
+    mimetype set.
+    
+    The mimetype is used for serialized objects, and tells the 
+    ResXResourceReader how to depersist the object. This is currently not 
+    extensible. For a given mimetype the value must be set accordingly:
+    
+    Note - application/x-microsoft.net.object.binary.base64 is the format 
+    that the ResXResourceWriter will generate, however the reader can 
+    read any of the formats listed below.
+    
+    mimetype: application/x-microsoft.net.object.binary.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
+            : and then encoded with base64 encoding.
+    
+    mimetype: application/x-microsoft.net.object.soap.base64
+    value   : The object must be serialized with 
+            : System.Runtime.Serialization.Formatters.Soap.SoapFormatter
+            : and then encoded with base64 encoding.
+
+    mimetype: application/x-microsoft.net.object.bytearray.base64
+    value   : The object must be serialized into a byte array 
+            : using a System.ComponentModel.TypeConverter
+            : and then encoded with base64 encoding.
+    -->
+  <xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
+    <xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
+    <xsd:element name="root" msdata:IsDataSet="true">
+      <xsd:complexType>
+        <xsd:choice maxOccurs="unbounded">
+          <xsd:element name="metadata">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" />
+              </xsd:sequence>
+              <xsd:attribute name="name" use="required" type="xsd:string" />
+              <xsd:attribute name="type" type="xsd:string" />
+              <xsd:attribute name="mimetype" type="xsd:string" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="assembly">
+            <xsd:complexType>
+              <xsd:attribute name="alias" type="xsd:string" />
+              <xsd:attribute name="name" type="xsd:string" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="data">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+                <xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
+              <xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
+              <xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
+              <xsd:attribute ref="xml:space" />
+            </xsd:complexType>
+          </xsd:element>
+          <xsd:element name="resheader">
+            <xsd:complexType>
+              <xsd:sequence>
+                <xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
+              </xsd:sequence>
+              <xsd:attribute name="name" type="xsd:string" use="required" />
+            </xsd:complexType>
+          </xsd:element>
+        </xsd:choice>
+      </xsd:complexType>
+    </xsd:element>
+  </xsd:schema>
+  <resheader name="resmimetype">
+    <value>text/microsoft-resx</value>
+  </resheader>
+  <resheader name="version">
+    <value>2.0</value>
+  </resheader>
+  <resheader name="reader">
+    <value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+  <resheader name="writer">
+    <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+  </resheader>
+</root>
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.3/TreeView/ItemTreeView.cs	(revision 6834)
@@ -219,6 +219,8 @@
       if (e.Button == System.Windows.Forms.MouseButtons.Left) {
         // enables deselection of treeNodes
-        if (treeView.SelectedNode == null)
+        if (treeView.SelectedNode == null) {
           return;
+        }
+        detailsViewHost.Content = null;
         treeView.SelectedNode = null;
         SetEnabledStateOfControls();
Index: branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs
===================================================================
--- branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs	(revision 6833)
+++ branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.3/RefreshableJob.cs	(revision 6834)
@@ -63,5 +63,5 @@
           hiveTasks = value;
           if (hiveTasks != null) RegisterHiveJobsEvents();
-          OnHiveJobsChanged();
+          OnHiveTasksChanged();
         }
       }
@@ -324,4 +324,5 @@
       return null;
     }
+
     private void UpdateStatistics() {
       var jobs = this.GetAllHiveTasks();
@@ -350,5 +351,5 @@
     #endregion
 
-    #region Task Events
+    #region Job Events
     private void RegisterJobEvents() {
       job.ToStringChanged += new EventHandler(OnToStringChanged);
@@ -470,35 +471,35 @@
     #region HiveTasks Events
     private void RegisterHiveJobsEvents() {
-      this.hiveTasks.ItemsAdded += new CollectionItemsChangedEventHandler<HiveTask>(hiveJobs_ItemsAdded);
-      this.hiveTasks.ItemsRemoved += new CollectionItemsChangedEventHandler<HiveTask>(hiveJobs_ItemsRemoved);
-      this.hiveTasks.CollectionReset += new CollectionItemsChangedEventHandler<HiveTask>(hiveJobs_CollectionReset);
+      this.hiveTasks.ItemsAdded += new CollectionItemsChangedEventHandler<HiveTask>(hivetasks_ItemsAdded);
+      this.hiveTasks.ItemsRemoved += new CollectionItemsChangedEventHandler<HiveTask>(hiveTasks_ItemsRemoved);
+      this.hiveTasks.CollectionReset += new CollectionItemsChangedEventHandler<HiveTask>(hiveTasks_CollectionReset);
     }
 
     private void DeregisterHiveJobsEvents() {
-      this.hiveTasks.ItemsAdded -= new CollectionItemsChangedEventHandler<HiveTask>(hiveJobs_ItemsAdded);
-      this.hiveTasks.ItemsRemoved -= new CollectionItemsChangedEventHandler<HiveTask>(hiveJobs_ItemsRemoved);
-      this.hiveTasks.CollectionReset -= new CollectionItemsChangedEventHandler<HiveTask>(hiveJobs_CollectionReset);
-    }
-
-    private void hiveJobs_CollectionReset(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
+      this.hiveTasks.ItemsAdded -= new CollectionItemsChangedEventHandler<HiveTask>(hivetasks_ItemsAdded);
+      this.hiveTasks.ItemsRemoved -= new CollectionItemsChangedEventHandler<HiveTask>(hiveTasks_ItemsRemoved);
+      this.hiveTasks.CollectionReset -= new CollectionItemsChangedEventHandler<HiveTask>(hiveTasks_CollectionReset);
+    }
+
+    private void hiveTasks_CollectionReset(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
       foreach (var item in e.Items) {
         item.StateLogChanged -= new EventHandler(item_StateLogChanged);
       }
-      OnHiveJobsReset(e);
-    }
-
-    private void hiveJobs_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
+      OnHiveTasksReset(e);
+    }
+
+    private void hiveTasks_ItemsRemoved(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
       foreach (var item in e.Items) {
         item.StateLogChanged -= new EventHandler(item_StateLogChanged);
       }
-      OnHiveJobsRemoved(e);
-    }
-
-    private void hiveJobs_ItemsAdded(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
+      OnHiveTasksRemoved(e);
+    }
+
+    private void hivetasks_ItemsAdded(object sender, CollectionItemsChangedEventArgs<HiveTask> e) {
       foreach (var item in e.Items) {
         item.StateLogChanged += new EventHandler(item_StateLogChanged);
         item.IsControllable = this.IsControllable;
       }
-      OnHiveJobsAdded(e);
+      OnHiveTasksAdded(e);
     }
 
@@ -508,6 +509,6 @@
     #endregion
 
-    public event EventHandler HiveJobsChanged;
-    protected virtual void OnHiveJobsChanged() {
+    public event EventHandler HiveTasksChanged;
+    protected virtual void OnHiveTasksChanged() {
       if (jobResultPoller != null && jobResultPoller.IsPolling) {
         jobResultPoller.Stop();
@@ -519,5 +520,5 @@
       }
 
-      var handler = HiveJobsChanged;
+      var handler = HiveTasksChanged;
       if (handler != null) handler(this, EventArgs.Empty);
     }
@@ -535,19 +536,19 @@
     }
 
-    public event EventHandler<CollectionItemsChangedEventArgs<HiveTask>> HiveJobsAdded;
-    private void OnHiveJobsAdded(CollectionItemsChangedEventArgs<HiveTask> e) {
-      var handler = HiveJobsAdded;
+    public event EventHandler<CollectionItemsChangedEventArgs<HiveTask>> HiveTasksAdded;
+    private void OnHiveTasksAdded(CollectionItemsChangedEventArgs<HiveTask> e) {
+      var handler = HiveTasksAdded;
       if (handler != null) handler(this, e);
     }
 
-    public event EventHandler<CollectionItemsChangedEventArgs<HiveTask>> HiveJobsRemoved;
-    private void OnHiveJobsRemoved(CollectionItemsChangedEventArgs<HiveTask> e) {
-      var handler = HiveJobsRemoved;
+    public event EventHandler<CollectionItemsChangedEventArgs<HiveTask>> HiveTasksRemoved;
+    private void OnHiveTasksRemoved(CollectionItemsChangedEventArgs<HiveTask> e) {
+      var handler = HiveTasksRemoved;
       if (handler != null) handler(this, e);
     }
 
-    public event EventHandler<CollectionItemsChangedEventArgs<HiveTask>> HiveJobsReset;
-    private void OnHiveJobsReset(CollectionItemsChangedEventArgs<HiveTask> e) {
-      var handler = HiveJobsReset;
+    public event EventHandler<CollectionItemsChangedEventArgs<HiveTask>> HiveTasksReset;
+    private void OnHiveTasksReset(CollectionItemsChangedEventArgs<HiveTask> e) {
+      var handler = HiveTasksReset;
       if (handler != null) handler(this, e);
     }
