Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/13/18 15:32:00 (6 years ago)
Author:
jzenisek
Message:

#2839: fixed cyclic-relation bug in projects- and resources-view by preventing parents from being dragged onto descendants

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2839_HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ResourcesView.cs

    r15760 r15767  
    308308
    309309    private void treeSlaveGroup_DragDrop(object sender, DragEventArgs e) {
     310      if (e.Effect == DragDropEffects.None) return;
     311
    310312      var sourceNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
    311313      if (sourceNode == null) return;
     
    336338          MessageBoxIcon.Information);
    337339        return;
    338       } else if(targetResource != null && targetResource.Id == Guid.Empty) {
     340      } else if (targetResource != null && targetResource.Id == Guid.Empty) {
    339341        MessageBox.Show(
    340342          "You cannot drag resources to a not yet stored resource group.",
     
    342344          MessageBoxButtons.OK,
    343345          MessageBoxIcon.Information);
    344             return;
     346        return;
     347      } else if(!HiveAdminClient.Instance.CheckParentChange(sourceResource, targetResource)) {
     348        MessageBox.Show(
     349          "You cannot drag resources to this group.",
     350          "HeuristicLab Hive Administrator",
     351          MessageBoxButtons.OK,
     352          MessageBoxIcon.Information);
     353        return;
    345354      } else if (targetNode != null && (targetNode.Text == ungroupedGroupName || targetNode.Parent != null && targetNode.Parent.Text == ungroupedGroupName)) {
    346355        MessageBox.Show(
     
    376385    }
    377386
    378     private void treeSlaveGroup_DragEnter(object sender, DragEventArgs e) {
     387    private void treeSlaveGroup_DragEnterOver(object sender, DragEventArgs e) {
    379388      e.Effect = DragDropEffects.Move;
    380     }
    381 
    382     private void treeSlaveGroup_DragOver(object sender, DragEventArgs e) {
    383       e.Effect = DragDropEffects.Move;
     389
     390      var sourceNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
     391      var sourceResource = ((Resource)sourceNode.Tag);
     392
     393      var targetPoint = treeView.PointToClient(new Point(e.X, e.Y));
     394      var targetNode = treeView.GetNodeAt(targetPoint);
     395      var targetResource = (targetNode != null) ? (Resource)targetNode.Tag : null;
     396
     397      if(!IsAdmin()
     398        || sourceNode == null
     399        || sourceResource == null
     400        || sourceNode == targetNode
     401        || (targetResource != null && targetResource is Slave)
     402        || (targetResource != null && targetResource.Id == Guid.Empty)
     403        || (targetResource != null && targetResource.Id == sourceResource.ParentResourceId)
     404        || !HiveAdminClient.Instance.CheckParentChange(sourceResource, targetResource)
     405        || (targetNode != null && (targetNode.Text == ungroupedGroupName || targetNode.Parent != null && targetNode.Parent.Text == ungroupedGroupName))) {
     406        e.Effect = DragDropEffects.None;
     407      }
    384408    }
    385409
Note: See TracChangeset for help on using the changeset viewer.