Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.Designer.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.Designer.cs	(revision 5524)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.Designer.cs	(revision 5525)
@@ -22,27 +22,17 @@
 namespace HeuristicLab.Clients.Hive.Views.Administration {
   partial class HiveAdministrationView {
-    /// <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);
-    }
+    private System.Windows.Forms.TabControl tabAdmin;
+    private System.Windows.Forms.TabPage tabSlaves;
+    private System.Windows.Forms.SplitContainer splitSlaves;
+    private System.Windows.Forms.TreeView treeSlaveGroup;
+    private System.Windows.Forms.TabControl tabSlaveGroup;
+    private System.Windows.Forms.TabPage tabDetails;
+    private System.Windows.Forms.TabPage tabSchedule;
+    private System.Windows.Forms.TabPage tabJobs;
+    private System.Windows.Forms.TabPage tabUsers;
 
     #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.components = new System.ComponentModel.Container();
       System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(HiveAdministrationView));
       this.tabAdmin = new System.Windows.Forms.TabControl();
@@ -52,6 +42,13 @@
       this.btnAddGroup = new System.Windows.Forms.Button();
       this.treeSlaveGroup = new System.Windows.Forms.TreeView();
+      this.imageListSlaveGroups = new System.Windows.Forms.ImageList(this.components);
       this.tabSlaveGroup = new System.Windows.Forms.TabControl();
       this.tabDetails = new System.Windows.Forms.TabPage();
+      this.txtSlaveState = new System.Windows.Forms.TextBox();
+      this.txtOS = new System.Windows.Forms.TextBox();
+      this.label15 = new System.Windows.Forms.Label();
+      this.label14 = new System.Windows.Forms.Label();
+      this.txtDetailsDescription = new System.Windows.Forms.TextBox();
+      this.label13 = new System.Windows.Forms.Label();
       this.txtName = new System.Windows.Forms.TextBox();
       this.txtCPU = new System.Windows.Forms.TextBox();
@@ -63,10 +60,9 @@
       this.label9 = new System.Windows.Forms.Label();
       this.tabSchedule = new System.Windows.Forms.TabPage();
-      this.scheduleControl1 = new HeuristicLab.Clients.Hive.Views.Administration.ScheduleControl();
       this.tabJobs = new System.Windows.Forms.TabPage();
-      this.hiveJobListViewSlaves = new HeuristicLab.Clients.Hive.Views.HiveJobListView();
       this.tabUsers = new System.Windows.Forms.TabPage();
       this.splitUsers = new System.Windows.Forms.SplitContainer();
       this.lstUsers = new System.Windows.Forms.ListView();
+      this.imageListUsers = new System.Windows.Forms.ImageList(this.components);
       this.tabUserDetails = new System.Windows.Forms.TabControl();
       this.tabUserInformation = new System.Windows.Forms.TabPage();
@@ -88,5 +84,10 @@
       this.tabStatistics = new System.Windows.Forms.TabPage();
       this.label5 = new System.Windows.Forms.Label();
+      this.updateSlaveGroups = new HeuristicLab.Clients.Hive.Views.Common.UpdateControl();
+      this.scheduleControl1 = new HeuristicLab.Clients.Hive.Views.Administration.ScheduleControl();
+      this.hiveJobListViewSlaves = new HeuristicLab.Clients.Hive.Views.HiveJobListView();
       this.hiveExperimentManagerView = new HeuristicLab.Clients.Hive.Views.HiveExperimentManagerView();
+      this.updateControl1 = new HeuristicLab.Clients.Hive.Views.Common.UpdateControl();
+      this.updateControl2 = new HeuristicLab.Clients.Hive.Views.Common.UpdateControl();
       this.tabAdmin.SuspendLayout();
       this.tabSlaves.SuspendLayout();
@@ -145,4 +146,5 @@
       // splitSlaves.Panel1
       // 
+      this.splitSlaves.Panel1.Controls.Add(this.updateSlaveGroups);
       this.splitSlaves.Panel1.Controls.Add(this.btnRemoveGroup);
       this.splitSlaves.Panel1.Controls.Add(this.btnAddGroup);
@@ -179,9 +181,19 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
+      this.treeSlaveGroup.ImageIndex = 0;
+      this.treeSlaveGroup.ImageList = this.imageListSlaveGroups;
       this.treeSlaveGroup.Location = new System.Drawing.Point(3, 33);
       this.treeSlaveGroup.Name = "treeSlaveGroup";
+      this.treeSlaveGroup.SelectedImageIndex = 0;
       this.treeSlaveGroup.Size = new System.Drawing.Size(209, 472);
       this.treeSlaveGroup.TabIndex = 0;
       this.treeSlaveGroup.Click += new System.EventHandler(this.treeSlaveGroup_Click);
+      this.treeSlaveGroup.MouseClick += new System.Windows.Forms.MouseEventHandler(this.treeSlaveGroup_MouseClick);
+      // 
+      // imageListSlaveGroups
+      // 
+      this.imageListSlaveGroups.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
+      this.imageListSlaveGroups.ImageSize = new System.Drawing.Size(16, 16);
+      this.imageListSlaveGroups.TransparentColor = System.Drawing.Color.Transparent;
       // 
       // tabSlaveGroup
@@ -201,4 +213,10 @@
       // tabDetails
       // 
+      this.tabDetails.Controls.Add(this.txtSlaveState);
+      this.tabDetails.Controls.Add(this.txtOS);
+      this.tabDetails.Controls.Add(this.label15);
+      this.tabDetails.Controls.Add(this.label14);
+      this.tabDetails.Controls.Add(this.txtDetailsDescription);
+      this.tabDetails.Controls.Add(this.label13);
       this.tabDetails.Controls.Add(this.txtName);
       this.tabDetails.Controls.Add(this.txtCPU);
@@ -217,11 +235,68 @@
       this.tabDetails.UseVisualStyleBackColor = true;
       // 
+      // txtSlaveState
+      // 
+      this.txtSlaveState.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.txtSlaveState.Location = new System.Drawing.Point(134, 145);
+      this.txtSlaveState.Name = "txtSlaveState";
+      this.txtSlaveState.Size = new System.Drawing.Size(352, 20);
+      this.txtSlaveState.TabIndex = 13;
+      this.txtSlaveState.Text = "Offline";
+      // 
+      // txtOS
+      // 
+      this.txtOS.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.txtOS.Location = new System.Drawing.Point(134, 119);
+      this.txtOS.Name = "txtOS";
+      this.txtOS.Size = new System.Drawing.Size(352, 20);
+      this.txtOS.TabIndex = 12;
+      this.txtOS.Text = "Windows 7";
+      // 
+      // label15
+      // 
+      this.label15.AutoSize = true;
+      this.label15.Location = new System.Drawing.Point(16, 152);
+      this.label15.Name = "label15";
+      this.label15.Size = new System.Drawing.Size(32, 13);
+      this.label15.TabIndex = 11;
+      this.label15.Text = "State";
+      // 
+      // label14
+      // 
+      this.label14.AutoSize = true;
+      this.label14.Location = new System.Drawing.Point(14, 126);
+      this.label14.Name = "label14";
+      this.label14.Size = new System.Drawing.Size(90, 13);
+      this.label14.TabIndex = 10;
+      this.label14.Text = "Operating System";
+      // 
+      // txtDetailsDescription
+      // 
+      this.txtDetailsDescription.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
+                  | System.Windows.Forms.AnchorStyles.Right)));
+      this.txtDetailsDescription.Location = new System.Drawing.Point(133, 41);
+      this.txtDetailsDescription.Name = "txtDetailsDescription";
+      this.txtDetailsDescription.Size = new System.Drawing.Size(353, 20);
+      this.txtDetailsDescription.TabIndex = 9;
+      this.txtDetailsDescription.Text = "ascheibepc Description";
+      // 
+      // label13
+      // 
+      this.label13.AutoSize = true;
+      this.label13.Location = new System.Drawing.Point(17, 48);
+      this.label13.Name = "label13";
+      this.label13.Size = new System.Drawing.Size(60, 13);
+      this.label13.TabIndex = 8;
+      this.label13.Text = "Description";
+      // 
       // txtName
       // 
       this.txtName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtName.Location = new System.Drawing.Point(123, 30);
+      this.txtName.Location = new System.Drawing.Point(133, 15);
       this.txtName.Name = "txtName";
-      this.txtName.Size = new System.Drawing.Size(100, 20);
+      this.txtName.Size = new System.Drawing.Size(353, 20);
       this.txtName.TabIndex = 7;
       this.txtName.Text = "ascheibepc";
@@ -231,7 +306,7 @@
       this.txtCPU.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtCPU.Location = new System.Drawing.Point(123, 56);
+      this.txtCPU.Location = new System.Drawing.Point(133, 67);
       this.txtCPU.Name = "txtCPU";
-      this.txtCPU.Size = new System.Drawing.Size(100, 20);
+      this.txtCPU.Size = new System.Drawing.Size(353, 20);
       this.txtCPU.TabIndex = 6;
       this.txtCPU.Text = "Intel Core 2 Duo @ 2.4 Ghz";
@@ -241,7 +316,7 @@
       this.txtMemory.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtMemory.Location = new System.Drawing.Point(123, 82);
+      this.txtMemory.Location = new System.Drawing.Point(133, 93);
       this.txtMemory.Name = "txtMemory";
-      this.txtMemory.Size = new System.Drawing.Size(100, 20);
+      this.txtMemory.Size = new System.Drawing.Size(353, 20);
       this.txtMemory.TabIndex = 5;
       this.txtMemory.Text = "2048 MB";
@@ -251,7 +326,7 @@
       this.txtDetailsCalculatedJobs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtDetailsCalculatedJobs.Location = new System.Drawing.Point(123, 108);
+      this.txtDetailsCalculatedJobs.Location = new System.Drawing.Point(134, 171);
       this.txtDetailsCalculatedJobs.Name = "txtDetailsCalculatedJobs";
-      this.txtDetailsCalculatedJobs.Size = new System.Drawing.Size(100, 20);
+      this.txtDetailsCalculatedJobs.Size = new System.Drawing.Size(352, 20);
       this.txtDetailsCalculatedJobs.TabIndex = 4;
       this.txtDetailsCalculatedJobs.Text = "33";
@@ -260,5 +335,5 @@
       // 
       this.label12.AutoSize = true;
-      this.label12.Location = new System.Drawing.Point(6, 115);
+      this.label12.Location = new System.Drawing.Point(17, 178);
       this.label12.Name = "label12";
       this.label12.Size = new System.Drawing.Size(82, 13);
@@ -269,5 +344,5 @@
       // 
       this.label11.AutoSize = true;
-      this.label11.Location = new System.Drawing.Point(7, 89);
+      this.label11.Location = new System.Drawing.Point(17, 100);
       this.label11.Name = "label11";
       this.label11.Size = new System.Drawing.Size(44, 13);
@@ -278,5 +353,5 @@
       // 
       this.label10.AutoSize = true;
-      this.label10.Location = new System.Drawing.Point(7, 63);
+      this.label10.Location = new System.Drawing.Point(17, 74);
       this.label10.Name = "label10";
       this.label10.Size = new System.Drawing.Size(29, 13);
@@ -287,5 +362,5 @@
       // 
       this.label9.AutoSize = true;
-      this.label9.Location = new System.Drawing.Point(7, 38);
+      this.label9.Location = new System.Drawing.Point(16, 22);
       this.label9.Name = "label9";
       this.label9.Size = new System.Drawing.Size(35, 13);
@@ -304,16 +379,7 @@
       this.tabSchedule.UseVisualStyleBackColor = true;
       // 
-      // scheduleControl1
-      // 
-      this.scheduleControl1.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.scheduleControl1.Location = new System.Drawing.Point(7, 7);
-      this.scheduleControl1.Name = "scheduleControl1";
-      this.scheduleControl1.Size = new System.Drawing.Size(862, 562);
-      this.scheduleControl1.TabIndex = 0;
-      // 
       // tabJobs
       // 
+      this.tabJobs.Controls.Add(this.updateControl1);
       this.tabJobs.Controls.Add(this.hiveJobListViewSlaves);
       this.tabJobs.Location = new System.Drawing.Point(4, 22);
@@ -325,17 +391,4 @@
       this.tabJobs.UseVisualStyleBackColor = true;
       // 
-      // hiveJobListViewSlaves
-      // 
-      this.hiveJobListViewSlaves.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.hiveJobListViewSlaves.Caption = "JobItemList View";
-      this.hiveJobListViewSlaves.Content = null;
-      this.hiveJobListViewSlaves.Location = new System.Drawing.Point(7, 7);
-      this.hiveJobListViewSlaves.Name = "hiveJobListViewSlaves";
-      this.hiveJobListViewSlaves.ReadOnly = false;
-      this.hiveJobListViewSlaves.Size = new System.Drawing.Size(499, 463);
-      this.hiveJobListViewSlaves.TabIndex = 0;
-      // 
       // tabUsers
       // 
@@ -354,5 +407,5 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.splitUsers.Location = new System.Drawing.Point(6, 6);
+      this.splitUsers.Location = new System.Drawing.Point(3, 6);
       this.splitUsers.Name = "splitUsers";
       // 
@@ -365,5 +418,5 @@
       this.splitUsers.Panel2.Controls.Add(this.tabUserDetails);
       this.splitUsers.Size = new System.Drawing.Size(722, 508);
-      this.splitUsers.SplitterDistance = 240;
+      this.splitUsers.SplitterDistance = 215;
       this.splitUsers.TabIndex = 0;
       // 
@@ -373,9 +426,17 @@
                   | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.lstUsers.Location = new System.Drawing.Point(3, 3);
+      this.lstUsers.Location = new System.Drawing.Point(3, 4);
       this.lstUsers.Name = "lstUsers";
-      this.lstUsers.Size = new System.Drawing.Size(234, 502);
+      this.lstUsers.Size = new System.Drawing.Size(209, 501);
+      this.lstUsers.SmallImageList = this.imageListUsers;
       this.lstUsers.TabIndex = 0;
       this.lstUsers.UseCompatibleStateImageBehavior = false;
+      this.lstUsers.View = System.Windows.Forms.View.List;
+      // 
+      // imageListUsers
+      // 
+      this.imageListUsers.ColorDepth = System.Windows.Forms.ColorDepth.Depth32Bit;
+      this.imageListUsers.ImageSize = new System.Drawing.Size(16, 16);
+      this.imageListUsers.TransparentColor = System.Drawing.Color.Transparent;
       // 
       // tabUserDetails
@@ -386,8 +447,8 @@
       this.tabUserDetails.Controls.Add(this.tabUserInformation);
       this.tabUserDetails.Controls.Add(this.tabUserJobs);
-      this.tabUserDetails.Location = new System.Drawing.Point(4, 4);
+      this.tabUserDetails.Location = new System.Drawing.Point(3, 3);
       this.tabUserDetails.Name = "tabUserDetails";
       this.tabUserDetails.SelectedIndex = 0;
-      this.tabUserDetails.Size = new System.Drawing.Size(471, 501);
+      this.tabUserDetails.Size = new System.Drawing.Size(496, 501);
       this.tabUserDetails.TabIndex = 1;
       // 
@@ -411,5 +472,5 @@
       this.tabUserInformation.Name = "tabUserInformation";
       this.tabUserInformation.Padding = new System.Windows.Forms.Padding(3);
-      this.tabUserInformation.Size = new System.Drawing.Size(463, 475);
+      this.tabUserInformation.Size = new System.Drawing.Size(488, 475);
       this.tabUserInformation.TabIndex = 0;
       this.tabUserInformation.Text = "User Information";
@@ -420,7 +481,7 @@
       this.txtUserName.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtUserName.Location = new System.Drawing.Point(161, 6);
+      this.txtUserName.Location = new System.Drawing.Point(163, 14);
       this.txtUserName.Name = "txtUserName";
-      this.txtUserName.Size = new System.Drawing.Size(100, 20);
+      this.txtUserName.Size = new System.Drawing.Size(319, 20);
       this.txtUserName.TabIndex = 17;
       this.txtUserName.Text = "ascheibe";
@@ -430,7 +491,7 @@
       this.txtUserLastActivity.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtUserLastActivity.Location = new System.Drawing.Point(161, 41);
+      this.txtUserLastActivity.Location = new System.Drawing.Point(163, 40);
       this.txtUserLastActivity.Name = "txtUserLastActivity";
-      this.txtUserLastActivity.Size = new System.Drawing.Size(100, 20);
+      this.txtUserLastActivity.Size = new System.Drawing.Size(319, 20);
       this.txtUserLastActivity.TabIndex = 16;
       this.txtUserLastActivity.Text = "11.1.2010";
@@ -440,7 +501,7 @@
       this.txtUserRole.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtUserRole.Location = new System.Drawing.Point(162, 72);
+      this.txtUserRole.Location = new System.Drawing.Point(163, 66);
       this.txtUserRole.Name = "txtUserRole";
-      this.txtUserRole.Size = new System.Drawing.Size(100, 20);
+      this.txtUserRole.Size = new System.Drawing.Size(319, 20);
       this.txtUserRole.TabIndex = 15;
       this.txtUserRole.Text = "Hive Slave";
@@ -449,5 +510,5 @@
       // 
       this.label1.AutoSize = true;
-      this.label1.Location = new System.Drawing.Point(13, 14);
+      this.label1.Location = new System.Drawing.Point(15, 21);
       this.label1.Name = "label1";
       this.label1.Size = new System.Drawing.Size(58, 13);
@@ -459,7 +520,7 @@
       this.txtUserEmail.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtUserEmail.Location = new System.Drawing.Point(162, 103);
+      this.txtUserEmail.Location = new System.Drawing.Point(163, 92);
       this.txtUserEmail.Name = "txtUserEmail";
-      this.txtUserEmail.Size = new System.Drawing.Size(100, 20);
+      this.txtUserEmail.Size = new System.Drawing.Size(319, 20);
       this.txtUserEmail.TabIndex = 14;
       this.txtUserEmail.Text = "ascheibe@mail.com";
@@ -468,5 +529,5 @@
       // 
       this.label2.AutoSize = true;
-      this.label2.Location = new System.Drawing.Point(12, 50);
+      this.label2.Location = new System.Drawing.Point(15, 47);
       this.label2.Name = "label2";
       this.label2.Size = new System.Drawing.Size(64, 13);
@@ -478,7 +539,7 @@
       this.txtUserPriority.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtUserPriority.Location = new System.Drawing.Point(163, 136);
+      this.txtUserPriority.Location = new System.Drawing.Point(163, 118);
       this.txtUserPriority.Name = "txtUserPriority";
-      this.txtUserPriority.Size = new System.Drawing.Size(100, 20);
+      this.txtUserPriority.Size = new System.Drawing.Size(319, 20);
       this.txtUserPriority.TabIndex = 13;
       this.txtUserPriority.Text = "10";
@@ -487,5 +548,5 @@
       // 
       this.label3.AutoSize = true;
-      this.label3.Location = new System.Drawing.Point(13, 79);
+      this.label3.Location = new System.Drawing.Point(15, 73);
       this.label3.Name = "label3";
       this.label3.Size = new System.Drawing.Size(29, 13);
@@ -497,7 +558,7 @@
       this.txtUserCalculatedJobs.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtUserCalculatedJobs.Location = new System.Drawing.Point(163, 170);
+      this.txtUserCalculatedJobs.Location = new System.Drawing.Point(163, 144);
       this.txtUserCalculatedJobs.Name = "txtUserCalculatedJobs";
-      this.txtUserCalculatedJobs.Size = new System.Drawing.Size(100, 20);
+      this.txtUserCalculatedJobs.Size = new System.Drawing.Size(319, 20);
       this.txtUserCalculatedJobs.TabIndex = 12;
       this.txtUserCalculatedJobs.Text = "125";
@@ -506,5 +567,5 @@
       // 
       this.label4.AutoSize = true;
-      this.label4.Location = new System.Drawing.Point(13, 111);
+      this.label4.Location = new System.Drawing.Point(15, 99);
       this.label4.Name = "label4";
       this.label4.Size = new System.Drawing.Size(32, 13);
@@ -516,7 +577,7 @@
       this.txtUserExecutionTime.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
                   | System.Windows.Forms.AnchorStyles.Right)));
-      this.txtUserExecutionTime.Location = new System.Drawing.Point(163, 202);
+      this.txtUserExecutionTime.Location = new System.Drawing.Point(163, 170);
       this.txtUserExecutionTime.Name = "txtUserExecutionTime";
-      this.txtUserExecutionTime.Size = new System.Drawing.Size(100, 20);
+      this.txtUserExecutionTime.Size = new System.Drawing.Size(319, 20);
       this.txtUserExecutionTime.TabIndex = 11;
       this.txtUserExecutionTime.Text = "15d 3h 5m";
@@ -525,5 +586,5 @@
       // 
       this.label6.AutoSize = true;
-      this.label6.Location = new System.Drawing.Point(13, 136);
+      this.label6.Location = new System.Drawing.Point(15, 125);
       this.label6.Name = "label6";
       this.label6.Size = new System.Drawing.Size(63, 13);
@@ -534,5 +595,5 @@
       // 
       this.label8.AutoSize = true;
-      this.label8.Location = new System.Drawing.Point(13, 202);
+      this.label8.Location = new System.Drawing.Point(15, 177);
       this.label8.Name = "label8";
       this.label8.Size = new System.Drawing.Size(116, 13);
@@ -543,5 +604,5 @@
       // 
       this.label7.AutoSize = true;
-      this.label7.Location = new System.Drawing.Point(12, 170);
+      this.label7.Location = new System.Drawing.Point(15, 151);
       this.label7.Name = "label7";
       this.label7.Size = new System.Drawing.Size(82, 13);
@@ -551,9 +612,10 @@
       // tabUserJobs
       // 
+      this.tabUserJobs.Controls.Add(this.updateControl2);
       this.tabUserJobs.Controls.Add(this.hiveExperimentManagerView);
       this.tabUserJobs.Location = new System.Drawing.Point(4, 22);
       this.tabUserJobs.Name = "tabUserJobs";
       this.tabUserJobs.Padding = new System.Windows.Forms.Padding(3);
-      this.tabUserJobs.Size = new System.Drawing.Size(463, 475);
+      this.tabUserJobs.Size = new System.Drawing.Size(488, 475);
       this.tabUserJobs.TabIndex = 1;
       this.tabUserJobs.Text = "Experiments";
@@ -581,4 +643,35 @@
           "....";
       // 
+      // updateSlaveGroups
+      // 
+      this.updateSlaveGroups.Location = new System.Drawing.Point(63, 3);
+      this.updateSlaveGroups.Name = "updateSlaveGroups";
+      this.updateSlaveGroups.Size = new System.Drawing.Size(75, 24);
+      this.updateSlaveGroups.TabIndex = 4;
+      this.updateSlaveGroups.UpdateAction = null;
+      // 
+      // scheduleControl1
+      // 
+      this.scheduleControl1.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.scheduleControl1.Location = new System.Drawing.Point(7, 7);
+      this.scheduleControl1.Name = "scheduleControl1";
+      this.scheduleControl1.Size = new System.Drawing.Size(862, 562);
+      this.scheduleControl1.TabIndex = 0;
+      // 
+      // hiveJobListViewSlaves
+      // 
+      this.hiveJobListViewSlaves.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.hiveJobListViewSlaves.Caption = "JobItemList View";
+      this.hiveJobListViewSlaves.Content = null;
+      this.hiveJobListViewSlaves.Location = new System.Drawing.Point(7, 26);
+      this.hiveJobListViewSlaves.Name = "hiveJobListViewSlaves";
+      this.hiveJobListViewSlaves.ReadOnly = false;
+      this.hiveJobListViewSlaves.Size = new System.Drawing.Size(485, 450);
+      this.hiveJobListViewSlaves.TabIndex = 0;
+      // 
       // hiveExperimentManagerView
       // 
@@ -588,9 +681,25 @@
       this.hiveExperimentManagerView.Caption = "HiveExperimentManagerBaseView";
       this.hiveExperimentManagerView.Content = null;
-      this.hiveExperimentManagerView.Location = new System.Drawing.Point(4, 4);
+      this.hiveExperimentManagerView.Location = new System.Drawing.Point(4, 26);
       this.hiveExperimentManagerView.Name = "hiveExperimentManagerView";
       this.hiveExperimentManagerView.ReadOnly = false;
-      this.hiveExperimentManagerView.Size = new System.Drawing.Size(735, 524);
+      this.hiveExperimentManagerView.Size = new System.Drawing.Size(484, 449);
       this.hiveExperimentManagerView.TabIndex = 0;
+      // 
+      // updateControl1
+      // 
+      this.updateControl1.Location = new System.Drawing.Point(7, 3);
+      this.updateControl1.Name = "updateControl1";
+      this.updateControl1.Size = new System.Drawing.Size(75, 24);
+      this.updateControl1.TabIndex = 1;
+      this.updateControl1.UpdateAction = null;
+      // 
+      // updateControl2
+      // 
+      this.updateControl2.Location = new System.Drawing.Point(7, 4);
+      this.updateControl2.Name = "updateControl2";
+      this.updateControl2.Size = new System.Drawing.Size(75, 24);
+      this.updateControl2.TabIndex = 1;
+      this.updateControl2.UpdateAction = null;
       // 
       // HiveAdministrationView
@@ -630,13 +739,4 @@
     #endregion
 
-    private System.Windows.Forms.TabControl tabAdmin;
-    private System.Windows.Forms.TabPage tabSlaves;
-    private System.Windows.Forms.TabPage tabUsers;
-    private System.Windows.Forms.TreeView treeSlaveGroup;
-    private System.Windows.Forms.TabControl tabSlaveGroup;
-    private System.Windows.Forms.TabPage tabDetails;
-    private System.Windows.Forms.TabPage tabSchedule;
-    private System.Windows.Forms.TabPage tabJobs;
-    private System.Windows.Forms.SplitContainer splitSlaves;
     private ScheduleControl scheduleControl1;
     private System.Windows.Forms.SplitContainer splitUsers;
@@ -673,4 +773,16 @@
     private System.Windows.Forms.Button btnRemoveGroup;
     private HiveExperimentManagerView hiveExperimentManagerView;
+    private System.Windows.Forms.TextBox txtDetailsDescription;
+    private System.Windows.Forms.Label label13;
+    private System.Windows.Forms.TextBox txtOS;
+    private System.Windows.Forms.Label label15;
+    private System.Windows.Forms.Label label14;
+    private System.Windows.Forms.TextBox txtSlaveState;
+    private System.Windows.Forms.ImageList imageListSlaveGroups;
+    private System.ComponentModel.IContainer components;
+    private System.Windows.Forms.ImageList imageListUsers;
+    private Common.UpdateControl updateSlaveGroups;
+    private Common.UpdateControl updateControl1;
+    private Common.UpdateControl updateControl2;
   }
 }
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.cs	(revision 5524)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.cs	(revision 5525)
@@ -20,10 +20,10 @@
 #endregion
 
-using System.Collections.Generic;
+using System;
 using System.Windows.Forms;
 using HeuristicLab.Clients.Hive.Administration;
 using HeuristicLab.Core.Views;
 using HeuristicLab.MainForm;
-//using HeuristicLab.Services.Hive.Common.DataTransfer;
+using HeuristicLab.Services.Hive.Common.DataTransfer;
 
 namespace HeuristicLab.Clients.Hive.Views.Administration {
@@ -51,4 +51,5 @@
     #endregion
 
+
     protected override void OnContentChanged() {
       base.OnContentChanged();
@@ -56,5 +57,56 @@
         // TODO: Put code here when content is null
       } else {
-        // TODO: Put code here when content has been changed and is not null
+        updateSlaveGroups.UpdateAction = new Action(Content.UpdateSlaveGroups);
+        treeSlaveGroup.ImageList.Images.Add(HiveImageLibrary.Slave);
+        treeSlaveGroup.ImageList.Images.Add(HiveImageLibrary.SlaveGroup);
+
+        foreach (SlaveGroup g in Content.SlaveGroups) {
+          TreeNode tn = new TreeNode();
+          tn.ImageIndex = treeSlaveGroup.ImageList.Images.Count - 1;
+          tn.SelectedImageIndex = tn.ImageIndex;
+
+          tn.Tag = g;
+          tn.Text = g.Name;
+          foreach (Slave s in Content.Slaves.FindAll(s => s.ParentResourceId != null && s.ParentResourceId == g.Id)) {
+            var stn = new TreeNode(s.Name);
+            stn.ImageIndex = 0;
+            stn.SelectedImageIndex = stn.ImageIndex;
+            stn.Tag = s;
+            tn.Nodes.Add(stn);
+          }
+          treeSlaveGroup.Nodes.Add(tn);
+        }
+
+        TreeNode ungrp = new TreeNode("UNGROUPED");
+        ungrp.ImageIndex = treeSlaveGroup.ImageList.Images.Count - 1;
+        ungrp.SelectedImageIndex = ungrp.ImageIndex;
+        var newGroup = new SlaveGroup();
+        newGroup.Name = "UNGROUPED";
+        newGroup.Id = Guid.NewGuid();
+        newGroup.Description = "Contains slaves which are in no group";
+        ungrp.Tag = newGroup;
+
+        foreach (Slave s in Content.Slaves.FindAll(s => s.ParentResourceId == null)) {
+          var stn = new TreeNode(s.Name);
+          stn.ImageIndex = 0;
+          stn.SelectedImageIndex = stn.ImageIndex;
+          stn.Tag = s;
+          ungrp.Nodes.Add(stn);
+        }
+        treeSlaveGroup.Nodes.Add(ungrp);
+
+        ShowUsers();
+      }
+    }
+
+    private void ShowUsers() {
+      lstUsers.SmallImageList.Images.Add(HeuristicLab.Common.Resources.VSImageLibrary.User);
+
+      foreach (string user in Content.Users) {
+        ListViewItem lvi = new ListViewItem();
+        lvi.Tag = user;
+        lvi.Text = user;
+        lvi.ImageIndex = 0;
+        lstUsers.Items.Add(lvi);
       }
     }
@@ -65,40 +117,40 @@
     }
 
-    /*List<SlaveGroup> slaveGroups;
-    List<Slave> slaves;*/
+    private void HiveAdministrationView_Load(object sender, System.EventArgs e) {
+      if (Content != null) {
 
-    private void HiveAdministrationView_Load(object sender, System.EventArgs e) {
-
-      /* using (HeuristicLab.Clients.Common.Disposable<IHiveService> service = ServiceLocator.Instance.GetService()) {
-         slaveGroups = new List<SlaveGroup>(service.Obj.GetSlaveGroups());
-         slaves = new List<Slave>(service.Obj.GetSlaves());
-
-         foreach (SlaveGroup g in slaveGroups) {
-           TreeNode tn = new TreeNode();
-           tn.Text = "Group " + g.Name;
-           foreach (Slave s in slaves.FindAll(s => s.ParentResourceId != null && s.ParentResourceId == g.Id)) {
-             tn.Nodes.Add(new TreeNode(s.Name));
-           }
-           treeSlaveGroup.Nodes.Add(tn);
-         }
-
-         TreeNode ungrp = new TreeNode("UNGROUPED");
-         foreach (Slave s in slaves.FindAll(s => s.ParentResourceId == null)) {
-           ungrp.Nodes.Add(new TreeNode(s.Name));
-         }
-         treeSlaveGroup.Nodes.Add(ungrp);
-
-       }*/
+      }
     }
 
     private void treeSlaveGroup_Click(object sender, System.EventArgs e) {
-      string text = treeSlaveGroup.SelectedNode.Text;
-
-      /*Slave slave = slaves.Find(s => s.Name == text);
-      if (slave != null) {
-       
-      } */
 
     }
+
+    private void treeSlaveGroup_MouseClick(object sender, MouseEventArgs e) {
+      if (treeSlaveGroup.SelectedNode != null &&
+      treeSlaveGroup.SelectedNode.Tag != null) {
+        if (treeSlaveGroup.SelectedNode.Tag.GetType() == typeof(Slave)) {
+          Slave s = treeSlaveGroup.SelectedNode.Tag as Slave;
+          txtName.Text = s.Name;
+          txtDetailsDescription.Text = s.Description;
+          txtCPU.Text = s.CpuArchitecture + ", " + s.Cores + " Cores @ " + s.CpuSpeed.ToString();
+          txtMemory.Text = s.Memory.ToString();
+          txtDetailsCalculatedJobs.Clear();
+          txtOS.Text = s.OperatingSystem;
+          txtSlaveState.Text = s.SlaveState.ToString();
+        } else if (treeSlaveGroup.SelectedNode.Tag.GetType() == typeof(SlaveGroup)) {
+          SlaveGroup s = treeSlaveGroup.SelectedNode.Tag as SlaveGroup;
+          txtName.Text = s.Name;
+          txtDetailsDescription.Text = s.Description;
+          txtCPU.Clear();
+          txtMemory.Clear();
+          txtDetailsCalculatedJobs.Clear();
+          txtOS.Clear();
+          txtSlaveState.Clear();
+        }
+      }
+    }
+
+
 
     #region Event Handlers
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.resx
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.resx	(revision 5524)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Administration/HiveAdministrationView.resx	(revision 5525)
@@ -118,4 +118,7 @@
     <value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
   </resheader>
+  <metadata name="imageListUsers.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>120, 17</value>
+  </metadata>
   <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
   <data name="btnRemoveGroup.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
@@ -166,5 +169,5 @@
         fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
         tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
-        6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALDQAACw0B7QfALAAAAbVJREFUOE+lk7lLA0EU
+        6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALDAAACwwBP0AiyAAAAbVJREFUOE+lk7lLA0EU
         xuMRcdeYyIBRQcmxURTiEXE8ECQqpAkpJJVNihSKjVjbW1lJChuxtBGUNGKRwj9AvA9QEMRGS01M4YYZ
         v9nN5twgavGDt/tmvn3HtxbOueU/6JcpGQEpMAfqfyMoLjeAZbYU5iw2ryJe0N6ZVUZJI3JesGrkhYB4
@@ -224,5 +227,5 @@
         fNTws+7PbaOWo6fHXMf6Hwc/vj/OGn/2S8Yv7ycKnpCfVEyqTDZPmU2dmnafvvF05dOJZ+nPFmYKf5X+
         tfa5zvMffnP8rX82YnbiBf/Fp99LXsq/PPRq2aueuYC5R69TXy/MF72Rf3P4LeNt37vwd5MLWe+x7ys/
-        6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALDQAACw0B7QfALAAAAX5JREFUOE9j+P//PwMl
+        6H7o/ujz8cGn1E+f/gUDmPP8usTo0wAAAAlwSFlzAAALDAAACwwBP0AiyAAAAX5JREFUOE9j+P//PwMl
         mCLNIItxGcBzdwH7mVvzOM9cncN15uIM3gO4XInLAObrc7j+/3nU+P/Pw4b/JycL/CHVAIbz03nhBhzs
         EQHqxx5WOMPg+CTBD38e1v3/86Dq/452cZAB/NgMgRtwaSbPgbNT+c6cnCR45ki/0Jl93SJ//jwo///3
@@ -234,3 +237,6 @@
 </value>
   </data>
+  <metadata name="imageListSlaveGroups.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>17, 17</value>
+  </metadata>
 </root>
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.Designer.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.Designer.cs	(revision 5525)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.Designer.cs	(revision 5525)
@@ -0,0 +1,70 @@
+﻿namespace HeuristicLab.Clients.Hive.Views.Common {
+  partial class UpdateControl {
+    /// <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() {
+      System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(UpdateControl));
+      this.btnRefresh = new System.Windows.Forms.Button();
+      this.imgBoxProgress = new System.Windows.Forms.PictureBox();
+      ((System.ComponentModel.ISupportInitialize)(this.imgBoxProgress)).BeginInit();
+      this.SuspendLayout();
+      // 
+      // btnRefresh
+      // 
+      this.btnRefresh.Image = ((System.Drawing.Image)(resources.GetObject("btnRefresh.Image")));
+      this.btnRefresh.Location = new System.Drawing.Point(0, 0);
+      this.btnRefresh.Name = "btnRefresh";
+      this.btnRefresh.Size = new System.Drawing.Size(24, 24);
+      this.btnRefresh.TabIndex = 4;
+      this.btnRefresh.UseVisualStyleBackColor = true;
+      this.btnRefresh.Click += new System.EventHandler(this.btnRefresh_Click);
+      // 
+      // imgBoxProgress
+      // 
+      this.imgBoxProgress.Image = global::HeuristicLab.Clients.Hive.Views.HiveImageLibrary.Progress;
+      this.imgBoxProgress.Location = new System.Drawing.Point(26, 6);
+      this.imgBoxProgress.Name = "imgBoxProgress";
+      this.imgBoxProgress.Size = new System.Drawing.Size(48, 12);
+      this.imgBoxProgress.TabIndex = 5;
+      this.imgBoxProgress.TabStop = false;
+      this.imgBoxProgress.Visible = false;
+      // 
+      // UpdateControl
+      // 
+      this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
+      this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+      this.Controls.Add(this.imgBoxProgress);
+      this.Controls.Add(this.btnRefresh);
+      this.Name = "UpdateControl";
+      this.Size = new System.Drawing.Size(75, 24);
+      ((System.ComponentModel.ISupportInitialize)(this.imgBoxProgress)).EndInit();
+      this.ResumeLayout(false);
+
+    }
+
+    #endregion
+
+    private System.Windows.Forms.Button btnRefresh;
+    private System.Windows.Forms.PictureBox imgBoxProgress;
+  }
+}
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.cs	(revision 5525)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.cs	(revision 5525)
@@ -0,0 +1,27 @@
+﻿using System;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace HeuristicLab.Clients.Hive.Views.Common {
+  public partial class UpdateControl : UserControl {
+    public UpdateControl() {
+      InitializeComponent();
+    }
+
+    public Action UpdateAction { get; set; }
+
+    private void PrivUpdateAction() {
+      UpdateAction();
+      imgBoxProgress.Invoke(new MethodInvoker(() => imgBoxProgress.Visible = false));
+    }
+
+    private void btnRefresh_Click(object sender, EventArgs e) {
+      if (UpdateAction != null) {
+        imgBoxProgress.Visible = true;
+        Action action = new Action(PrivUpdateAction);
+        Task task = new Task(action);
+        task.Start();
+      }
+    }
+  }
+}
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.resx
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.resx	(revision 5525)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/Common/UpdateControl.resx	(revision 5525)
@@ -0,0 +1,182 @@
+﻿<?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>
+  <assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
+  <data name="btnRefresh.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
+    <value>
+        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
+</value>
+  </data>
+</root>
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HeuristicLab.Clients.Hive.Views-3.4.csproj
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HeuristicLab.Clients.Hive.Views-3.4.csproj	(revision 5524)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HeuristicLab.Clients.Hive.Views-3.4.csproj	(revision 5525)
@@ -117,4 +117,10 @@
   </ItemGroup>
   <ItemGroup>
+    <Compile Include="Common\UpdateControl.cs">
+      <SubType>UserControl</SubType>
+    </Compile>
+    <Compile Include="Common\UpdateControl.Designer.cs">
+      <DependentUpon>UpdateControl.cs</DependentUpon>
+    </Compile>
     <Compile Include="ExperimentManager\UpdateableHiveExperimentManagerView.cs">
       <SubType>UserControl</SubType>
@@ -128,4 +134,9 @@
     <Compile Include="ExperimentManager\HiveExperimentManagerView.Designer.cs">
       <DependentUpon>HiveExperimentManagerView.cs</DependentUpon>
+    </Compile>
+    <Compile Include="HiveImageLibrary.Designer.cs">
+      <AutoGen>True</AutoGen>
+      <DesignTime>True</DesignTime>
+      <DependentUpon>HiveImageLibrary.resx</DependentUpon>
     </Compile>
     <Compile Include="Properties\Resources.Designer.cs">
@@ -193,4 +204,7 @@
       <DependentUpon>ScheduleControl.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="Common\UpdateControl.resx">
+      <DependentUpon>UpdateControl.cs</DependentUpon>
+    </EmbeddedResource>
     <EmbeddedResource Include="ExperimentManager\HiveExperimentManagerView.resx">
       <DependentUpon>HiveExperimentManagerView.cs</DependentUpon>
@@ -206,4 +220,8 @@
       <DependentUpon>HiveJobView.cs</DependentUpon>
     </EmbeddedResource>
+    <EmbeddedResource Include="HiveImageLibrary.resx">
+      <Generator>PublicResXFileCodeGenerator</Generator>
+      <LastGenOutput>HiveImageLibrary.Designer.cs</LastGenOutput>
+    </EmbeddedResource>
     <EmbeddedResource Include="Progress\ProgressView.resx">
       <DependentUpon>ProgressView.cs</DependentUpon>
@@ -231,4 +249,13 @@
       <Name>HeuristicLab.Services.Hive.Common-3.4</Name>
     </ProjectReference>
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Images\Monitor.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Images\network_center.ico" />
+  </ItemGroup>
+  <ItemGroup>
+    <None Include="Images\status_anim.gif" />
   </ItemGroup>
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HiveImageLibrary.Designer.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HiveImageLibrary.Designer.cs	(revision 5525)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HiveImageLibrary.Designer.cs	(revision 5525)
@@ -0,0 +1,84 @@
+﻿//------------------------------------------------------------------------------
+// <auto-generated>
+//     This code was generated by a tool.
+//     Runtime Version:4.0.30319.1
+//
+//     Changes to this file may cause incorrect behavior and will be lost if
+//     the code is regenerated.
+// </auto-generated>
+//------------------------------------------------------------------------------
+
+namespace HeuristicLab.Clients.Hive.Views {
+    using System;
+    
+    
+    /// <summary>
+    ///   A strongly-typed resource class, for looking up localized strings, etc.
+    /// </summary>
+    // This class was auto-generated by the StronglyTypedResourceBuilder
+    // class via a tool like ResGen or Visual Studio.
+    // To add or remove a member, edit your .ResX file then rerun ResGen
+    // with the /str option, or rebuild your VS project.
+    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+    [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+    public class HiveImageLibrary {
+        
+        private static global::System.Resources.ResourceManager resourceMan;
+        
+        private static global::System.Globalization.CultureInfo resourceCulture;
+        
+        [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+        internal HiveImageLibrary() {
+        }
+        
+        /// <summary>
+        ///   Returns the cached ResourceManager instance used by this class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Resources.ResourceManager ResourceManager {
+            get {
+                if (object.ReferenceEquals(resourceMan, null)) {
+                    global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("HeuristicLab.Clients.Hive.Views.HiveImageLibrary", typeof(HiveImageLibrary).Assembly);
+                    resourceMan = temp;
+                }
+                return resourceMan;
+            }
+        }
+        
+        /// <summary>
+        ///   Overrides the current thread's CurrentUICulture property for all
+        ///   resource lookups using this strongly typed resource class.
+        /// </summary>
+        [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+        public static global::System.Globalization.CultureInfo Culture {
+            get {
+                return resourceCulture;
+            }
+            set {
+                resourceCulture = value;
+            }
+        }
+        
+        public static System.Drawing.Bitmap Progress {
+            get {
+                object obj = ResourceManager.GetObject("Progress", resourceCulture);
+                return ((System.Drawing.Bitmap)(obj));
+            }
+        }
+        
+        public static System.Drawing.Icon Slave {
+            get {
+                object obj = ResourceManager.GetObject("Slave", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+        
+        public static System.Drawing.Icon SlaveGroup {
+            get {
+                object obj = ResourceManager.GetObject("SlaveGroup", resourceCulture);
+                return ((System.Drawing.Icon)(obj));
+            }
+        }
+    }
+}
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HiveImageLibrary.resx
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HiveImageLibrary.resx	(revision 5525)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive.Views/3.4/HiveImageLibrary.resx	(revision 5525)
@@ -0,0 +1,130 @@
+﻿<?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>
+  <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
+  <data name="Progress" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\status_anim.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="Slave" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\Monitor.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+  <data name="SlaveGroup" type="System.Resources.ResXFileRef, System.Windows.Forms">
+    <value>Images\network_center.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
+  </data>
+</root>
Index: /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Administration/HiveAdministrationClient.cs
===================================================================
--- /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Administration/HiveAdministrationClient.cs	(revision 5524)
+++ /branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Clients.Hive/3.4/Administration/HiveAdministrationClient.cs	(revision 5525)
@@ -21,12 +21,24 @@
 
 
+using System.Collections.Generic;
 using HeuristicLab.Common;
 using HeuristicLab.Core;
+using HeuristicLab.Services.Hive.Common.DataTransfer;
+using HeuristicLab.Services.Hive.Common.ServiceContracts;
+
 namespace HeuristicLab.Clients.Hive.Administration {
   [Item("Hive Administration", "Hive Administration")]
   public class HiveAdministrationClient : Item {
+    public List<SlaveGroup> SlaveGroups;
+    public List<Slave> Slaves;
+    public List<string> Users;
 
-    public HiveAdministrationClient() { }
-
+    public HiveAdministrationClient() {
+      UpdateSlaveGroups();
+      Users = new List<string>();
+      Users.Add("Mr. White");
+      Users.Add("Mr. Pink");
+      Users.Add("Mr. Blue");
+    }
 
     protected HiveAdministrationClient(HiveAdministrationClient original, Cloner cloner)
@@ -38,5 +50,18 @@
     }
 
+    public void UpdateSlaveGroups() {
+      using (HeuristicLab.Clients.Common.Disposable<IHiveService> service = ServiceLocator.Instance.GetService()) {
 
+        /*SlaveGroup sg = new SlaveGroup();
+        sg.Name = "Test" + Guid.NewGuid();
+        sg.Description = "TestGroupdesc";
+        sg.Id = Guid.NewGuid();
+        service.Obj.AddSlaveGroup(sg);*/
+
+        SlaveGroups = new List<SlaveGroup>(service.Obj.GetSlaveGroups());
+        Slaves = new List<Slave>(service.Obj.GetSlaves());
+        OnItemImageChanged();
+      }
+    }
   }
 }
