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());
        }
Exemple #3
0
 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());
 }
Exemple #4
0
 public void AllowDragging()
 {
     nodeLayer.RemoveInputEventListener(dragHandler);
     nodeLayer.AddInputEventListener(dragHandler);
 }