Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/14/18 11:19:55 (6 years ago)
Author:
jzenisek
Message:

#2839 improved project- & resource selection handling

File:
1 edited

Legend:

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

    r15767 r15777  
    4343    private readonly Color changedColor = Color.FromArgb(255, 87, 191, 193); // #57bfc1
    4444    private readonly Color selectedColor = Color.FromArgb(255, 240, 194, 59); // #f0c23b
     45
    4546    private Project selectedProject = null;
     47    public Project SelectedProject {
     48      get { return selectedProject; }
     49      set { if (selectedProject != value) ChangeSelectedProject(value); }
     50    }
    4651
    4752    private readonly object locker = new object();
     
    9398        projectResourcesView.Content = null;
    9499      } else {
    95         var top = BuildProjectTree(Content);
    96         projectView.Content = top;
    97         projectPermissionsView.Content = top;
    98         projectResourcesView.Content = top;
    99 
    100         if(top != null && top.Id == Guid.Empty) {
    101           projectPermissionsView.Locked = true;
    102           projectResourcesView.Locked = true;
    103         }
     100        BuildProjectTree(Content);
    104101      }
    105102    }
     
    107104    protected override void SetEnabledStateOfControls() {
    108105      base.SetEnabledStateOfControls();
    109       bool enabled = Content != null && !ReadOnly;
     106      bool enabled = Content != null && !Locked && !ReadOnly;
    110107      refreshButton.Enabled = enabled;
    111108      addButton.Enabled = enabled;
     
    213210      };
    214211
    215       selectedProject = project;
     212      SelectedProject = project;
    216213      Content.Add(project);
    217214    }
     
    278275    }
    279276
    280     private void projectsTreeView_AfterSelect(object sender, TreeViewEventArgs e) {
    281       ChangeSelectedProjectNode(e.Node);
    282 
    283       //if (projectView.Content != null)
    284       //  projectView.Content.PropertyChanged -= ProjectViewContent_PropertyChanged;
    285 
    286       projectView.Content = selectedProject;
    287       projectPermissionsView.Content = selectedProject;
    288       projectResourcesView.Content = selectedProject;
    289 
    290       //if (selectedProject != null)
    291       //  selectedProject.PropertyChanged += ProjectViewContent_PropertyChanged;
     277    private void projectsTreeView_MouseDown(object sender, MouseEventArgs e) {
     278      var node = projectsTreeView.GetNodeAt(e.Location);
     279      if(node != null) ChangeSelectedProjectNode(node);
     280    }
     281
     282    private void projectsTreeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) {
     283      e.Cancel = true;
    292284    }
    293285
     
    306298      var targetNode = treeView.GetNodeAt(targetPoint);
    307299
    308       if (sourceNode == targetNode) return;
    309300      var targetProject = (targetNode != null) ? (Project)targetNode.Tag : null;
    310301
    311       if(targetProject != null && targetProject.Id == Guid.Empty) {
     302      if (!HiveAdminClient.Instance.CheckParentChange(sourceProject, targetProject)) {
    312303        MessageBox.Show(
    313           "You cannot drag projects to a not yet stored project.",
     304          "You cannot drag projects to this project.",
    314305          "HeuristicLab Hive Administrator",
    315306          MessageBoxButtons.OK,
    316307          MessageBoxIcon.Information);
    317308        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;
    326309      }
    327310
     
    340323      }
    341324
    342       selectedProject = sourceProject;
     325      SelectedProject = sourceProject;
    343326      OnContentChanged();
    344327    }
     
    364347      || sourceProject == null
    365348      || sourceNode == targetNode
    366       || (targetProject != null && targetProject.Id == Guid.Empty)
    367       || (targetProject != null && targetProject.Id == sourceProject.ParentProjectId)
    368349      || !HiveAdminClient.Instance.CheckParentChange(sourceProject, targetProject)) {
    369350        e.Effect = DragDropEffects.None;
     
    398379    }
    399380
     381    private void ChangeSelectedProject(Project project) {
     382      projectView.Content = project;
     383      projectPermissionsView.Content = project;
     384      projectResourcesView.Content = project;
     385
     386      bool locked = project == null || (project != null && project.Id == Guid.Empty);
     387      addButton.Enabled = !locked;
     388      projectPermissionsView.Locked = locked;
     389      projectResourcesView.Locked = locked;
     390      selectedProject = project;
     391    }
     392
    400393    private void ChangeSelectedProjectNode(TreeNode projectNode) {
    401       selectedProject = (Project)projectNode.Tag;
     394      if (projectNode == null) return;
     395      SelectedProject = (Project)projectNode.Tag;
    402396      ResetTreeNodes(projectsTreeView.Nodes, selectedColor, Color.Transparent, true);
    403397      projectNode.BackColor = selectedColor;
     
    405399    }
    406400
    407     private Project BuildProjectTree(IEnumerable<Project> projects) {
     401    private void BuildProjectTree(IEnumerable<Project> projects) {
    408402      projectsTreeView.Nodes.Clear();
    409       if (!projects.Any()) return null;
     403      if (!projects.Any()) return;
    410404
    411405      var mainProjects = new HashSet<Project>(projects.Where(x => x.ParentProjectId == null));
     
    417411
    418412      var stack = new Stack<Project>(mainProjects.OrderByDescending(x => x.Name));
    419       if (selectedProject != null) selectedProject = projects.Where(x => x.Id == selectedProject.Id).FirstOrDefault();
     413      if (selectedProject != null) SelectedProject = projects.Where(x => x.Id == selectedProject.Id).FirstOrDefault();
    420414      bool nodeSelected = false;
    421415
     
    433427        }
    434428        if (selectedProject == null) {
    435           selectedProject = newProject;
     429          SelectedProject = newProject;
    436430        }
    437431        if (newProject.Id == selectedProject.Id && !nodeSelected) {
     
    471465
    472466      projectsTreeView.ExpandAll();
    473 
    474       return selectedProject;
    475467    }
    476468
     
    485477
    486478    private void RemoveProject(Project project) {
    487       if (project == null || project.Id == Guid.Empty) return;
     479      if (project == null) return;
    488480
    489481      try {
    490         HiveAdminClient.Delete(project);
     482        if(project.Id != Guid.Empty) HiveAdminClient.Delete(project);
    491483        Content.Remove(selectedProject);
    492484      } catch (AnonymousUserException) {
     
    497489    private bool IsAuthorized(Project project) {
    498490      return project != null && UserInformation.Instance.UserExists;
    499           //&& (project.OwnerUserId == UserInformation.Instance.User.Id || HiveRoles.CheckAdminUserPermissions());
    500491    }
    501492
Note: See TracChangeset for help on using the changeset viewer.