Changeset 16235 for branches/2931_OR-Tools_LP_MIP/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectsView.cs
- Timestamp:
- 10/18/18 14:07:32 (6 years ago)
- Location:
- branches/2931_OR-Tools_LP_MIP
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2931_OR-Tools_LP_MIP
- Property svn:mergeinfo changed
/branches/2916_IndexedDataTableSerialization (added) merged: 15918 /trunk merged: 16168-16169,16177,16179,16184-16187,16202-16209,16211,16213,16216,16218-16219,16221,16223-16224,16232
- Property svn:mergeinfo changed
-
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Clients.Hive.Administrator
- Property svn:mergeinfo changed
/trunk/HeuristicLab.Clients.Hive.Administrator merged: 16184-16187,16202,16205,16208-16209,16211
- Property svn:mergeinfo changed
-
branches/2931_OR-Tools_LP_MIP/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectsView.cs
r16139 r16235 43 43 private const string NOT_STORED_TAG = "*"; // " [not stored]"; 44 44 private const string CHANGES_NOT_STORED_TAG = "*"; // " [changes not stored]"; 45 private const string INACTIVE_TAG = " [inactive]"; 45 46 46 47 private readonly Color selectedBackColor = Color.DodgerBlue; … … 106 107 BuildProjectTree(Content); 107 108 } 109 SetEnabledStateOfControls(); 108 110 } 109 111 110 112 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 122 143 123 144 addButton.Enabled = !addLocked; 124 145 removeButton.Enabled = !deleteLocked; 125 146 saveProjectButton.Enabled = !saveLocked; 147 126 148 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; 130 152 131 153 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; 135 157 } 136 158 #endregion … … 254 276 } 255 277 256 // double check of ChangeSelectedProject(..):257 // if the user is no admin nor owner of a parent project258 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] != null280 && 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 289 278 var result = MessageBox.Show( 290 279 "Do you really want to delete " + selectedProject.Name + "?", … … 297 286 action: () => { 298 287 RemoveProject(selectedProject); 299 },300 finallyCallback: () => {301 removeButton.Enabled = true;302 288 }); 303 } else { 304 removeButton.Enabled = true; 305 } 289 } 290 SetEnabledStateOfControls(); 306 291 } 307 292 … … 492 477 if (HiveAdminClient.Instance.DisabledParentProjects.Select(x => x.Id).Contains(p.Id)) { 493 478 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 } 498 490 } 499 491 } … … 540 532 try { 541 533 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 546 534 SelectedProject = HiveAdminClient.Instance.GetAvailableProjectAncestors(project.Id).LastOrDefault(); 547 535 HiveAdminClient.Delete(project); 548 536 UpdateProjects(); 549 } else { 537 } else { 538 SelectedProject = Content.FirstOrDefault(x => x.Id == project.ParentProjectId); 550 539 Content.Remove(project); 551 540 } … … 553 542 ShowHiveInformationDialog(); 554 543 } 544 } 545 546 private bool IsActive(Project project) { 547 return DateTime.Now >= project.StartDate 548 && (project.EndDate == null 549 || DateTime.Now < project.EndDate.Value); 555 550 } 556 551
Note: See TracChangeset
for help on using the changeset viewer.