Пример #1
0
 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();
         }
     }
 }
Пример #2
0
        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);
                            }
                        }
                    }
                }
            }
        }