// Expanded is passed so that the correct ContentNodes are expanded in the PositionedNode PositionedGraph BuildPositionedGraph(ObjectGraph objectGraph, Expanded expanded) { var positionedNodeFor = new Dictionary <ObjectGraphNode, PositionedNode>(); var positionedGraph = new PositionedGraph(); // create empty PositionedNodes foreach (ObjectGraphNode objectNode in objectGraph.ReachableNodes) { var posNode = new PositionedNode(objectNode, expanded); posNode.MeasureVisualControl(); positionedGraph.AddNode(posNode); positionedNodeFor[objectNode] = posNode; } // create edges foreach (PositionedNode posNode in positionedGraph.Nodes) { foreach (PositionedNodeProperty property in posNode.Properties) { if (property.ObjectGraphProperty.TargetNode != null) { ObjectGraphNode targetObjectNode = property.ObjectGraphProperty.TargetNode; PositionedNode edgeTarget = positionedNodeFor[targetObjectNode]; property.Edge = new PositionedEdge { Name = property.Name, Source = property, Target = edgeTarget }; } } } positionedGraph.Root = positionedNodeFor[objectGraph.Root]; return(positionedGraph); }
// Expanded is passed so that the correct ContentNodes are expanded in the PositionedNode PositionedGraph BuildPositionedGraph(ObjectGraph objectGraph, Expanded expanded) { var positionedNodeFor = new Dictionary<ObjectGraphNode, PositionedNode>(); var positionedGraph = new PositionedGraph(); // create empty PositionedNodes foreach (ObjectGraphNode objectNode in objectGraph.ReachableNodes) { var posNode = new PositionedNode(objectNode, expanded); posNode.MeasureVisualControl(); positionedGraph.AddNode(posNode); positionedNodeFor[objectNode] = posNode; } // create edges foreach (PositionedNode posNode in positionedGraph.Nodes) { foreach (PositionedNodeProperty property in posNode.Properties) { if (property.ObjectGraphProperty.TargetNode != null) { ObjectGraphNode targetObjectNode = property.ObjectGraphProperty.TargetNode; PositionedNode edgeTarget = positionedNodeFor[targetObjectNode]; property.Edge = new PositionedEdge { Name = property.Name, Source = property, Target = edgeTarget }; } } } positionedGraph.Root = positionedNodeFor[objectGraph.Root]; return positionedGraph; }
private PositionedGraph buildTreeGraph(ObjectGraph objectGraph, Expanded expanded) { var resultGraph = new PositionedGraph(); // create empty PosNodes foreach (ObjectGraphNode objectGraphNode in objectGraph.ReachableNodes) { TreeGraphNode posNode = createNewTreeGraphNode(objectGraphNode); resultGraph.AddNode(posNode); treeNodeFor[objectGraphNode] = posNode; posNode.InitContentFromObjectNode(expanded); } // create edges foreach (PositionedGraphNode posNode in resultGraph.Nodes) { // create edges outgoing from this posNode foreach (PositionedNodeProperty property in posNode.Properties) { //property.IsPropertyExpanded = expanded.Expressions.IsExpanded(property.Expression); if (property.ObjectGraphProperty.TargetNode != null) { ObjectGraphNode targetObjectNode = property.ObjectGraphProperty.TargetNode; PositionedGraphNode edgeTarget = treeNodeFor[targetObjectNode]; property.Edge = new TreeGraphEdge { IsTreeEdge = false, Name = property.Name, Source = property, Target = edgeTarget }; } } } resultGraph.Root = treeNodeFor[objectGraph.Root]; return resultGraph; }
private PositionedGraph buildTreeGraph(ObjectGraph objectGraph, Expanded expanded) { var resultGraph = new PositionedGraph(); // create empty PosNodes foreach (ObjectGraphNode objectGraphNode in objectGraph.ReachableNodes) { TreeGraphNode posNode = createNewTreeGraphNode(objectGraphNode); resultGraph.AddNode(posNode); treeNodeFor[objectGraphNode] = posNode; posNode.InitContentFromObjectNode(expanded); } // create edges foreach (PositionedGraphNode posNode in resultGraph.Nodes) { // create edges outgoing from this posNode foreach (PositionedNodeProperty property in posNode.Properties) { //property.IsPropertyExpanded = expanded.Expressions.IsExpanded(property.Expression); if (property.ObjectGraphProperty.TargetNode != null) { ObjectGraphNode targetObjectNode = property.ObjectGraphProperty.TargetNode; PositionedGraphNode edgeTarget = treeNodeFor[targetObjectNode]; property.Edge = new TreeGraphEdge { IsTreeEdge = false, Name = property.Name, Source = property, Target = edgeTarget }; } } } resultGraph.Root = treeNodeFor[objectGraph.Root]; return(resultGraph); }