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/ProjectsView.cs

    r15760 r15767  
    293293
    294294    private void projectsTreeView_DragDrop(object sender, DragEventArgs e) {
     295      if (e.Effect == DragDropEffects.None) return;
     296
    295297      var sourceNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
    296298      if (sourceNode == null) return;
    297       var sourceResource = ((Project)sourceNode.Tag);
    298       if (sourceResource == null) return;
     299      var sourceProject = ((Project)sourceNode.Tag);
     300      if (sourceProject == null) return;
    299301
    300302      var treeView = (TreeView)sender;
     
    313315          MessageBoxButtons.OK,
    314316          MessageBoxIcon.Information);
    315             return;
     317        return;
     318      }
     319      if(!HiveAdminClient.Instance.CheckParentChange(sourceProject, targetProject)) {
     320        MessageBox.Show(
     321          "You cannot drag to this project.",
     322          "HeuristicLab Hive Administrator",
     323          MessageBoxButtons.OK,
     324          MessageBoxIcon.Information);
     325      return;
    316326      }
    317327
     
    320330      } else {
    321331        sourceNode.Parent.Nodes.Remove(sourceNode);
    322         sourceResource.ParentProjectId = null;
     332        sourceProject.ParentProjectId = null;
    323333      }
    324334
     
    327337      } else if(targetProject.Id != Guid.Empty) {
    328338        targetNode.Nodes.Add(sourceNode);
    329         sourceResource.ParentProjectId = targetProject.Id;
    330       }
    331 
    332       selectedProject = sourceResource;
     339        sourceProject.ParentProjectId = targetProject.Id;
     340      }
     341
     342      selectedProject = sourceProject;
    333343      OnContentChanged();
    334344    }
     
    340350    }
    341351
    342     private void projectsTreeView_DragEnter(object sender, DragEventArgs e) {
     352    private void projectsTreeView_DragEnterOver(object sender, DragEventArgs e) {
    343353      e.Effect = DragDropEffects.Move;
    344     }
    345 
    346     private void projectsTreeView_DragOver(object sender, DragEventArgs e) {
    347       e.Effect = DragDropEffects.Move;
     354
     355      var sourceNode = (TreeNode)e.Data.GetData(typeof(TreeNode));
     356      var sourceProject = ((Project)sourceNode.Tag);
     357
     358      var targetPoint = projectsTreeView.PointToClient(new Point(e.X, e.Y));
     359      var targetNode = projectsTreeView.GetNodeAt(targetPoint);
     360      var targetProject = (targetNode != null) ? (Project)targetNode.Tag : null;
     361
     362      if ((!IsAdmin() && (targetNode == null || targetProject == null))
     363      || sourceNode == null
     364      || sourceProject == null
     365      || sourceNode == targetNode
     366      || (targetProject != null && targetProject.Id == Guid.Empty)
     367      || (targetProject != null && targetProject.Id == sourceProject.ParentProjectId)
     368      || !HiveAdminClient.Instance.CheckParentChange(sourceProject, targetProject)) {
     369        e.Effect = DragDropEffects.None;
     370      }
    348371    }
    349372
Note: See TracChangeset for help on using the changeset viewer.