Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
02/20/18 14:32:16 (6 years ago)
Author:
jzenisek
Message:

#2839 preliminary integration of several HiveAdministrator related improvements from #2877 (full merge pending)

  • slaves and slave groups are sorted by name
  • slave state is indicated by different colors
  • number of contained slaves is shown for each group
  • CPU utilization is shown for each calculating slave
  • last heartbeat date is shown for each offline slave
File:
1 edited

Legend:

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

    r15777 r15792  
    250250      if (result == DialogResult.Yes) {
    251251        await SecurityExceptionUtil.TryAsyncAndReportSecurityExceptions(
    252           action: () => RemoveProject(selectedProject),
     252          action: () => {
     253            RemoveProject(selectedProject); 
     254          },
    253255          finallyCallback: () => {
    254256            removeButton.Enabled = true;
     
    358360
    359361    #region Helpers
    360     private void ResetTreeNodes(TreeNodeCollection nodes, Color c1, Color c2, bool resetText) {
    361       foreach (TreeNode n in nodes) {
    362         var pro = ((Project)n.Tag);
    363         if (n.BackColor.Equals(c1)) {
    364           n.BackColor = c2;
    365         }
    366         if (resetText) {
    367           n.Text = pro.Name;
    368 
    369           if (pro.Id == Guid.Empty) {
    370             n.Text += " [not stored]";
    371           } else if (pro.Modified) {
    372             n.Text += " [changes not stored]";
    373           }
    374         }
    375         if (n.Nodes.Count > 0) {
    376           ResetTreeNodes(n.Nodes, c1, c2, resetText);
    377         }
    378       }
    379     }
    380 
    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 
    393     private void ChangeSelectedProjectNode(TreeNode projectNode) {
    394       if (projectNode == null) return;
    395       SelectedProject = (Project)projectNode.Tag;
    396       ResetTreeNodes(projectsTreeView.Nodes, selectedColor, Color.Transparent, true);
    397       projectNode.BackColor = selectedColor;
    398       projectNode.Text += " [selected]";
    399     }
    400 
    401362    private void BuildProjectTree(IEnumerable<Project> projects) {
    402363      projectsTreeView.Nodes.Clear();
     
    407368        .Where(x => x.ParentProjectId.HasValue
    408369        && !projects.Select(y => y.Id).Contains(x.ParentProjectId.Value)));
    409             mainProjects.UnionWith(parentedMainProjects);
     370      mainProjects.UnionWith(parentedMainProjects);
    410371      var subProbjects = new HashSet<Project>(projects.Except(mainProjects));
    411372
     
    416377      TreeNode currentNode = null;
    417378      Project currentProject = null;
    418      
     379
    419380      while (stack.Any()) {
    420381        var newProject = stack.Pop();
    421382        var newNode = new TreeNode(newProject.Name) { Tag = newProject };
    422 
    423         if (newProject.Id == Guid.Empty) {
    424           newNode.Text += " [not stored]";
    425         } else if(newProject.Modified) {
    426           newNode.Text += " [changes not stored]";
    427         }
     383        StyleTreeNode(newNode, newProject);
     384     
    428385        if (selectedProject == null) {
    429386          SelectedProject = newProject;
     
    467424    }
    468425
     426    private void StyleTreeNode(TreeNode n, Project p) {
     427      n.Text = p.Name;
     428      n.BackColor = Color.Transparent;
     429      n.ForeColor = Color.Black;
     430
     431      if (p.Id == Guid.Empty) {
     432        n.Text += " [not stored]";
     433      } else if (p.Modified) {
     434        n.Text += " [changes not stored]";
     435      }
     436    }
     437
     438    private void ResetTreeNodes(TreeNodeCollection nodes) {
     439      foreach (TreeNode n in nodes) {
     440        StyleTreeNode(n, (Project)n.Tag);
     441        if (n.Nodes.Count > 0) {
     442          ResetTreeNodes(n.Nodes);
     443        }
     444      }
     445    }
     446
     447    private void ChangeSelectedProject(Project project) {
     448      projectView.Content = project;
     449      projectPermissionsView.Content = project;
     450      projectResourcesView.Content = project;
     451
     452      bool locked = project == null || (project != null && project.Id == Guid.Empty);
     453      addButton.Enabled = !locked;
     454      projectPermissionsView.Locked = locked;
     455      projectResourcesView.Locked = locked;
     456      selectedProject = project;
     457    }
     458
     459    private void ChangeSelectedProjectNode(TreeNode projectNode) {
     460      if (projectNode == null) return;
     461      SelectedProject = (Project)projectNode.Tag;
     462      ResetTreeNodes(projectsTreeView.Nodes);
     463      projectNode.BackColor = selectedColor;
     464      projectNode.Text += " [selected]";
     465    }
     466
    469467    private void UpdateProjects() {
    470468      try {
     
    480478
    481479      try {
    482         if(project.Id != Guid.Empty) HiveAdminClient.Delete(project);
    483         Content.Remove(selectedProject);
     480        if (project.Id != Guid.Empty) {
     481          var projectsToSave = Content.Where(x => x.Id == Guid.Empty || x.Modified);
     482          foreach (var p in projectsToSave)
     483            p.Store();
     484          HiveAdminClient.Delete(project);
     485          UpdateProjects();
     486        } else {
     487          Content.Remove(project);
     488        }
    484489      } catch (AnonymousUserException) {
    485490        ShowHiveInformationDialog();
Note: See TracChangeset for help on using the changeset viewer.