// 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);
        }
Beispiel #2
0
		// 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;
		}
Beispiel #4
0
        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);
        }