Index: /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.Designer.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.Designer.cs	(revision 2006)
+++ /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.Designer.cs	(revision 2007)
@@ -33,4 +33,5 @@
       this.jobToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.groupToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
+      this.projectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.viewToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.largeIconsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -87,5 +88,4 @@
       this.tcManagementConsole = new System.Windows.Forms.TabControl();
       this.checkBox1 = new System.Windows.Forms.CheckBox();
-      this.projectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
       this.menuStrip1.SuspendLayout();
       this.plClientDetails.SuspendLayout();
@@ -174,4 +174,12 @@
       this.groupToolStripMenuItem.Click += new System.EventHandler(this.groupToolStripMenuItem_Click);
       // 
+      // projectToolStripMenuItem
+      // 
+      this.projectToolStripMenuItem.Name = "projectToolStripMenuItem";
+      this.projectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
+      this.projectToolStripMenuItem.Size = new System.Drawing.Size(157, 22);
+      this.projectToolStripMenuItem.Text = "Project";
+      this.projectToolStripMenuItem.Click += new System.EventHandler(this.projectToolStripMenuItem_Click);
+      // 
       // viewToolStripMenuItem
       // 
@@ -637,4 +645,5 @@
       this.tvClientControl.Size = new System.Drawing.Size(151, 357);
       this.tvClientControl.TabIndex = 0;
+      this.tvClientControl.DragLeave += new System.EventHandler(this.tvClientControl_DragLeave);
       this.tvClientControl.MouseUp += new System.Windows.Forms.MouseEventHandler(this.tvClientControl_MouseUp);
       this.tvClientControl.NodeMouseClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.tvClientControl_NodeMouseClick);
@@ -667,5 +676,4 @@
       this.lvClientControl.LargeImageList = this.ilLargeImgClient;
       this.lvClientControl.Location = new System.Drawing.Point(0, 0);
-      this.lvClientControl.MultiSelect = false;
       this.lvClientControl.Name = "lvClientControl";
       this.lvClientControl.Size = new System.Drawing.Size(299, 386);
@@ -695,12 +703,4 @@
       this.checkBox1.Text = "checkBox1";
       this.checkBox1.UseVisualStyleBackColor = true;
-      // 
-      // projectToolStripMenuItem
-      // 
-      this.projectToolStripMenuItem.Name = "projectToolStripMenuItem";
-      this.projectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.P)));
-      this.projectToolStripMenuItem.Size = new System.Drawing.Size(157, 22);
-      this.projectToolStripMenuItem.Text = "Project";
-      this.projectToolStripMenuItem.Click += new System.EventHandler(this.projectToolStripMenuItem_Click);
       // 
       // HiveServerManagementConsole
Index: /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.cs
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.cs	(revision 2006)
+++ /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.cs	(revision 2007)
@@ -56,5 +56,5 @@
     private ClientInfo currentClient = null;
 
-    private TreeNode currentNode = null;
+    private TreeNode currentGroupNode = null;
     Guid parentgroup = Guid.Empty;
     private ToolTip tt = new ToolTip();
@@ -80,4 +80,5 @@
     }
 
+    private TreeNode hoverNode; // node being hovered over during DnD
     private void Init() {
 
@@ -113,7 +114,72 @@
         IClientManager clientManager = ServiceLocator.GetClientManager();
         if (tvClientControl.SelectedNode != null) {
-          //  Delete Group
+          Response resp = clientManager.DeleteClientGroup(((ClientGroup)tvClientControl.SelectedNode.Tag).Id);
+          if (tvClientControl.SelectedNode == currentGroupNode) {
+            currentGroupNode = null;
+          }
+          tvClientControl.Nodes.Remove(tvClientControl.SelectedNode);
+          AddClients();
         }
       };
+
+      lvClientControl.ItemDrag += delegate(object sender, ItemDragEventArgs e) {
+        List<string> itemIDs = new List<string>((sender as ListView).SelectedItems.Count);
+        foreach (ListViewItem item in (sender as ListView).SelectedItems) {
+          itemIDs.Add(item.Name);
+        }
+        (sender as ListView).DoDragDrop(itemIDs.ToArray(), DragDropEffects.Move);
+      };
+
+      tvClientControl.DragEnter += delegate(object sender, DragEventArgs e) {
+        e.Effect = DragDropEffects.Move;
+      };
+
+      tvClientControl.DragOver += delegate(object sender, DragEventArgs e) {
+        Point mouseLocation = tvClientControl.PointToClient(new Point(e.X, e.Y));
+        TreeNode node = tvClientControl.GetNodeAt(mouseLocation);
+        if (node != null && ((ClientGroup)node.Tag).Id != Guid.Empty) {
+          e.Effect = DragDropEffects.Move;
+          if (hoverNode == null) {
+            node.BackColor = Color.LightBlue;
+            node.ForeColor = Color.White;
+            hoverNode = node;
+          } else if (hoverNode != node) {
+            hoverNode.BackColor = Color.White;
+            hoverNode.ForeColor = Color.Black;
+            node.BackColor = Color.LightBlue;
+            node.ForeColor = Color.White;
+            hoverNode = node;
+          }
+        } else {
+          e.Effect = DragDropEffects.None;
+        }
+      };
+
+      tvClientControl.DragDrop += delegate(object sender, DragEventArgs e) {
+        if (e.Data.GetDataPresent(typeof(string[]))) {
+          Point dropLocation = (sender as TreeView).PointToClient(new Point(e.X, e.Y));
+          TreeNode dropNode = (sender as TreeView).GetNodeAt(dropLocation);
+          if (((ClientGroup)dropNode.Tag).Id != Guid.Empty) {
+            List<ClientInfo> clients = new List<ClientInfo>();
+            foreach (ListViewItem lvi in lvClientControl.SelectedItems) {
+              clients.Add((ClientInfo)lvi.Tag);
+            }
+            ChangeGroup(clients, ((ClientGroup)dropNode.Tag).Id);
+          }
+          tvClientControl_DragLeave(null, EventArgs.Empty);
+          AddClients();
+        }
+      };
+    }
+
+    private void ChangeGroup(List<ClientInfo> clients, Guid clientgroupID) {
+      IClientManager clientManager = ServiceLocator.GetClientManager();
+      Guid groupId = ((ClientGroup)currentGroupNode.Tag).Id;
+      foreach (ClientInfo client in clients) {
+        if (groupId != Guid.Empty) {
+          Response resp = clientManager.DeleteResourceFromGroup(groupId, client.Id);
+        }
+        clientManager.AddResourceToGroup(clientgroupID, client);
+      }
     }
 
@@ -181,5 +247,5 @@
 
     }
-    
+
     #endregion
 
@@ -254,8 +320,8 @@
       }
 
-      if (currentNode != null) {
+      if (currentGroupNode != null) {
         lvClientControl.Items.Clear();
         lvClientControl.Groups.Clear();
-        AddGroupsToListView(currentNode);
+        AddGroupsToListView(currentGroupNode);
       }
       tvClientControl.ExpandAll();
@@ -443,5 +509,5 @@
       }
     }
-   
+
 
     private void RefreshForm() {
@@ -570,5 +636,5 @@
       lvClientControl.Items.Clear();
       lvClientControl.Groups.Clear();
-      currentNode = e.Node;
+      currentGroupNode = e.Node;
       AddGroupsToListView(e.Node);
     }
@@ -602,15 +668,15 @@
       tvClientControl.SelectedNode = hitTestInfo.Node;
       if (e.Button != MouseButtons.Right) return;
-        if (hitTestInfo.Node != null) {
-          Resource selectedGroup = (Resource)tvClientControl.SelectedNode.Tag;
-
-          if (selectedGroup != null) {
-            contextMenuGroup.Items.Add(menuItemAddGroup);
-            contextMenuGroup.Items.Add(menuItemDeleteGroup);
-          }
-        } else {
+      if (hitTestInfo.Node != null) {
+        Resource selectedGroup = (Resource)tvClientControl.SelectedNode.Tag;
+
+        if (selectedGroup != null) {
           contextMenuGroup.Items.Add(menuItemAddGroup);
-        }
-        tvClientControl.ContextMenuStrip.Show(tvClientControl, new Point(e.X, e.Y));
+          contextMenuGroup.Items.Add(menuItemDeleteGroup);
+        }
+      } else {
+        contextMenuGroup.Items.Add(menuItemAddGroup);
+      }
+      tvClientControl.ContextMenuStrip.Show(tvClientControl, new Point(e.X, e.Y));
     }
 
@@ -636,6 +702,6 @@
         ClientGroup cg = new ClientGroup() { Name = name };
         clientManager.AddClientGroup(cg);
-        AddClients();
-      }
+      }
+      AddClients();
     }
 
@@ -688,4 +754,11 @@
       smallIconsToolStripMenuItem.CheckState = CheckState.Unchecked;
       listToolStripMenuItem.CheckState = CheckState.Checked;
+    }
+
+    private void tvClientControl_DragLeave(object sender, EventArgs e) {
+      foreach (TreeNode node in tvClientControl.Nodes) {
+        node.BackColor = Color.White;
+        node.ForeColor = Color.Black;
+      }
     }
     #endregion
@@ -798,4 +871,6 @@
     #endregion
 
+
+
   }
 }
Index: /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.resx
===================================================================
--- /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.resx	(revision 2006)
+++ /trunk/sources/HeuristicLab.Hive.Server.Console/3.2/HiveServerManagementConsole.resx	(revision 2007)
@@ -398,4 +398,7 @@
 </value>
   </data>
+  <metadata name="updaterWoker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
+    <value>388, 41</value>
+  </metadata>
   <metadata name="contextMenuJob.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
     <value>246, 40</value>
@@ -452,6 +455,3 @@
 </value>
   </data>
-  <metadata name="updaterWoker.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
-    <value>388, 41</value>
-  </metadata>
 </root>
