Changeset 15995 for branches/2839_HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectResourcesView.cs
- Timestamp:
- 07/19/18 13:37:32 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2839_HiveProjectManagement/HeuristicLab.Clients.Hive.Administrator/3.3/Views/ProjectResourcesView.cs
r15978 r15995 55 55 private readonly Color addedIncludeColor = Color.FromArgb(25, 169, 221, 221); // #a9dddd 56 56 private readonly Color removedIncludeColor = Color.FromArgb(25, 249, 210, 145); // #f9d291 57 private readonly Color selectedBackColor = Color.DodgerBlue; 58 private readonly Color selectedForeColor = Color.White; 59 private readonly Color grayTextColor = SystemColors.GrayText; 57 60 58 61 private HashSet<Resource> projectExclusiveResources = new HashSet<Resource>(); … … 83 86 UpdateAssignedResources(); 84 87 UpdateIncludedResources(); 85 var top = BuildResourceTree( HiveAdminClient.Instance.Resources);88 var top = BuildResourceTree(); 86 89 detailsViewHost.Content = top; 87 90 detailsViewHost.Locked = true; … … 108 111 UpdateAssignedResources(); 109 112 UpdateIncludedResources(); 110 var top = BuildResourceTree( HiveAdminClient.Instance.Resources);113 var top = BuildResourceTree(); 111 114 detailsViewHost.Content = top; 112 115 } … … 130 133 } 131 134 135 private void treeView_BeforeSelect(object sender, TreeViewCancelEventArgs e) { 136 if (e.Node == null || e.Node == ungroupedGroupNode) 137 e.Cancel = true; 138 139 var selectedResource = (Resource)e.Node.Tag; 140 if(HiveAdminClient.Instance.DisabledParentResources.Contains(selectedResource)) 141 e.Cancel = true; 142 } 143 132 144 private void treeView_AfterSelect(object sender, TreeViewEventArgs e) { 133 145 var selectedResource = (Resource)e.Node.Tag; … … 136 148 137 149 private void treeView_BeforeCheck(object sender, TreeViewCancelEventArgs e) { 150 if (e.Node == null || e.Node == ungroupedGroupNode) { 151 e.Cancel = true; 152 return; 153 } 154 138 155 var checkedResource = (Resource)e.Node.Tag; 139 if (newIncludedResources.Contains(checkedResource) || checkedResource.Id == Guid.Empty || e.Node == ungroupedGroupNode) { 156 if (checkedResource == null 157 || checkedResource.Id == Guid.Empty 158 || HiveAdminClient.Instance.DisabledParentResources.Contains(checkedResource) 159 || newIncludedResources.Contains(checkedResource)) { 140 160 e.Cancel = true; 141 161 } else if (!HiveRoles.CheckAdminUserPermissions()) { … … 164 184 UpdateIncludedResources(); 165 185 166 var top = BuildResourceTree( HiveAdminClient.Instance.Resources);186 var top = BuildResourceTree(); 167 187 detailsViewHost.Content = top; 168 188 } … … 171 191 UpdateNewAssignedResources(); 172 192 UpdateNewIncludedResources(); 173 var top = BuildResourceTree( HiveAdminClient.Instance.Resources);193 var top = BuildResourceTree(); 174 194 detailsViewHost.Content = top; 175 195 } … … 191 211 // look up for assignments of ancestor projects 192 212 var projectIds = new HashSet<Guid>(); 193 Hive Client.Instance.GetAvailableProjectAncestors(projectId).ToList().ForEach(x => projectIds.Add(x.Id));213 HiveAdminClient.Instance.GetAvailableProjectAncestors(projectId).ToList().ForEach(x => projectIds.Add(x.Id)); 194 214 195 215 var ancestorProjectResources = resources.Where(x => … … 278 298 } 279 299 280 private Resource BuildResourceTree( IEnumerable<Resource> resources) {300 private Resource BuildResourceTree() { 281 301 treeView.Nodes.Clear(); 282 if (!resources.Any()) return null;283 302 284 303 treeView.BeforeCheck -= treeView_BeforeCheck; 285 304 treeView.AfterCheck -= treeView_AfterCheck; 286 305 287 resources = GetAvailableResourcesForProjectAdministration(Content.Id); 288 306 var resources = GetAvailableResourcesForProjectAdministration(Content.Id); 307 308 var disabledParentResources = HiveAdminClient.Instance.DisabledParentResources; 289 309 var mainResources = new HashSet<Resource>(resources.OfType<SlaveGroup>().Where(x => x.ParentResourceId == null)); 290 var parentedMainResources = new HashSet<Resource>(resources.OfType<SlaveGroup>() 291 .Where(x => x.ParentResourceId.HasValue && !resources.Select(y => y.Id).Contains(x.ParentResourceId.Value))); 292 mainResources.UnionWith(parentedMainResources); 293 var subResources = new HashSet<Resource>(resources.Except(mainResources)); 310 //var parentedMainResources = new HashSet<Resource>(resources.OfType<SlaveGroup>() 311 // .Where(x => x.ParentResourceId.HasValue && !resources.Select(y => y.Id).Contains(x.ParentResourceId.Value))); 312 //mainResources.UnionWith(parentedMainResources); 313 var mainDisabledParentResources = new HashSet<Resource>(disabledParentResources.Where(x => x.ParentResourceId == null || x.ParentResourceId == Guid.Empty)); 314 mainResources.UnionWith(mainDisabledParentResources); 315 var subResources = new HashSet<Resource>(resources.Union(disabledParentResources).Except(mainResources).OrderByDescending(x => x.Name)); 294 316 295 317 var stack = new Stack<Resource>(mainResources.OrderByDescending(x => x.Name)); 318 296 319 Resource top = null; 320 //bool nodeSelected = false; 321 if (detailsViewHost != null && detailsViewHost.Content != null && detailsViewHost.Content is Resource) { 322 var resourceId = ((Resource)detailsViewHost.Content).Id; 323 top = resources.Where(x => x.Id == resourceId).FirstOrDefault(); 324 } 325 297 326 298 327 TreeNode currentNode = null; … … 305 334 306 335 while (stack.Any()) { 307 if(top == null) top = stack.Peek();308 336 var newResource = stack.Pop(); 309 337 var newNode = new TreeNode(newResource.Name) { Tag = newResource }; 338 339 if(top == null && !disabledParentResources.Contains(newResource)) { 340 top = newResource; 341 } 342 343 //if(!nodeSelected && top != null && newResource.Id == top.Id) { 344 // newNode.BackColor = selectedBackColor; 345 // newNode.ForeColor = selectedForeColor; 346 // nodeSelected = true; 347 //} 310 348 311 349 // search for parent node of newNode and save in currentNode … … 323 361 } 324 362 325 if (newAssignedResources.Contains(newResource)) { 363 if (disabledParentResources.Contains(newResource)) { 364 newNode.Checked = false; 365 newNode.ForeColor = grayTextColor; 366 } else if (newAssignedResources.Contains(newResource)) { 326 367 newNode.Checked = true; 327 368 if(!HiveRoles.CheckAdminUserPermissions()) { … … 398 439 treeView.BeforeCheck += treeView_BeforeCheck; 399 440 treeView.AfterCheck += treeView_AfterCheck; 400 treeView.ExpandAll(); 441 442 ExpandResourceNodesOfInterest(treeView.Nodes); 401 443 402 444 return top; 445 } 446 447 private void ExpandResourceNodesOfInterest(TreeNodeCollection nodes) { 448 foreach (TreeNode n in nodes) { 449 Resource r = (Resource)n.Tag; 450 if (n.Nodes.Count > 0) { 451 if (HiveAdminClient.Instance.GetAvailableResourceDescendants(r.Id).OfType<SlaveGroup>().Any()) { 452 n.Expand(); 453 ExpandResourceNodesOfInterest(n.Nodes); 454 } else { 455 n.Collapse(); 456 } 457 } else { 458 n.Collapse(); 459 } 460 } 403 461 } 404 462
Note: See TracChangeset
for help on using the changeset viewer.