private void AddPackageNodes(IGraphContext context, Func <GraphNode> parentNode, IEnumerable <PaketMetadata> installedPackages) { var allPackages = installedPackages.ToList(); for (int index = 0; index < allPackages.Count; index++) { PaketMetadata paketMetadata = allPackages[index]; using (var scope = new GraphTransactionScope()) { CreateNode(context, parentNode(), paketMetadata); scope.Complete(); } context.ReportProgress(index, allPackages.Count, null); if (context.CancelToken.IsCancellationRequested) { break; } } }
private void CreateNode(IGraphContext context, GraphNode parent, PaketMetadata metadata) { var parentId = parent.GetValue <GraphNodeId>("Id"); var id = GraphNodeId.GetNested( parentId, GraphNodeId.GetPartial(CodeGraphNodeIdName.Member, metadata.Id), GraphNodeId.GetPartial(CodeGraphNodeIdName.Parameter, metadata.VersionString)); var node = context.Graph.Nodes.Get(id); if (node == null) { string label = metadata.Id + " " + metadata.VersionString; node = context.Graph.Nodes.GetOrCreate(id, label, PaketGraphSchema.PaketCategory); node.SetValue(DgmlNodeProperties.ContainsChildren, false); node.SetValue(CodeNodeProperties.SourceLocation, new SourceLocation(new Uri(parentId.GetFileName(), UriKind.Absolute), new Position(PaketGraphSchema.GetDisplayIndex(node), 1))); node.SetValue(DgmlNodeProperties.Icon, GraphIcons.Package); } context.Graph.Links.GetOrCreate(parent, node, null, GraphCommonSchema.Contains); }