Index: branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/Changes.cs
===================================================================
--- branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/Changes.cs	(revision 1373)
+++ branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/Changes.cs	(revision 1381)
@@ -14,4 +14,6 @@
 
     public Change ChangeType { get; set; }
+
+    public int Position { get; set; }
   }
 }
Index: branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.Designer.cs
===================================================================
--- branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.Designer.cs	(revision 1373)
+++ branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.Designer.cs	(revision 1381)
@@ -31,22 +31,6 @@
       this.addToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.jobToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.userToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
-      this.userToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem();
-      this.groupToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem();
-      this.tcManagementConsole = new System.Windows.Forms.TabControl();
-      this.tpClientControl = new System.Windows.Forms.TabPage();
-      this.scClientControl = new System.Windows.Forms.SplitContainer();
-      this.tvClientControl = new System.Windows.Forms.TreeView();
-      this.lvClientControl = new System.Windows.Forms.ListView();
       this.ilClientControl = new System.Windows.Forms.ImageList(this.components);
-      this.tpJobControl = new System.Windows.Forms.TabPage();
-      this.scJobControl = new System.Windows.Forms.SplitContainer();
-      this.tvJobControl = new System.Windows.Forms.TreeView();
-      this.lvJobControl = new System.Windows.Forms.ListView();
       this.ilJobControl = new System.Windows.Forms.ImageList(this.components);
-      this.tpUserControl = new System.Windows.Forms.TabPage();
-      this.scUserControl = new System.Windows.Forms.SplitContainer();
-      this.tvUserControl = new System.Windows.Forms.TreeView();
-      this.lvUserControl = new System.Windows.Forms.ListView();
       this.ilUserControl = new System.Windows.Forms.ImageList(this.components);
       this.plClientDetails = new System.Windows.Forms.Panel();
@@ -85,18 +69,14 @@
       this.fileSystemWatcher1 = new System.IO.FileSystemWatcher();
       this.updaterWoker = new System.ComponentModel.BackgroundWorker();
+      this.tpJobControl = new System.Windows.Forms.TabPage();
+      this.scJobControl = new System.Windows.Forms.SplitContainer();
+      this.lvJobControl = new System.Windows.Forms.ListView();
+      this.tvJobControl = new System.Windows.Forms.TreeView();
+      this.tpClientControl = new System.Windows.Forms.TabPage();
+      this.scClientControl = new System.Windows.Forms.SplitContainer();
+      this.lvClientControl = new System.Windows.Forms.ListView();
+      this.tvClientControl = new System.Windows.Forms.TreeView();
+      this.tcManagementConsole = new System.Windows.Forms.TabControl();
       this.menuStrip1.SuspendLayout();
-      this.tcManagementConsole.SuspendLayout();
-      this.tpClientControl.SuspendLayout();
-      this.scClientControl.Panel1.SuspendLayout();
-      this.scClientControl.Panel2.SuspendLayout();
-      this.scClientControl.SuspendLayout();
-      this.tpJobControl.SuspendLayout();
-      this.scJobControl.Panel1.SuspendLayout();
-      this.scJobControl.Panel2.SuspendLayout();
-      this.scJobControl.SuspendLayout();
-      this.tpUserControl.SuspendLayout();
-      this.scUserControl.Panel1.SuspendLayout();
-      this.scUserControl.Panel2.SuspendLayout();
-      this.scUserControl.SuspendLayout();
       this.plClientDetails.SuspendLayout();
       ((System.ComponentModel.ISupportInitialize)(this.pbClientControl)).BeginInit();
@@ -106,4 +86,13 @@
       ((System.ComponentModel.ISupportInitialize)(this.pbJobControl)).BeginInit();
       ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).BeginInit();
+      this.tpJobControl.SuspendLayout();
+      this.scJobControl.Panel1.SuspendLayout();
+      this.scJobControl.Panel2.SuspendLayout();
+      this.scJobControl.SuspendLayout();
+      this.tpClientControl.SuspendLayout();
+      this.scClientControl.Panel1.SuspendLayout();
+      this.scClientControl.Panel2.SuspendLayout();
+      this.scClientControl.SuspendLayout();
+      this.tcManagementConsole.SuspendLayout();
       this.SuspendLayout();
       // 
@@ -137,6 +126,5 @@
       // 
       this.addToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.jobToolStripMenuItem,
-            this.userToolStripMenuItem});
+            this.jobToolStripMenuItem});
       this.addToolStripMenuItem.Name = "addToolStripMenuItem";
       this.addToolStripMenuItem.Size = new System.Drawing.Size(38, 20);
@@ -149,91 +137,4 @@
       this.jobToolStripMenuItem.Text = "Job";
       this.jobToolStripMenuItem.Click += new System.EventHandler(this.AddJob_Click);
-      // 
-      // userToolStripMenuItem
-      // 
-      this.userToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
-            this.userToolStripMenuItem1,
-            this.groupToolStripMenuItem2});
-      this.userToolStripMenuItem.Name = "userToolStripMenuItem";
-      this.userToolStripMenuItem.Size = new System.Drawing.Size(107, 22);
-      this.userToolStripMenuItem.Text = "User";
-      // 
-      // userToolStripMenuItem1
-      // 
-      this.userToolStripMenuItem1.Name = "userToolStripMenuItem1";
-      this.userToolStripMenuItem1.Size = new System.Drawing.Size(114, 22);
-      this.userToolStripMenuItem1.Text = "User";
-      this.userToolStripMenuItem1.Click += new System.EventHandler(this.AddUser_Click);
-      // 
-      // groupToolStripMenuItem2
-      // 
-      this.groupToolStripMenuItem2.Name = "groupToolStripMenuItem2";
-      this.groupToolStripMenuItem2.Size = new System.Drawing.Size(114, 22);
-      this.groupToolStripMenuItem2.Text = "Group";
-      this.groupToolStripMenuItem2.Click += new System.EventHandler(this.AddUserGroup_Click);
-      // 
-      // tcManagementConsole
-      // 
-      this.tcManagementConsole.Controls.Add(this.tpClientControl);
-      this.tcManagementConsole.Controls.Add(this.tpJobControl);
-      this.tcManagementConsole.Controls.Add(this.tpUserControl);
-      this.tcManagementConsole.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tcManagementConsole.Location = new System.Drawing.Point(0, 24);
-      this.tcManagementConsole.Name = "tcManagementConsole";
-      this.tcManagementConsole.SelectedIndex = 0;
-      this.tcManagementConsole.Size = new System.Drawing.Size(651, 378);
-      this.tcManagementConsole.TabIndex = 1;
-      // 
-      // tpClientControl
-      // 
-      this.tpClientControl.AllowDrop = true;
-      this.tpClientControl.Controls.Add(this.scClientControl);
-      this.tpClientControl.Location = new System.Drawing.Point(4, 22);
-      this.tpClientControl.Name = "tpClientControl";
-      this.tpClientControl.Padding = new System.Windows.Forms.Padding(3);
-      this.tpClientControl.Size = new System.Drawing.Size(643, 352);
-      this.tpClientControl.TabIndex = 0;
-      this.tpClientControl.Text = "Client Control";
-      this.tpClientControl.UseVisualStyleBackColor = true;
-      // 
-      // scClientControl
-      // 
-      this.scClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scClientControl.Location = new System.Drawing.Point(3, 3);
-      this.scClientControl.Name = "scClientControl";
-      // 
-      // scClientControl.Panel1
-      // 
-      this.scClientControl.Panel1.Controls.Add(this.tvClientControl);
-      // 
-      // scClientControl.Panel2
-      // 
-      this.scClientControl.Panel2.Controls.Add(this.lvClientControl);
-      this.scClientControl.Size = new System.Drawing.Size(637, 346);
-      this.scClientControl.SplitterDistance = 139;
-      this.scClientControl.TabIndex = 0;
-      // 
-      // tvClientControl
-      // 
-      this.tvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tvClientControl.Location = new System.Drawing.Point(0, 0);
-      this.tvClientControl.Name = "tvClientControl";
-      this.tvClientControl.Size = new System.Drawing.Size(139, 346);
-      this.tvClientControl.TabIndex = 0;
-      this.tvClientControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVClientClicked);
-      // 
-      // lvClientControl
-      // 
-      this.lvClientControl.AllowDrop = true;
-      this.lvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.lvClientControl.ImeMode = System.Windows.Forms.ImeMode.Off;
-      this.lvClientControl.LargeImageList = this.ilClientControl;
-      this.lvClientControl.Location = new System.Drawing.Point(0, 0);
-      this.lvClientControl.MultiSelect = false;
-      this.lvClientControl.Name = "lvClientControl";
-      this.lvClientControl.Size = new System.Drawing.Size(494, 346);
-      this.lvClientControl.TabIndex = 0;
-      this.lvClientControl.UseCompatibleStateImageBehavior = false;
-      this.lvClientControl.Click += new System.EventHandler(this.OnLVClientClicked);
       // 
       // ilClientControl
@@ -245,55 +146,4 @@
       this.ilClientControl.Images.SetKeyName(2, "monitor-red.png");
       // 
-      // tpJobControl
-      // 
-      this.tpJobControl.Controls.Add(this.scJobControl);
-      this.tpJobControl.Location = new System.Drawing.Point(4, 22);
-      this.tpJobControl.Name = "tpJobControl";
-      this.tpJobControl.Padding = new System.Windows.Forms.Padding(3);
-      this.tpJobControl.Size = new System.Drawing.Size(643, 352);
-      this.tpJobControl.TabIndex = 1;
-      this.tpJobControl.Text = "Job Control";
-      this.tpJobControl.UseVisualStyleBackColor = true;
-      // 
-      // scJobControl
-      // 
-      this.scJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scJobControl.Location = new System.Drawing.Point(3, 3);
-      this.scJobControl.Name = "scJobControl";
-      // 
-      // scJobControl.Panel1
-      // 
-      this.scJobControl.Panel1.Controls.Add(this.tvJobControl);
-      // 
-      // scJobControl.Panel2
-      // 
-      this.scJobControl.Panel2.Controls.Add(this.lvJobControl);
-      this.scJobControl.Size = new System.Drawing.Size(637, 346);
-      this.scJobControl.SplitterDistance = 139;
-      this.scJobControl.TabIndex = 1;
-      // 
-      // tvJobControl
-      // 
-      this.tvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tvJobControl.Location = new System.Drawing.Point(0, 0);
-      this.tvJobControl.Name = "tvJobControl";
-      this.tvJobControl.Size = new System.Drawing.Size(139, 346);
-      this.tvJobControl.TabIndex = 2;
-      this.tvJobControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVJobControlClicked);
-      // 
-      // lvJobControl
-      // 
-      this.lvJobControl.AllowDrop = true;
-      this.lvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.lvJobControl.LargeImageList = this.ilJobControl;
-      this.lvJobControl.Location = new System.Drawing.Point(0, 0);
-      this.lvJobControl.MultiSelect = false;
-      this.lvJobControl.Name = "lvJobControl";
-      this.lvJobControl.Size = new System.Drawing.Size(494, 346);
-      this.lvJobControl.TabIndex = 0;
-      this.lvJobControl.UseCompatibleStateImageBehavior = false;
-      this.lvJobControl.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvJobControl_MouseMove);
-      this.lvJobControl.Click += new System.EventHandler(this.OnLVJobControlClicked);
-      // 
       // ilJobControl
       // 
@@ -301,53 +151,4 @@
       this.ilJobControl.TransparentColor = System.Drawing.Color.Transparent;
       this.ilJobControl.Images.SetKeyName(0, "PlayHS.png");
-      // 
-      // tpUserControl
-      // 
-      this.tpUserControl.Controls.Add(this.scUserControl);
-      this.tpUserControl.Location = new System.Drawing.Point(4, 22);
-      this.tpUserControl.Name = "tpUserControl";
-      this.tpUserControl.Padding = new System.Windows.Forms.Padding(3);
-      this.tpUserControl.Size = new System.Drawing.Size(643, 352);
-      this.tpUserControl.TabIndex = 2;
-      this.tpUserControl.Text = "User Control";
-      this.tpUserControl.UseVisualStyleBackColor = true;
-      // 
-      // scUserControl
-      // 
-      this.scUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.scUserControl.Location = new System.Drawing.Point(3, 3);
-      this.scUserControl.Name = "scUserControl";
-      // 
-      // scUserControl.Panel1
-      // 
-      this.scUserControl.Panel1.Controls.Add(this.tvUserControl);
-      // 
-      // scUserControl.Panel2
-      // 
-      this.scUserControl.Panel2.Controls.Add(this.lvUserControl);
-      this.scUserControl.Size = new System.Drawing.Size(637, 346);
-      this.scUserControl.SplitterDistance = 139;
-      this.scUserControl.TabIndex = 1;
-      // 
-      // tvUserControl
-      // 
-      this.tvUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.tvUserControl.Location = new System.Drawing.Point(0, 0);
-      this.tvUserControl.Name = "tvUserControl";
-      this.tvUserControl.Size = new System.Drawing.Size(139, 346);
-      this.tvUserControl.TabIndex = 1;
-      this.tvUserControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVUserControlClicked);
-      // 
-      // lvUserControl
-      // 
-      this.lvUserControl.AllowDrop = true;
-      this.lvUserControl.Dock = System.Windows.Forms.DockStyle.Fill;
-      this.lvUserControl.LargeImageList = this.ilUserControl;
-      this.lvUserControl.Location = new System.Drawing.Point(0, 0);
-      this.lvUserControl.Name = "lvUserControl";
-      this.lvUserControl.Size = new System.Drawing.Size(494, 346);
-      this.lvUserControl.TabIndex = 1;
-      this.lvUserControl.UseCompatibleStateImageBehavior = false;
-      this.lvUserControl.Click += new System.EventHandler(this.OnLVUserControlClicked);
       // 
       // ilUserControl
@@ -465,5 +266,4 @@
       this.btnUserControlClose.Text = "Close";
       this.btnUserControlClose.UseVisualStyleBackColor = true;
-      this.btnUserControlClose.Click += new System.EventHandler(this.btnUserControlClose_Click);
       // 
       // pbUserControl
@@ -669,4 +469,119 @@
       // 
       this.updaterWoker.DoWork += new System.ComponentModel.DoWorkEventHandler(this.updaterWoker_DoWork);
+      this.updaterWoker.RunWorkerCompleted += new System.ComponentModel.RunWorkerCompletedEventHandler(this.updaterWoker_RunWorkerCompleted);
+      // 
+      // tpJobControl
+      // 
+      this.tpJobControl.Controls.Add(this.scJobControl);
+      this.tpJobControl.Location = new System.Drawing.Point(4, 22);
+      this.tpJobControl.Name = "tpJobControl";
+      this.tpJobControl.Padding = new System.Windows.Forms.Padding(3);
+      this.tpJobControl.Size = new System.Drawing.Size(643, 352);
+      this.tpJobControl.TabIndex = 1;
+      this.tpJobControl.Text = "Job Control";
+      this.tpJobControl.UseVisualStyleBackColor = true;
+      // 
+      // scJobControl
+      // 
+      this.scJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scJobControl.Location = new System.Drawing.Point(3, 3);
+      this.scJobControl.Name = "scJobControl";
+      // 
+      // scJobControl.Panel1
+      // 
+      this.scJobControl.Panel1.Controls.Add(this.tvJobControl);
+      // 
+      // scJobControl.Panel2
+      // 
+      this.scJobControl.Panel2.Controls.Add(this.lvJobControl);
+      this.scJobControl.Size = new System.Drawing.Size(637, 346);
+      this.scJobControl.SplitterDistance = 139;
+      this.scJobControl.TabIndex = 1;
+      // 
+      // lvJobControl
+      // 
+      this.lvJobControl.AllowDrop = true;
+      this.lvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lvJobControl.LargeImageList = this.ilJobControl;
+      this.lvJobControl.Location = new System.Drawing.Point(0, 0);
+      this.lvJobControl.MultiSelect = false;
+      this.lvJobControl.Name = "lvJobControl";
+      this.lvJobControl.Size = new System.Drawing.Size(494, 346);
+      this.lvJobControl.TabIndex = 0;
+      this.lvJobControl.UseCompatibleStateImageBehavior = false;
+      this.lvJobControl.MouseMove += new System.Windows.Forms.MouseEventHandler(this.lvJobControl_MouseMove);
+      this.lvJobControl.Click += new System.EventHandler(this.OnLVJobControlClicked);
+      // 
+      // tvJobControl
+      // 
+      this.tvJobControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tvJobControl.Location = new System.Drawing.Point(0, 0);
+      this.tvJobControl.Name = "tvJobControl";
+      this.tvJobControl.Size = new System.Drawing.Size(139, 346);
+      this.tvJobControl.TabIndex = 2;
+      this.tvJobControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVJobControlClicked);
+      // 
+      // tpClientControl
+      // 
+      this.tpClientControl.AllowDrop = true;
+      this.tpClientControl.Controls.Add(this.scClientControl);
+      this.tpClientControl.Location = new System.Drawing.Point(4, 22);
+      this.tpClientControl.Name = "tpClientControl";
+      this.tpClientControl.Padding = new System.Windows.Forms.Padding(3);
+      this.tpClientControl.Size = new System.Drawing.Size(643, 352);
+      this.tpClientControl.TabIndex = 0;
+      this.tpClientControl.Text = "Client Control";
+      this.tpClientControl.UseVisualStyleBackColor = true;
+      // 
+      // scClientControl
+      // 
+      this.scClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.scClientControl.Location = new System.Drawing.Point(3, 3);
+      this.scClientControl.Name = "scClientControl";
+      // 
+      // scClientControl.Panel1
+      // 
+      this.scClientControl.Panel1.Controls.Add(this.tvClientControl);
+      // 
+      // scClientControl.Panel2
+      // 
+      this.scClientControl.Panel2.Controls.Add(this.lvClientControl);
+      this.scClientControl.Size = new System.Drawing.Size(637, 346);
+      this.scClientControl.SplitterDistance = 139;
+      this.scClientControl.TabIndex = 0;
+      // 
+      // lvClientControl
+      // 
+      this.lvClientControl.AllowDrop = true;
+      this.lvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.lvClientControl.ImeMode = System.Windows.Forms.ImeMode.Off;
+      this.lvClientControl.LargeImageList = this.ilClientControl;
+      this.lvClientControl.Location = new System.Drawing.Point(0, 0);
+      this.lvClientControl.MultiSelect = false;
+      this.lvClientControl.Name = "lvClientControl";
+      this.lvClientControl.Size = new System.Drawing.Size(494, 346);
+      this.lvClientControl.TabIndex = 0;
+      this.lvClientControl.UseCompatibleStateImageBehavior = false;
+      this.lvClientControl.Click += new System.EventHandler(this.OnLVClientClicked);
+      // 
+      // tvClientControl
+      // 
+      this.tvClientControl.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tvClientControl.Location = new System.Drawing.Point(0, 0);
+      this.tvClientControl.Name = "tvClientControl";
+      this.tvClientControl.Size = new System.Drawing.Size(139, 346);
+      this.tvClientControl.TabIndex = 0;
+      this.tvClientControl.AfterSelect += new System.Windows.Forms.TreeViewEventHandler(this.OnTVClientClicked);
+      // 
+      // tcManagementConsole
+      // 
+      this.tcManagementConsole.Controls.Add(this.tpClientControl);
+      this.tcManagementConsole.Controls.Add(this.tpJobControl);
+      this.tcManagementConsole.Dock = System.Windows.Forms.DockStyle.Fill;
+      this.tcManagementConsole.Location = new System.Drawing.Point(0, 24);
+      this.tcManagementConsole.Name = "tcManagementConsole";
+      this.tcManagementConsole.SelectedIndex = 0;
+      this.tcManagementConsole.Size = new System.Drawing.Size(651, 378);
+      this.tcManagementConsole.TabIndex = 1;
       // 
       // HiveServerManagementConsole
@@ -683,17 +598,4 @@
       this.menuStrip1.ResumeLayout(false);
       this.menuStrip1.PerformLayout();
-      this.tcManagementConsole.ResumeLayout(false);
-      this.tpClientControl.ResumeLayout(false);
-      this.scClientControl.Panel1.ResumeLayout(false);
-      this.scClientControl.Panel2.ResumeLayout(false);
-      this.scClientControl.ResumeLayout(false);
-      this.tpJobControl.ResumeLayout(false);
-      this.scJobControl.Panel1.ResumeLayout(false);
-      this.scJobControl.Panel2.ResumeLayout(false);
-      this.scJobControl.ResumeLayout(false);
-      this.tpUserControl.ResumeLayout(false);
-      this.scUserControl.Panel1.ResumeLayout(false);
-      this.scUserControl.Panel2.ResumeLayout(false);
-      this.scUserControl.ResumeLayout(false);
       this.plClientDetails.ResumeLayout(false);
       this.plClientDetails.PerformLayout();
@@ -706,4 +608,13 @@
       ((System.ComponentModel.ISupportInitialize)(this.pbJobControl)).EndInit();
       ((System.ComponentModel.ISupportInitialize)(this.fileSystemWatcher1)).EndInit();
+      this.tpJobControl.ResumeLayout(false);
+      this.scJobControl.Panel1.ResumeLayout(false);
+      this.scJobControl.Panel2.ResumeLayout(false);
+      this.scJobControl.ResumeLayout(false);
+      this.tpClientControl.ResumeLayout(false);
+      this.scClientControl.Panel1.ResumeLayout(false);
+      this.scClientControl.Panel2.ResumeLayout(false);
+      this.scClientControl.ResumeLayout(false);
+      this.tcManagementConsole.ResumeLayout(false);
       this.ResumeLayout(false);
       this.PerformLayout();
@@ -716,25 +627,9 @@
     private System.Windows.Forms.ToolStripMenuItem informationToolStripMenuItem;
     private System.Windows.Forms.ToolStripMenuItem closeToolStripMenuItem;
-    private System.Windows.Forms.TabControl tcManagementConsole;
-    private System.Windows.Forms.TabPage tpClientControl;
-    private System.Windows.Forms.TabPage tpJobControl;
-    private System.Windows.Forms.SplitContainer scClientControl;
-    private System.Windows.Forms.TabPage tpUserControl;
-    private System.Windows.Forms.TreeView tvClientControl;
-    private System.Windows.Forms.ListView lvClientControl;
-    private System.Windows.Forms.SplitContainer scJobControl;
-    private System.Windows.Forms.ListView lvJobControl;
-    private System.Windows.Forms.SplitContainer scUserControl;
     private System.Windows.Forms.TreeView treeView2;
     private System.Windows.Forms.ListView listView2;
-    private System.Windows.Forms.TreeView tvJobControl;
-    private System.Windows.Forms.TreeView tvUserControl;
-    private System.Windows.Forms.ListView lvUserControl;
     private System.Windows.Forms.ImageList ilClientControl;
     private System.Windows.Forms.ToolStripMenuItem addToolStripMenuItem;
     private System.Windows.Forms.ToolStripMenuItem jobToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem userToolStripMenuItem;
-    private System.Windows.Forms.ToolStripMenuItem userToolStripMenuItem1;
-    private System.Windows.Forms.ToolStripMenuItem groupToolStripMenuItem2;
     private System.Windows.Forms.ImageList ilUserControl;
     private System.Windows.Forms.Timer timerSyncronize;
@@ -772,4 +667,13 @@
     private System.Windows.Forms.Label lblState;
     private System.ComponentModel.BackgroundWorker updaterWoker;
+    private System.Windows.Forms.TabControl tcManagementConsole;
+    private System.Windows.Forms.TabPage tpClientControl;
+    private System.Windows.Forms.SplitContainer scClientControl;
+    private System.Windows.Forms.TreeView tvClientControl;
+    private System.Windows.Forms.ListView lvClientControl;
+    private System.Windows.Forms.TabPage tpJobControl;
+    private System.Windows.Forms.SplitContainer scJobControl;
+    private System.Windows.Forms.TreeView tvJobControl;
+    private System.Windows.Forms.ListView lvJobControl;
   }
 }
Index: branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs
===================================================================
--- branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs	(revision 1373)
+++ branches/Hive_Management_Console_Refactoring_Ticket508/HeuristicLab.Hive.Server.Console/HiveServerManagementConsole.cs	(revision 1381)
@@ -44,16 +44,11 @@
     private ResponseList<ClientInfo> clientInfo = null;
     private ResponseList<Job> jobs = null;
-    private ResponseList<UserGroup> userGroups = null;
-    private ResponseList<User> usersList = null;
 
     private Dictionary<long, ListViewGroup> clientObjects;
     private Dictionary<long, ListViewItem> clientInfoObjects;
     private Dictionary<long, ListViewItem> jobObjects;
-    private Dictionary<long, ListViewGroup> userGroupsObjects;
-    private Dictionary<long, ListViewItem> userListObjects;
 
     private Job currentJob = null;
     private ClientInfo currentClient = null;
-    private User currentUser = null;
     private string nameCurrentJob = "";
     private string nameCurrentClient = "";
@@ -72,5 +67,4 @@
       AddClients();
       AddJobs();
-      AddUsers();
       timerSyncronize.Start();
     }
@@ -82,5 +76,4 @@
     /// <param name="e"></param>
     private void TickSync(object obj, EventArgs e) {
-      //Refresh();
       if (!updaterWoker.IsBusy) {
         updaterWoker.RunWorkerAsync();
@@ -138,4 +131,6 @@
     }
 
+
+    List<ListViewGroup> jobGroup;
     /// <summary>
     /// Adds jobs to ListView and TreeView
@@ -154,4 +149,10 @@
         ListViewGroup lvJobFinished = new ListViewGroup("finished", HorizontalAlignment.Left);
         ListViewGroup lvJobPending = new ListViewGroup("pending", HorizontalAlignment.Left);
+
+        jobGroup = new List<ListViewGroup>();
+        jobGroup.Add(lvJobCalculating);
+        jobGroup.Add(lvJobFinished);
+        jobGroup.Add(lvJobPending);
+        
         tvJobControl.Nodes.Add("calculating");
         tvJobControl.Nodes.Add("finished");
@@ -188,55 +189,4 @@
         if (flagJob) {
           JobClicked();
-        }
-      }
-      catch (Exception ex) {
-        closeFormEvent(true, true);
-        this.Close();
-      }
-    }
-
-    /// <summary>
-    /// Adds users to ListView and TreeView
-    /// </summary>
-    private void AddUsers() {
-      try {
-        userGroupsObjects = new Dictionary<long, ListViewGroup>();
-        userListObjects = new Dictionary<long, ListViewItem>();
-        IUserRoleManager userRoleManager =
-          ServiceLocator.GetUserRoleManager();
-
-        userGroups = userRoleManager.GetAllUserGroups();
-
-        lvUserControl.Items.Clear();
-        tvUserControl.Nodes.Clear();
-
-        foreach (UserGroup ug in userGroups.List) {
-          tvUserControl.Nodes.Add(ug.Name);
-          ListViewGroup lvg = new ListViewGroup(ug.Name, HorizontalAlignment.Left);
-
-          foreach (PermissionOwner permOwner in ug.Members) {
-            if (permOwner is User) {
-              User users = permOwner as User;
-              tvUserControl.Nodes[tvUserControl.Nodes.Count - 1].Nodes.Add(users.Name);
-              ListViewItem item = new ListViewItem(users.Name, 0, lvg);
-              lvUserControl.Items.Add(item);
-              userListObjects.Add(users.Id, item);
-            }
-          }
-          lvUserControl.Groups.Add(lvg);
-          userGroupsObjects.Add(ug.Id, lvg);
-
-        } // Users
-        usersList = userRoleManager.GetAllUsers();
-        ListViewGroup lvunsorted = new ListViewGroup("unsorted", HorizontalAlignment.Left);
-        foreach (User u in usersList.List) {
-          tvUserControl.Nodes.Add(u.Name);
-          lvUserControl.Items.Add(new ListViewItem(u.Name, 0, lvunsorted));
-        }
-        lvUserControl.BeginUpdate();
-        lvUserControl.Groups.Add(lvunsorted);
-        lvUserControl.EndUpdate();
-        if (flagUser) {
-          UserClicked();
         }
       }
@@ -337,19 +287,4 @@
     }
 
-    /// <summary>
-    /// if one user is clicked, a panel is opened with the details
-    /// </summary>
-    private void UserClicked() {
-      int i = 0;
-      while (usersList.List[i].Name != nameCurrentUser) {
-        i++;
-      }
-      currentUser = usersList.List[i];
-      scUserControl.Panel2.Controls.Clear();
-      scUserControl.Panel2.Controls.Add(plUserDetails);
-      pbUserControl.Image = ilUserControl.Images[0];
-      lblUserName.Text = currentUser.Id.ToString();
-    }
-
     #region Eventhandlers
     /// <summary>
@@ -376,26 +311,30 @@
     }
 
+    private void Refresh() {
+      foreach (Changes change in changes) {
+        if (change.Types == Type.Job) {
+          if (change.ChangeType == Change.Update) {
+            //if (jobObjects[change.ID].ListView.Groups.ToString() == ) {}
+            //ListViewItem lvi = new ListViewItem(
+            //  jobs.List[change.Position].Id.ToString(), 0);
+          } else if (change.ChangeType == Change.Create) {
+            ListViewItem lvi = new ListViewItem(
+              jobs.List[change.Position].Id.ToString(), 0, jobGroup[2]);
+            jobObjects.Add(change.ID, lvi);
+            lvJobControl.Items.Add(lvi);
+
+          } else if (change.ChangeType == Change.Delete) {
+            jobObjects.Remove(change.Position);
+          }
+
+        }
+      }
+
+    }
+
     private void AddJob_Click(object sender, EventArgs e) {
       AddJobForm newForm = new AddJobForm();
       newForm.Show();
       //newForm.addJobEvent += new addDelegate(updaterWoker.RunWorkerAsync);
-    }
-
-    private void Refresh() {
-      AddClients();
-      AddJobs();
-      AddUsers();
-    }
-
-    private void AddUser_Click(object sender, EventArgs e) {
-      AddUserForm newForm = new AddUserForm("User", false);
-      newForm.Show();
-      newForm.addUserEvent += new addDelegate(Refresh);
-    }
-
-    private void AddUserGroup_Click(object sender, EventArgs e) {
-      AddUserForm newForm = new AddUserForm("User", true);
-      newForm.Show();
-      newForm.addUserEvent += new addDelegate(Refresh);                                             
     }
 
@@ -437,26 +376,4 @@
     }
 
-    private void OnLVUserControlClicked(object sender, EventArgs e) {
-      nameCurrentUser = lvUserControl.SelectedItems[0].Text;
-      flagUser = true;
-      UserClicked();
-    }
-
-    private void OnTVUserControlClicked(object sender, TreeViewEventArgs e) {
-      bool usergroup = false;
-      foreach (UserGroup ug in userGroups.List) {
-        if (tvUserControl.SelectedNode.Text == ug.Name) {
-          usergroup = true;
-        }
-      }
-      if (usergroup == false) {
-        nameCurrentUser = tvUserControl.SelectedNode.Text;
-        flagUser = true;
-        UserClicked();
-      }
-
-    }
-
-
     private void btnClientClose_Click(object sender, EventArgs e) {
       scClientControl.Panel2.Controls.Clear();
@@ -469,10 +386,4 @@
       scJobControl.Panel2.Controls.Add(lvJobControl);
       flagJob = false;
-    }
-
-    private void btnUserControlClose_Click(object sender, EventArgs e) {
-      scUserControl.Panel2.Controls.Clear();
-      scUserControl.Panel2.Controls.Add(lvUserControl);
-      flagUser = false;
     }
 
@@ -493,9 +404,9 @@
       clientInfo = clientManager.GetAllClients();
 
-      ResponseList<ClientInfo> clientInfoOldHelp;
+      IDictionary<int, ClientInfo> clientInfoOldHelp;
 
       CloneList(clientInfoOld, out clientInfoOldHelp);
 
-      GetDelta(clientInfoOld.List, clientInfoOldHelp.List);
+      GetDelta(clientInfoOld.List, clientInfoOldHelp);
       #endregion
 
@@ -505,9 +416,9 @@
       clients = clientManager.GetAllClientGroups();
 
-      ResponseList<ClientGroup> clientsOldHelp;
+      IDictionary<int, ClientGroup> clientsOldHelp;
 
       CloneList(clientsOld, out clientsOldHelp);
 
-      GetDelta(clientsOld.List, clientsOldHelp.List);
+      GetDelta(clientsOld.List, clientsOldHelp);
       #endregion
 
@@ -519,13 +430,17 @@
       jobs = jobManager.GetAllJobs();
 
-      ResponseList<Job> jobsOldHelp = new ResponseList<Job>();
+      IDictionary<int, Job> jobsOldHelp;
       CloneList(jobsOld, out jobsOldHelp);
       
       //System.Diagnostics.Debug.WriteLine(jobsOldHelp.List[0].Id.ToString());
 
-      GetDelta(jobsOld.List, jobsOldHelp.List);
+      GetDelta(jobsOld.List, jobsOldHelp);
 
       #endregion
 
+      foreach (Changes change in changes) {
+        System.Diagnostics.Debug.WriteLine(change.ID + " " + change.ChangeType);
+      }
+
     }
     #endregion
@@ -533,25 +448,22 @@
     #region Helper methods
 
-    private void CloneList(ResponseList<Job> oldList, out ResponseList<Job> newList) {
-      newList = new ResponseList<Job>();
-      newList.List = new List<Job>();
-      foreach (Job item in oldList.List) {
-        newList.List.Add(item);
-      }
-    }
-
-    private void CloneList(ResponseList<ClientInfo> oldList, out ResponseList<ClientInfo> newList) {
-      newList = new ResponseList<ClientInfo>();
-      newList.List = new List<ClientInfo>();
-      foreach (ClientInfo item in oldList.List) {
-        newList.List.Add(item);
-      }
-    }
-
-    private void CloneList(ResponseList<ClientGroup> oldList, out ResponseList<ClientGroup> newList) {
-      newList = new ResponseList<ClientGroup>();
-      newList.List = new List<ClientGroup>();
-      foreach (ClientGroup item in oldList.List) {
-        newList.List.Add(item);
+    private void CloneList(ResponseList<Job> oldList, out IDictionary<int, Job> newList) {
+      newList = new Dictionary<int, Job>();
+      for (int i = 0; i < oldList.List.Count; i++) {
+        newList.Add(i, oldList.List[i]);
+      }
+    }
+
+    private void CloneList(ResponseList<ClientInfo> oldList, out IDictionary<int, ClientInfo> newList) {
+      newList = new Dictionary<int, ClientInfo>();
+      for (int i = 0; i < oldList.List.Count; i ++) {
+        newList.Add(i, oldList.List[i]);
+      }
+    }
+
+    private void CloneList(ResponseList<ClientGroup> oldList, out IDictionary<int, ClientGroup> newList) {
+      newList = new Dictionary<int, ClientGroup>();
+      for (int i = 0; i < oldList.List.Count; i++) {
+        newList.Add(i, oldList.List[i]);
       }
     }
@@ -563,21 +475,26 @@
     }
 
-    private void GetDelta(IList<ClientInfo> oldClient, IList<ClientInfo> helpClients) {
+    private void GetDelta(IList<ClientInfo> oldClient, IDictionary<int, ClientInfo> helpClients) {
       bool found = false;
 
-      foreach (ClientInfo ci in clientInfo.List) {
-        for (int i = 0; i < oldClient.Count; i++) {
-          ClientInfo cio = oldClient[i];
+      for (int i = 0; i < clientInfo.List.Count; i ++) {
+        ClientInfo ci = clientInfo.List[i];
+        for (int j = 0; j < oldClient.Count; j++) {
+          ClientInfo cio = oldClient[j];
           if (ci.Id.Equals(cio.Id)) {
             found = true;
             if (ci.State != cio.State) {
-              changes.Add(new Changes { Types = Type.Client, ID = ci.Id, ChangeType = Change.Update });
-            }
-            for (int j = 0; j < helpClients.Count; j++) {
-              if (cio.Id.Equals(helpClients[j])) {
-                helpClients.RemoveAt(j);
+              changes.Add(new Changes { Types = Type.Client, ID = ci.Id, ChangeType = Change.Update, Position = i });
+            }
+            int removeAt = -1;
+            foreach (KeyValuePair<int, ClientInfo> kvp in helpClients) {
+              if (cio.Id.Equals(kvp.Value.Id)) {
+                removeAt = kvp.Key;
                 break;
               }
             }
+            if (removeAt >= 0) {
+              helpClients.Remove(removeAt);
+            }
             break;
           }
@@ -588,16 +505,17 @@
         found = false;
       }
-      foreach (ClientInfo ci in helpClients) {
-        changes.Add(new Changes { Types = Type.Client, ID = ci.Id, ChangeType = Change.Delete });
-      }
-
-    }
-
-    private void GetDelta(IList<ClientGroup> oldClient, IList<ClientGroup> helpClients) {
+      foreach (KeyValuePair<int, ClientInfo> kvp in helpClients) {
+        changes.Add(new Changes { Types = Type.Client, ID = kvp.Value.Id, ChangeType = Change.Delete, Position = kvp.Key });
+      }
+
+    }
+
+    private void GetDelta(IList<ClientGroup> oldClient, IDictionary<int, ClientGroup> helpClients) {
 
       bool found = false;
-      foreach (ClientGroup cg in clients.List) {
-        for (int i = 0; i < oldClient.Count; i++) {
-          ClientGroup cgo = oldClient[i];
+      for (int i = 0; i < clients.List.Count; i++) {
+        ClientGroup cg = clients.List[i];
+        for (int j = 0; j < oldClient.Count; i++) {
+          ClientGroup cgo = oldClient[j];
           if (cg.Id.Equals(cgo.Id)) {
             found = true;
@@ -606,12 +524,12 @@
                 if (resource.Id.Equals(resourceold.Id)) {
                   if (resourceold.Name != resource.Name) {
-                    changes.Add(new Changes { Types = Type.Client, ID = cg.Id, ChangeType = Change.Update });
+                    changes.Add(new Changes { Types = Type.Client, ID = cg.Id, ChangeType = Change.Update, Position = i });
                   }
                 }
               }
             }
-            for (int j = 0; j < helpClients.Count; j++) {
-              if (cgo.Id.Equals(helpClients[j])) {
-                helpClients.RemoveAt(j);
+            for (int k = 0; k < helpClients.Count; k++) {
+              if (cgo.Id.Equals(helpClients[k].Id)) {
+                helpClients.Remove(k);
                 break;
               }
@@ -625,31 +543,37 @@
         found = false;
       }
-      foreach (ClientGroup cg in helpClients) {
-        changes.Add(new Changes { Types = Type.ClientGroup, ID = cg.Id, ChangeType = Change.Delete });
-      }
-    }
-     
-    private void GetDelta(IList<Job> oldJobs, IList<Job> helpJobs) {
+      foreach (KeyValuePair<int, ClientGroup> kvp in helpClients) {
+        changes.Add(new Changes { Types = Type.ClientGroup, ID = kvp.Value.Id, ChangeType = Change.Delete, Position = kvp.Key });
+      }
+    }
+
+    private void GetDelta(IList<Job> oldJobs, IDictionary<int, Job> helpJobs) {
       bool found = false;
-      foreach (Job job in jobs.List) {
-        
-        for (int i = 0; i < oldJobs.Count; i++) {
-          
-          Job jobold = oldJobs[i];
+      for (int i = 0; i < jobs.List.Count; i ++ ) {
+        Job job = jobs.List[i];
+        for (int j = 0; j < oldJobs.Count; j++) {
+
+          Job jobold = oldJobs[j];
 
           if (job.Id.Equals(jobold.Id)) {
 
             found = true;
-            if (IsEqual(job.Client, jobold.Client)) {
-              changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Update });
+            if (job.State != State.offline) {
+              if (!IsEqual(job.Client, jobold.Client)) {
+                changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Update });
+              }
             } else if (job.DateCalculated != jobold.DateCalculated) {
               changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Update });
             }
 
-            for (int j = 0; j < helpJobs.Count; j++) {
-              if (job.Id.Equals(helpJobs[j].Id)) {
-                helpJobs.RemoveAt(j);
+            int removeAt = -1;
+            foreach (KeyValuePair<int, Job> kvp in helpJobs) {
+              if (job.Id.Equals(kvp.Value.Id)) {
+                removeAt = kvp.Key;
                 break;
               }
+            }
+            if (removeAt >= 0) {
+              helpJobs.Remove(removeAt);
             }
             break;
@@ -663,7 +587,7 @@
         found = false;
       }
-      foreach (Job job in helpJobs) {
-        changes.Add(new Changes { Types = Type.Job, ID = job.Id, ChangeType = Change.Delete });
-        System.Diagnostics.Debug.WriteLine("delete Job: " + job.Id);
+      foreach (KeyValuePair<int, Job> kvp in helpJobs) {
+        changes.Add(new Changes { Types = Type.Job, ID = kvp.Value.Id, ChangeType = Change.Delete, Position = kvp.Key });
+        System.Diagnostics.Debug.WriteLine("delete Job: " + kvp.Value.Id);
       }
     }
@@ -671,4 +595,8 @@
 
     #endregion
+
+    private void updaterWoker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) {
+      Refresh();
+    }
 
 
