private void btnSave_Click(object sender, EventArgs e) { foreach (Resource res in Content) { if (res is SlaveGroup && res.Id == Guid.Empty) { SlaveGroup slaveGroup = (SlaveGroup)res; slaveGroup.Store(); } else if (res.Id != Guid.Empty && res.Modified) { res.Store(); } } }
private void treeSlaveGroup_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false)) { Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y)); TreeNode destNode = ((TreeView)sender).GetNodeAt(pt); TreeNode newNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); if (destNode.TreeView == newNode.TreeView) { if (destNode.Text == UngroupedGroupName || (destNode.Parent != null && destNode.Parent.Text == UngroupedGroupName)) { MessageBox.Show(string.Format("You can't drag items to the group \"{0}\".{1}This group only contains slaves which haven't yet been assigned to a real group.", UngroupedGroupName, Environment.NewLine), "HeuristicLab Hive Administrator", MessageBoxButtons.OK, MessageBoxIcon.Information); return; } SlaveGroup sgrp = null; TreeNode parentNode = null; if (destNode.Tag != null && destNode.Tag is SlaveGroup) { sgrp = (SlaveGroup)destNode.Tag; parentNode = destNode; } else if (destNode.Parent != null && destNode.Parent.Tag is SlaveGroup) { sgrp = (SlaveGroup)destNode.Parent.Tag; parentNode = destNode.Parent; } if (newNode.Tag is SlaveGroup && CheckParentsEqualsMovedNode(parentNode, newNode)) { return; } SlaveGroup parent = (SlaveGroup)parentNode.Tag; if (parent.OwnerUserId != null && !IsAuthorized(parent)) { MessageBox.Show(string.Format("You don't have the permissions to drag items to the group \"{0}\".", ((Resource)parentNode.Tag).Name), "HeuristicLab Hive Administrator", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (sgrp != null && newNode.Tag != null) { //save parent group to get an id if (sgrp.Id == Guid.Empty) { sgrp.Store(); } if (newNode.Tag is Slave) { Slave slave = (Slave)newNode.Tag; if (slave.ParentResourceId == null || (slave.ParentResourceId != null && slave.ParentResourceId != sgrp.Id)) { slave.ParentResourceId = sgrp.Id; newNode.Remove(); parentNode.Nodes.Clear(); BuildSlaveGroupTree(sgrp, parentNode); } } else if (newNode.Tag is SlaveGroup) { SlaveGroup slaveGroup = (SlaveGroup)newNode.Tag; if (slaveGroup.ParentResourceId == null || (slaveGroup.ParentResourceId != null && slaveGroup.ParentResourceId != sgrp.Id)) { slaveGroup.ParentResourceId = sgrp.Id; newNode.Remove(); parentNode.Nodes.Clear(); BuildSlaveGroupTree(sgrp, parentNode); } } } } } }