Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/ControlExtensions.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/ControlExtensions.cs	(revision 4121)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/ControlExtensions.cs	(revision 4121)
@@ -0,0 +1,17 @@
+﻿using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Hive.Experiment.Views {
+  public static class ControlExtensions {
+    public static void InvokeIfRequired(this Control c, Action<Control> action) {
+      if (c.InvokeRequired) {
+        c.Invoke((Action)(() => action(c)));
+      } else {
+        action(c);
+      }
+    }
+  }
+}
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj	(revision 4120)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLab.Hive.Experiment.Views-3.3.csproj	(revision 4121)
@@ -73,8 +73,6 @@
       <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Data-3.3.dll</HintPath>
     </Reference>
-    <Reference Include="HeuristicLab.DataAccess-3.3, Version=3.3.0.4091, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Hive.Experiment.Views-3.3, Version=3.3.0.4119, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
-    <Reference Include="HeuristicLab.Hive.Server.Console-3.3">
-      <HintPath>..\..\HeuristicLab.Hive.Server.Console\3.3\obj\Debug\HeuristicLab.Hive.Server.Console-3.3.dll</HintPath>
+    <Reference Include="HeuristicLab.DataAccess-3.3, Version=3.3.0.4091, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
     </Reference>
     <Reference Include="HeuristicLab.MainForm-3.3">
@@ -93,5 +91,7 @@
       <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.Optimization.Views-3.3.dll</HintPath>
     </Reference>
-    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
+    <Reference Include="HeuristicLab.Persistence-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+    </Reference>
     <Reference Include="HeuristicLab.PluginInfrastructure-3.3">
       <HintPath>..\..\..\..\..\..\..\..\..\Programme\HeuristicLab 3.3\HeuristicLab.PluginInfrastructure-3.3.dll</HintPath>
@@ -107,4 +107,5 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="ControlExtensions.cs" />
     <Compile Include="HeuristicLabHiveExperimentViewsPlugin.cs" />
     <Compile Include="HiveExperimentView.cs">
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs	(revision 4120)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/HeuristicLabHiveExperimentViewsPlugin.cs	(revision 4121)
@@ -28,9 +28,20 @@
   [Plugin("HeuristicLab.Hive.Experiment.Views", "3.3")]
   [PluginFile("HeuristicLab.Hive.Experiment.Views-3.3.dll", PluginFileType.Assembly)]
+  [PluginDependency("HeuristicLab.Collections", "3.3")]
   [PluginDependency("HeuristicLab.Common", "3.3")]
+  [PluginDependency("HeuristicLab.Common.Resources", "3.3")]
   [PluginDependency("HeuristicLab.Core", "3.3")]
   [PluginDependency("HeuristicLab.Core.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Data", "3.3")]
+  [PluginDependency("HeuristicLab.DataAccess", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.Contracts", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.Experiment", "3.3")]
+  [PluginDependency("HeuristicLab.Hive.JobBase", "3.3")]
   [PluginDependency("HeuristicLab.MainForm", "3.3")]
-  [PluginDependency("HeuristicLab.Hive.Experiment", "3.3")]
+  [PluginDependency("HeuristicLab.MainForm.WindowsForms", "3.3")]
+  [PluginDependency("HeuristicLab.Operators.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization", "3.3")]
+  [PluginDependency("HeuristicLab.Optimization.Views", "3.3")]
+  [PluginDependency("HeuristicLab.Persistence", "3.3")]
   public class HeuristicLabHiveExperimentViewsPlugin : PluginBase {
 
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemListView.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemListView.cs	(revision 4120)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemListView.cs	(revision 4121)
@@ -22,5 +22,5 @@
       InitializeComponent();
       itemsGroupBox.Text = "Jobs";
-      //this.ReadOnly = true;
+      this.viewHost.ReadOnly = true;
     }
 
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.Designer.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.Designer.cs	(revision 4120)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.Designer.cs	(revision 4121)
@@ -52,5 +52,8 @@
       this.dateCalculatedText = new System.Windows.Forms.TextBox();
       this.dateCalculatedLabel = new System.Windows.Forms.Label();
+      this.jobStatusGroupBox = new System.Windows.Forms.GroupBox();
+      this.percentageProgressBar = new System.Windows.Forms.ProgressBar();
       this.snapshotGroupBox.SuspendLayout();
+      this.jobStatusGroupBox.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -58,5 +61,5 @@
       // 
       this.stateLabel.AutoSize = true;
-      this.stateLabel.Location = new System.Drawing.Point(4, 4);
+      this.stateLabel.Location = new System.Drawing.Point(7, 19);
       this.stateLabel.Name = "stateLabel";
       this.stateLabel.Size = new System.Drawing.Size(35, 13);
@@ -67,5 +70,5 @@
       // 
       this.userIdLabel.AutoSize = true;
-      this.userIdLabel.Location = new System.Drawing.Point(4, 26);
+      this.userIdLabel.Location = new System.Drawing.Point(4, 3);
       this.userIdLabel.Name = "userIdLabel";
       this.userIdLabel.Size = new System.Drawing.Size(41, 13);
@@ -77,7 +80,7 @@
       this.stateTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.stateTextBox.Location = new System.Drawing.Point(92, 4);
+      this.stateTextBox.Location = new System.Drawing.Point(95, 19);
       this.stateTextBox.Name = "stateTextBox";
-      this.stateTextBox.Size = new System.Drawing.Size(319, 20);
+      this.stateTextBox.Size = new System.Drawing.Size(395, 20);
       this.stateTextBox.TabIndex = 2;
       // 
@@ -86,16 +89,14 @@
       this.userIdTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.userIdTextBox.Location = new System.Drawing.Point(92, 26);
+      this.userIdTextBox.Location = new System.Drawing.Point(92, 3);
       this.userIdTextBox.Name = "userIdTextBox";
-      this.userIdTextBox.Size = new System.Drawing.Size(319, 20);
+      this.userIdTextBox.Size = new System.Drawing.Size(411, 20);
       this.userIdTextBox.TabIndex = 3;
       // 
       // percentageTextBox
       // 
-      this.percentageTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
-                  | System.Windows.Forms.AnchorStyles.Right)));
-      this.percentageTextBox.Location = new System.Drawing.Point(92, 48);
+      this.percentageTextBox.Location = new System.Drawing.Point(95, 41);
       this.percentageTextBox.Name = "percentageTextBox";
-      this.percentageTextBox.Size = new System.Drawing.Size(319, 20);
+      this.percentageTextBox.Size = new System.Drawing.Size(52, 20);
       this.percentageTextBox.TabIndex = 4;
       // 
@@ -104,7 +105,7 @@
       this.dateCreatedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateCreatedTextBox.Location = new System.Drawing.Point(92, 70);
+      this.dateCreatedTextBox.Location = new System.Drawing.Point(95, 63);
       this.dateCreatedTextBox.Name = "dateCreatedTextBox";
-      this.dateCreatedTextBox.Size = new System.Drawing.Size(319, 20);
+      this.dateCreatedTextBox.Size = new System.Drawing.Size(395, 20);
       this.dateCreatedTextBox.TabIndex = 5;
       // 
@@ -113,7 +114,7 @@
       this.dateFinishedTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateFinishedTextBox.Location = new System.Drawing.Point(92, 114);
+      this.dateFinishedTextBox.Location = new System.Drawing.Point(95, 107);
       this.dateFinishedTextBox.Name = "dateFinishedTextBox";
-      this.dateFinishedTextBox.Size = new System.Drawing.Size(319, 20);
+      this.dateFinishedTextBox.Size = new System.Drawing.Size(395, 20);
       this.dateFinishedTextBox.TabIndex = 6;
       // 
@@ -122,7 +123,7 @@
       this.priorityTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.priorityTextBox.Location = new System.Drawing.Point(92, 136);
+      this.priorityTextBox.Location = new System.Drawing.Point(92, 25);
       this.priorityTextBox.Name = "priorityTextBox";
-      this.priorityTextBox.Size = new System.Drawing.Size(319, 20);
+      this.priorityTextBox.Size = new System.Drawing.Size(411, 20);
       this.priorityTextBox.TabIndex = 7;
       // 
@@ -131,7 +132,7 @@
       this.coresNeededTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.coresNeededTextBox.Location = new System.Drawing.Point(92, 158);
+      this.coresNeededTextBox.Location = new System.Drawing.Point(92, 47);
       this.coresNeededTextBox.Name = "coresNeededTextBox";
-      this.coresNeededTextBox.Size = new System.Drawing.Size(319, 20);
+      this.coresNeededTextBox.Size = new System.Drawing.Size(411, 20);
       this.coresNeededTextBox.TabIndex = 8;
       // 
@@ -140,7 +141,7 @@
       this.memoryNeededTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.memoryNeededTextBox.Location = new System.Drawing.Point(92, 180);
+      this.memoryNeededTextBox.Location = new System.Drawing.Point(92, 69);
       this.memoryNeededTextBox.Name = "memoryNeededTextBox";
-      this.memoryNeededTextBox.Size = new System.Drawing.Size(319, 20);
+      this.memoryNeededTextBox.Size = new System.Drawing.Size(411, 20);
       this.memoryNeededTextBox.TabIndex = 9;
       // 
@@ -149,7 +150,7 @@
       this.pluginsNeededTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.pluginsNeededTextBox.Location = new System.Drawing.Point(92, 202);
+      this.pluginsNeededTextBox.Location = new System.Drawing.Point(92, 91);
       this.pluginsNeededTextBox.Name = "pluginsNeededTextBox";
-      this.pluginsNeededTextBox.Size = new System.Drawing.Size(319, 20);
+      this.pluginsNeededTextBox.Size = new System.Drawing.Size(411, 20);
       this.pluginsNeededTextBox.TabIndex = 10;
       // 
@@ -158,7 +159,7 @@
       this.projectTextBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.projectTextBox.Location = new System.Drawing.Point(92, 224);
+      this.projectTextBox.Location = new System.Drawing.Point(92, 113);
       this.projectTextBox.Name = "projectTextBox";
-      this.projectTextBox.Size = new System.Drawing.Size(319, 20);
+      this.projectTextBox.Size = new System.Drawing.Size(411, 20);
       this.projectTextBox.TabIndex = 11;
       // 
@@ -166,5 +167,5 @@
       // 
       this.percentageLabel.AutoSize = true;
-      this.percentageLabel.Location = new System.Drawing.Point(4, 48);
+      this.percentageLabel.Location = new System.Drawing.Point(7, 41);
       this.percentageLabel.Name = "percentageLabel";
       this.percentageLabel.Size = new System.Drawing.Size(65, 13);
@@ -175,5 +176,5 @@
       // 
       this.dateCreatedLabel.AutoSize = true;
-      this.dateCreatedLabel.Location = new System.Drawing.Point(4, 70);
+      this.dateCreatedLabel.Location = new System.Drawing.Point(7, 63);
       this.dateCreatedLabel.Name = "dateCreatedLabel";
       this.dateCreatedLabel.Size = new System.Drawing.Size(70, 13);
@@ -184,5 +185,5 @@
       // 
       this.dateFinishedLabel.AutoSize = true;
-      this.dateFinishedLabel.Location = new System.Drawing.Point(4, 114);
+      this.dateFinishedLabel.Location = new System.Drawing.Point(7, 107);
       this.dateFinishedLabel.Name = "dateFinishedLabel";
       this.dateFinishedLabel.Size = new System.Drawing.Size(72, 13);
@@ -193,5 +194,5 @@
       // 
       this.priorityLabel.AutoSize = true;
-      this.priorityLabel.Location = new System.Drawing.Point(4, 136);
+      this.priorityLabel.Location = new System.Drawing.Point(4, 25);
       this.priorityLabel.Name = "priorityLabel";
       this.priorityLabel.Size = new System.Drawing.Size(41, 13);
@@ -202,5 +203,5 @@
       // 
       this.coresNeededLabel.AutoSize = true;
-      this.coresNeededLabel.Location = new System.Drawing.Point(4, 158);
+      this.coresNeededLabel.Location = new System.Drawing.Point(4, 47);
       this.coresNeededLabel.Name = "coresNeededLabel";
       this.coresNeededLabel.Size = new System.Drawing.Size(75, 13);
@@ -211,5 +212,5 @@
       // 
       this.memoryNeededLabel.AutoSize = true;
-      this.memoryNeededLabel.Location = new System.Drawing.Point(4, 180);
+      this.memoryNeededLabel.Location = new System.Drawing.Point(4, 69);
       this.memoryNeededLabel.Name = "memoryNeededLabel";
       this.memoryNeededLabel.Size = new System.Drawing.Size(85, 13);
@@ -220,5 +221,5 @@
       // 
       this.pluginsNeededLabel.AutoSize = true;
-      this.pluginsNeededLabel.Location = new System.Drawing.Point(4, 202);
+      this.pluginsNeededLabel.Location = new System.Drawing.Point(4, 91);
       this.pluginsNeededLabel.Name = "pluginsNeededLabel";
       this.pluginsNeededLabel.Size = new System.Drawing.Size(82, 13);
@@ -229,5 +230,5 @@
       // 
       this.projectLabel.AutoSize = true;
-      this.projectLabel.Location = new System.Drawing.Point(4, 224);
+      this.projectLabel.Location = new System.Drawing.Point(4, 113);
       this.projectLabel.Name = "projectLabel";
       this.projectLabel.Size = new System.Drawing.Size(43, 13);
@@ -244,7 +245,7 @@
       this.snapshotGroupBox.Controls.Add(this.snapshotTimeLabel);
       this.snapshotGroupBox.Controls.Add(this.snapshotStatusLabel);
-      this.snapshotGroupBox.Location = new System.Drawing.Point(7, 246);
+      this.snapshotGroupBox.Location = new System.Drawing.Point(7, 279);
       this.snapshotGroupBox.Name = "snapshotGroupBox";
-      this.snapshotGroupBox.Size = new System.Drawing.Size(404, 100);
+      this.snapshotGroupBox.Size = new System.Drawing.Size(496, 100);
       this.snapshotGroupBox.TabIndex = 21;
       this.snapshotGroupBox.TabStop = false;
@@ -254,5 +255,5 @@
       // 
       this.openSnapshotButton.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
-      this.openSnapshotButton.Location = new System.Drawing.Point(297, 67);
+      this.openSnapshotButton.Location = new System.Drawing.Point(389, 67);
       this.openSnapshotButton.Name = "openSnapshotButton";
       this.openSnapshotButton.Size = new System.Drawing.Size(101, 26);
@@ -268,5 +269,5 @@
       this.snapshotTimeText.Location = new System.Drawing.Point(45, 41);
       this.snapshotTimeText.Name = "snapshotTimeText";
-      this.snapshotTimeText.Size = new System.Drawing.Size(353, 20);
+      this.snapshotTimeText.Size = new System.Drawing.Size(445, 20);
       this.snapshotTimeText.TabIndex = 24;
       // 
@@ -277,5 +278,5 @@
       this.snapshotStatusText.Location = new System.Drawing.Point(45, 19);
       this.snapshotStatusText.Name = "snapshotStatusText";
-      this.snapshotStatusText.Size = new System.Drawing.Size(353, 20);
+      this.snapshotStatusText.Size = new System.Drawing.Size(445, 20);
       this.snapshotStatusText.TabIndex = 23;
       // 
@@ -302,7 +303,7 @@
       this.dateCalculatedText.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.dateCalculatedText.Location = new System.Drawing.Point(92, 92);
+      this.dateCalculatedText.Location = new System.Drawing.Point(95, 85);
       this.dateCalculatedText.Name = "dateCalculatedText";
-      this.dateCalculatedText.Size = new System.Drawing.Size(319, 20);
+      this.dateCalculatedText.Size = new System.Drawing.Size(395, 20);
       this.dateCalculatedText.TabIndex = 22;
       // 
@@ -310,5 +311,5 @@
       // 
       this.dateCalculatedLabel.AutoSize = true;
-      this.dateCalculatedLabel.Location = new System.Drawing.Point(4, 92);
+      this.dateCalculatedLabel.Location = new System.Drawing.Point(7, 85);
       this.dateCalculatedLabel.Name = "dateCalculatedLabel";
       this.dateCalculatedLabel.Size = new System.Drawing.Size(83, 13);
@@ -316,10 +317,40 @@
       this.dateCalculatedLabel.Text = "DateCalculated:";
       // 
+      // jobStatusGroupBox
+      // 
+      this.jobStatusGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.jobStatusGroupBox.Controls.Add(this.percentageProgressBar);
+      this.jobStatusGroupBox.Controls.Add(this.stateTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.dateCalculatedLabel);
+      this.jobStatusGroupBox.Controls.Add(this.stateLabel);
+      this.jobStatusGroupBox.Controls.Add(this.dateCalculatedText);
+      this.jobStatusGroupBox.Controls.Add(this.dateFinishedTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.percentageTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.dateCreatedTextBox);
+      this.jobStatusGroupBox.Controls.Add(this.percentageLabel);
+      this.jobStatusGroupBox.Controls.Add(this.dateCreatedLabel);
+      this.jobStatusGroupBox.Controls.Add(this.dateFinishedLabel);
+      this.jobStatusGroupBox.Location = new System.Drawing.Point(7, 139);
+      this.jobStatusGroupBox.Name = "jobStatusGroupBox";
+      this.jobStatusGroupBox.Size = new System.Drawing.Size(496, 134);
+      this.jobStatusGroupBox.TabIndex = 24;
+      this.jobStatusGroupBox.TabStop = false;
+      this.jobStatusGroupBox.Text = "Job Status";
+      // 
+      // percentageProgressBar
+      // 
+      this.percentageProgressBar.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.percentageProgressBar.Location = new System.Drawing.Point(153, 41);
+      this.percentageProgressBar.Name = "percentageProgressBar";
+      this.percentageProgressBar.Size = new System.Drawing.Size(337, 20);
+      this.percentageProgressBar.TabIndex = 25;
+      // 
       // JobItemView
       // 
       this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
       this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
-      this.Controls.Add(this.dateCalculatedLabel);
-      this.Controls.Add(this.dateCalculatedText);
+      this.Controls.Add(this.jobStatusGroupBox);
       this.Controls.Add(this.snapshotGroupBox);
       this.Controls.Add(this.projectLabel);
@@ -328,7 +359,4 @@
       this.Controls.Add(this.coresNeededLabel);
       this.Controls.Add(this.priorityLabel);
-      this.Controls.Add(this.dateFinishedLabel);
-      this.Controls.Add(this.dateCreatedLabel);
-      this.Controls.Add(this.percentageLabel);
       this.Controls.Add(this.projectTextBox);
       this.Controls.Add(this.pluginsNeededTextBox);
@@ -336,15 +364,12 @@
       this.Controls.Add(this.coresNeededTextBox);
       this.Controls.Add(this.priorityTextBox);
-      this.Controls.Add(this.dateFinishedTextBox);
-      this.Controls.Add(this.dateCreatedTextBox);
-      this.Controls.Add(this.percentageTextBox);
       this.Controls.Add(this.userIdTextBox);
-      this.Controls.Add(this.stateTextBox);
       this.Controls.Add(this.userIdLabel);
-      this.Controls.Add(this.stateLabel);
       this.Name = "JobItemView";
-      this.Size = new System.Drawing.Size(414, 417);
+      this.Size = new System.Drawing.Size(506, 409);
       this.snapshotGroupBox.ResumeLayout(false);
       this.snapshotGroupBox.PerformLayout();
+      this.jobStatusGroupBox.ResumeLayout(false);
+      this.jobStatusGroupBox.PerformLayout();
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -382,4 +407,6 @@
     private System.Windows.Forms.TextBox dateCalculatedText;
     private System.Windows.Forms.Label dateCalculatedLabel;
+    private System.Windows.Forms.GroupBox jobStatusGroupBox;
+    private System.Windows.Forms.ProgressBar percentageProgressBar;
   }
 }
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.cs	(revision 4120)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.cs	(revision 4121)
@@ -34,7 +34,32 @@
       base.OnContentChanged();
       if (Content != null) {
+        Content_JobDtoChanged(this, EventArgs.Empty);
+        if (Content.LatestSnapshot != null) {
+          snapshotStatusText.InvokeIfRequired(c => c.Text = Content.LatestSnapshot.StatusMessage);
+          snapshotTimeText.InvokeIfRequired(c => { c.Text = Content.LatestSnapshotTime.ToString(); });
+        }
+      }
+    }
+
+    protected override void RegisterContentEvents() {
+      base.RegisterContentEvents();
+      Content.LatestSnapshotChanged += new EventHandler(Content_LatestSnapshotChanged);
+      Content.JobDtoChanged += new EventHandler(Content_JobDtoChanged);
+    }
+
+    protected override void DeregisterContentEvents() {
+      Content.LatestSnapshotChanged -= new EventHandler(Content_LatestSnapshotChanged);
+      Content.JobDtoChanged -= new EventHandler(Content_JobDtoChanged);
+      base.DeregisterContentEvents();
+    }
+
+    void Content_JobDtoChanged(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_JobDtoChanged), sender, e);
+      } else {
         this.stateTextBox.Text = Content.JobDto.State.ToString();
         this.userIdTextBox.Text = Content.JobDto.UserId.ToString();
-        this.percentageTextBox.Text = Content.JobDto.Percentage.ToString();
+        this.percentageTextBox.Text = (Content.JobDto.Percentage*100).ToString() + "%";
+        this.percentageProgressBar.Value = Convert.ToInt32(Content.JobDto.Percentage * percentageProgressBar.Maximum);
         this.dateCreatedTextBox.Text = Content.JobDto.DateCreated.ToString();
         this.dateCalculatedText.Text = Content.JobDto.DateCalculated.ToString();
@@ -45,30 +70,20 @@
         this.pluginsNeededTextBox.Text = string.Join(", ", Content.JobDto.PluginsNeeded.Select(x => x.Name + "-" + x.Version).ToArray());
         this.projectTextBox.Text = Content.JobDto.Project != null ? Content.JobDto.Project.Name : "-";
+      }
+    }
+
+    void Content_LatestSnapshotChanged(object sender, EventArgs e) {
+      if (InvokeRequired) {
+        Invoke(new EventHandler(Content_LatestSnapshotChanged), sender, e);
+      } else {
         if (Content.LatestSnapshot != null) {
           snapshotStatusText.Text = Content.LatestSnapshot.StatusMessage;
           snapshotTimeText.Text = Content.LatestSnapshotTime.ToString();
+        } else {
+          snapshotStatusText.Text = "";
+          snapshotTimeText.Text = "";
         }
+        SetEnabledStateOfControls();
       }
-    }
-
-    protected override void RegisterContentEvents() {
-      base.RegisterContentEvents();
-      Content.LatestSnapshotChanged += new EventHandler(Content_LatestSnapshotChanged);
-    }
-
-    protected override void DeregisterContentEvents() {
-      Content.LatestSnapshotChanged -= new EventHandler(Content_LatestSnapshotChanged);
-      base.DeregisterContentEvents();
-    }
-
-    void Content_LatestSnapshotChanged(object sender, EventArgs e) {
-      if (Content.LatestSnapshot != null) {
-        snapshotStatusText.Text = Content.LatestSnapshot.StatusMessage;
-        snapshotTimeText.Text = Content.LatestSnapshotTime.ToString();
-      } else {
-        snapshotStatusText.Text = "";
-        snapshotTimeText.Text = "";
-      }
-      SetEnabledStateOfControls();
     }
 
@@ -76,4 +91,17 @@
       base.SetEnabledStateOfControls();
       openSnapshotButton.Enabled = Content != null && Content.LatestSnapshot != null;
+      this.stateTextBox.ReadOnly = this.ReadOnly;
+      this.userIdTextBox.ReadOnly = this.ReadOnly;
+      this.percentageTextBox.ReadOnly = this.ReadOnly;
+      this.dateCreatedTextBox.ReadOnly = this.ReadOnly;
+      this.dateCalculatedText.ReadOnly = this.ReadOnly;
+      this.dateFinishedTextBox.ReadOnly = this.ReadOnly;
+      this.priorityTextBox.ReadOnly = this.ReadOnly;
+      this.coresNeededTextBox.ReadOnly = this.ReadOnly;
+      this.memoryNeededTextBox.ReadOnly = this.ReadOnly;
+      this.pluginsNeededTextBox.ReadOnly = this.ReadOnly;
+      this.projectTextBox.ReadOnly = this.ReadOnly;
+      this.snapshotStatusText.ReadOnly = this.ReadOnly;
+      this.snapshotTimeText.ReadOnly = this.ReadOnly;
     }
 
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.resx
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.resx	(revision 4120)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/JobItemView.resx	(revision 4121)
@@ -118,39 +118,3 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
-  <metadata name="stateTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="userIdTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="percentageTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="dateCreatedTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="dateFinishedTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="priorityTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="coresNeededTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="memoryNeededTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="pluginsNeededTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="projectTextBox.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="snapshotStatusText.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
-  <metadata name="dateCalculatedText.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
-    <value>True</value>
-  </metadata>
 </root>
Index: branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs
===================================================================
--- branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs	(revision 4120)
+++ branches/3.3-HiveMigration/sources/HeuristicLab.Hive/HeuristicLab.Hive.Experiment.Views/3.3/Properties/AssemblyInfo.cs	(revision 4121)
@@ -55,5 +55,5 @@
 // You can specify all the values or you can default the Revision and Build Numbers 
 // by using the '*' as shown below:
-[assembly: AssemblyVersion("3.3.0.4119")]
-[assembly: AssemblyFileVersion("3.3.0.4119")]
-[assembly: AssemblyBuildDate("2010/07/29 16:49:22")]
+[assembly: AssemblyVersion("3.3.0.4120")]
+[assembly: AssemblyFileVersion("3.3.0.4120")]
+[assembly: AssemblyBuildDate("2010/07/30 13:39:18")]
