public GraphEditor(int width, int height) { // This call is required by the Windows.Forms Form Designer. InitializeComponent(); this.Size = new Size(width, height); int numNodes = 50; int numEdges = 50; // Initialize, and create a layer for the edges (always underneath the nodes) PLayer nodeLayer = this.Layer; PLayer edgeLayer = new PLayer(); Root.AddChild(edgeLayer); this.Camera.AddLayer(0, edgeLayer); Random rnd = new Random(); // Create some random nodes // Each node's Tag has an ArrayList used to store associated edges for (int i = 0; i < numNodes; i++) { float x = (float)(this.ClientSize.Width * rnd.NextDouble()); float y = (float)(this.ClientSize.Height * rnd.NextDouble()); PPath path = PPath.CreateEllipse(x, y, 20, 20); path.Tag = new ArrayList(); nodeLayer.AddChild(path); } // Create some random edges // Each edge's Tag has an ArrayList used to store associated nodes for (int i = 0; i < numEdges; i++) { int n1 = rnd.Next(numNodes); int n2 = n1; while (n2 == n1) { n2 = rnd.Next(numNodes); // Make sure we have two distinct nodes. } PNode node1 = nodeLayer[n1]; PNode node2 = nodeLayer[n2]; PPath edge = new PPath(); ((ArrayList)node1.Tag).Add(edge); ((ArrayList)node2.Tag).Add(edge); edge.Tag = new ArrayList(); ((ArrayList)edge.Tag).Add(node1); ((ArrayList)edge.Tag).Add(node2); edgeLayer.AddChild(edge); UpdateEdge(edge); } // Create event handler to move nodes and update edges nodeLayer.AddInputEventListener(new NodeDragHandler()); }
public override void Initialize() { int numNodes = 50; int numEdges = 50; // Initialize, and create a layer for the edges (always underneath the nodes) PLayer nodeLayer = Canvas.Layer; PLayer edgeLayer = new PLayer(); Canvas.Root.AddChild(edgeLayer); Canvas.Camera.AddLayer(0, edgeLayer); Random rnd = new Random(); // Create some random nodes // Each node's Tag has an ArrayList used to store associated edges for (int i = 0; i < numNodes; i++) { float x = (float)(ClientSize.Width * rnd.NextDouble()); float y = (float)(ClientSize.Height * rnd.NextDouble()); P3Path node = P3Path.CreateEllipse(x, y, 20, 20); node.Tag = new ArrayList(); nodeLayer.AddChild(node); } // Create some random edges // Each edge's Tag has an ArrayList used to store associated nodes for (int i = 0; i < numEdges; i++) { int n1 = rnd.Next(numNodes); int n2 = n1; while (n2 == n1) { n2 = rnd.Next(numNodes); // Make sure we have two distinct nodes. } PNode node1 = nodeLayer[n1]; PNode node2 = nodeLayer[n2]; P3Path edge = P3Path.CreateLine((node1.Bounds.Left + node1.Bounds.Right) / 2, (node1.Bounds.Top + node1.Bounds.Bottom) / 2, (node2.Bounds.Left + node2.Bounds.Right) / 2, (node2.Bounds.Top + node2.Bounds.Bottom) / 2); ((ArrayList)node1.Tag).Add(edge); ((ArrayList)node2.Tag).Add(edge); edge.Tag = new ArrayList(); ((ArrayList)edge.Tag).Add(node1); ((ArrayList)edge.Tag).Add(node2); edgeLayer.AddChild(edge); } // Create event handler to move nodes and update edges nodeLayer.AddInputEventListener(new NodeDragHandler()); }
public GraphEditor(int width, int height) { InitializeComponent(); this.Size = new Size(width, height); nodeLayer = this.Layer; edgeLayer = new PLayer(); Root.AddChild(edgeLayer); this.Camera.AddLayer(0, edgeLayer); backLayer = new PLayer(); Root.AddChild(backLayer); backLayer.MoveToBack(); this.Camera.AddLayer(1, backLayer); nodeLayer.AddInputEventListener(new NodeDragHandler()); }
public void AllowDragging() { nodeLayer.RemoveInputEventListener(dragHandler); nodeLayer.AddInputEventListener(dragHandler); }