public ClassGroupsTreeStore(List <ClassDefinition> classes, StoredDiagramDetails storedDetails) : base(typeof(string), typeof(string)) { this.storedDetails = storedDetails; AddClassGroups(); foreach (var c in classes) { StoredNode node; if (storedDetails.nodes.TryGetValue(c.Id, out node)) { if (node.classGroups == null || node.classGroups.Count == 0) { AppendValues(noGroupIter, c.DisplayName); continue; } foreach (var g in node.classGroups) { TreeIter groupNode; if (ClassGroups.TryGetValue(g, out groupNode)) { AppendValues(groupNode, c.DisplayName); } } } else { AppendValues(noGroupIter, c.DisplayName); } } }
async Task RedrawAsync() { var progress = new Progress <TreeBuilderProgress>(); progressBar.Progress = progress; var classes = await ClassTreeBuilder.Instance.ProcessAsync(selectedProject, progress); diagramDetails = DiagramStorage.Instance.GetProjectDetails(selectedProject); drawingArea.Draw(classes, diagramDetails); groupsTree.Model = new ClassGroupsTreeStore(classes, diagramDetails); EnableUi(); }