Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
10/18/18 14:07:32 (6 years ago)
Author:
ddorfmei
Message:

#2931: Merged [16168-16232/trunk] into branch

Location:
branches/2931_OR-Tools_LP_MIP
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/2931_OR-Tools_LP_MIP

  • branches/2931_OR-Tools_LP_MIP/HeuristicLab.Clients.Hive.Administrator

  • branches/2931_OR-Tools_LP_MIP/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectsView.cs

    r16139 r16235  
    4343    private const string NOT_STORED_TAG = "*"; // " [not stored]";
    4444    private const string CHANGES_NOT_STORED_TAG = "*"; // " [changes not stored]";
     45    private const string INACTIVE_TAG = " [inactive]";
    4546
    4647    private readonly Color selectedBackColor = Color.DodgerBlue;
     
    106107        BuildProjectTree(Content);
    107108      }
     109      SetEnabledStateOfControls();
    108110    }
    109111
    110112    protected override void SetEnabledStateOfControls() {
    111       base.SetEnabledStateOfControls();
    112       bool selectedProjectExists = selectedProject != null && selectedProject.Id != Guid.Empty && Content.Contains(selectedProject);
    113       bool projectIsNew = selectedProject != null && selectedProject.Id == Guid.Empty;
    114       bool locked = Content == null || selectedProject == null || Locked || ReadOnly;
    115       bool parentOwner = HiveAdminClient.Instance.CheckOwnershipOfParentProject(selectedProject, UserInformation.Instance.User.Id);
    116       bool saveLocked = locked || (!IsAdmin() && selectedProject.OwnerUserId != UserInformation.Instance.User.Id && !parentOwner);
    117       bool addLocked = saveLocked || projectIsNew || selectedProject.Id == Guid.Empty;
    118       bool deleteLocked = locked || (!IsAdmin() && !parentOwner) || Content.Where(x => x.ParentProjectId == selectedProject.Id).Any();
    119 
    120       var now = DateTime.Now;
    121       if (!addLocked && (now < selectedProject.StartDate || now > selectedProject.EndDate)) addLocked = true;
     113      base.SetEnabledStateOfControls();     
     114
     115      bool locked = Content == null || Locked || ReadOnly;     
     116      bool parentOwner = selectedProject != null && HiveAdminClient.Instance.CheckOwnershipOfParentProject(selectedProject, UserInformation.Instance.User.Id);
     117      bool selectedProjectDisabled = selectedProject == null
     118                                     || selectedProject != null && selectedProject.Id == Guid.Empty;
     119
     120      bool selectedProjectHasJobs =
     121        !selectedProjectDisabled && HiveAdminClient.Instance.Jobs.ContainsKey(selectedProject.Id)
     122                                 && HiveAdminClient.Instance.Jobs[selectedProject.Id] != null
     123                                 && HiveAdminClient.Instance.Jobs[selectedProject.Id].Any();
     124
     125      bool addLocked = locked
     126                       || (selectedProject == null && !IsAdmin())
     127                       || (selectedProject != null && selectedProject.Id == Guid.Empty)
     128                       || (selectedProject != null && !IsAdmin() && !parentOwner && selectedProject.OwnerUserId != UserInformation.Instance.User.Id)
     129                       || (selectedProject != null && (DateTime.Now < selectedProject.StartDate || DateTime.Now > selectedProject.EndDate));
     130
     131      bool deleteLocked = locked
     132                          || !Content.Any()
     133                          || selectedProject == null
     134                          || Content.Any(x => x.ParentProjectId == selectedProject.Id)
     135                          || selectedProjectHasJobs
     136                          || (!IsAdmin() && !parentOwner);
     137
     138      bool saveLocked = locked
     139                        || !Content.Any()
     140                        || selectedProject == null
     141                        || (!IsAdmin() && !parentOwner && selectedProject.OwnerUserId != UserInformation.Instance.User.Id);
     142
    122143
    123144      addButton.Enabled = !addLocked;
    124145      removeButton.Enabled = !deleteLocked;
    125146      saveProjectButton.Enabled = !saveLocked;
     147
    126148      projectView.Enabled = !locked;
    127       projectPermissionsView.Enabled = !locked;
    128       projectResourcesView.Enabled = !locked;
    129       projectJobsView.Enabled = !locked;
     149      projectPermissionsView.Enabled = !locked && !selectedProjectDisabled;
     150      projectResourcesView.Enabled = !locked && !selectedProjectDisabled;
     151      projectJobsView.Enabled = !locked && !selectedProjectDisabled;
    130152
    131153      projectView.Locked = locked;
    132       projectPermissionsView.Locked = locked;
    133       projectResourcesView.Locked = locked;
    134       projectJobsView.Locked = locked;
     154      projectPermissionsView.Locked = locked || selectedProjectDisabled;
     155      projectResourcesView.Locked = locked || selectedProjectDisabled;
     156      projectJobsView.Locked = locked || selectedProjectDisabled;
    135157    }
    136158    #endregion
     
    254276      }
    255277
    256       // double check of ChangeSelectedProject(..):
    257       // if the user is no admin nor owner of a parent project
    258       if (!IsAdmin() && !HiveAdminClient.Instance.CheckOwnershipOfParentProject(selectedProject, UserInformation.Instance.User.Id)) {
    259         MessageBox.Show(
    260           "Only admins and owners of parent projects are allowed to delete this project.",
    261           "HeuristicLab Hive Administrator",
    262           MessageBoxButtons.OK,
    263           MessageBoxIcon.Error);
    264         return;
    265       }           
    266 
    267 
    268       if (Content.Any(x => x.ParentProjectId == selectedProject.Id)
    269           || HiveAdminClient.Instance.ProjectDescendants[selectedProject.Id].Any()) {
    270         MessageBox.Show(
    271           "Only empty projects can be deleted.",
    272           "HeuristicLab Hive Administrator",
    273           MessageBoxButtons.OK,
    274           MessageBoxIcon.Error);
    275         return;
    276       }
    277 
    278       if (HiveAdminClient.Instance.Jobs.ContainsKey(selectedProject.Id)
    279         && HiveAdminClient.Instance.Jobs[selectedProject.Id] != null
    280         && HiveAdminClient.Instance.Jobs[selectedProject.Id].Any()) {
    281         MessageBox.Show(
    282           "There are " + HiveAdminClient.Instance.Jobs[selectedProject.Id].Count + " job(s) using this project and/or child-projects. It is necessary to delete them before the project.",
    283           "HeuristicLab Hive Administrator",
    284           MessageBoxButtons.OK,
    285           MessageBoxIcon.Error);
    286         return;
    287       }
    288 
    289278      var result = MessageBox.Show(
    290279        "Do you really want to delete " + selectedProject.Name + "?",
     
    297286          action: () => {
    298287            RemoveProject(selectedProject); 
    299           },
    300           finallyCallback: () => {
    301             removeButton.Enabled = true;
    302288          });
    303       } else {
    304         removeButton.Enabled = true;
    305       }
     289      }
     290      SetEnabledStateOfControls();
    306291    }
    307292
     
    492477      if (HiveAdminClient.Instance.DisabledParentProjects.Select(x => x.Id).Contains(p.Id)) {
    493478        n.ForeColor = grayTextColor;
    494       } else if (p.Id == Guid.Empty) {
    495         n.Text += NOT_STORED_TAG;
    496       } else if (p.Modified) {
    497         n.Text += CHANGES_NOT_STORED_TAG;
     479      } else {
     480        if (p.Id == Guid.Empty) {
     481          n.Text += NOT_STORED_TAG;
     482        } else if (p.Modified) {
     483          n.Text += CHANGES_NOT_STORED_TAG;
     484        }
     485
     486        if (!IsActive(p)) {
     487          n.ForeColor = grayTextColor;
     488          n.Text += INACTIVE_TAG;
     489        }
    498490      }
    499491    }
     
    540532      try {
    541533        if (project.Id != Guid.Empty) {
    542           var projectsToSave = Content.Where(x => x.Id == Guid.Empty || x.Modified);
    543           foreach (var p in projectsToSave)
    544             p.Store();
    545 
    546534          SelectedProject = HiveAdminClient.Instance.GetAvailableProjectAncestors(project.Id).LastOrDefault();
    547535          HiveAdminClient.Delete(project);         
    548536          UpdateProjects();
    549         } else {
     537        } else {         
     538          SelectedProject = Content.FirstOrDefault(x => x.Id == project.ParentProjectId);
    550539          Content.Remove(project);
    551540        }
     
    553542        ShowHiveInformationDialog();
    554543      }
     544    }
     545
     546    private bool IsActive(Project project) {
     547      return DateTime.Now >= project.StartDate
     548             && (project.EndDate == null
     549                 || DateTime.Now < project.EndDate.Value);
    555550    }
    556551
Note: See TracChangeset for help on using the changeset viewer.