/// <summary>
        /// Disposes resources used by the control.
        /// </summary>
        /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                // Piccolo has some static fields which reference the current canvas.
                // Canvas references us through events -> we never get cleanup.
                // Therefor we must unsubscribe from all events.
                FCanvas.RemoveInputEventListener(FSelectionEventHandler);
                FCanvas.RemoveInputEventListener(FDragDropEventHandler);
                FCanvas.RemoveInputEventListener(FMyPanEventHandler);
                FCanvas.RemoveInputEventListener(FMyZoomEventHandler);
                FCanvas.RemoveInputEventListener(FPathEventHandler);
                FCanvas.RemoveInputEventListener(FEventPassThrougHandler);

                FCanvas.KeyPress -= FCanvas_KeyPress;
                FCanvas.KeyDown  -= FCanvas_KeyDown;
                FCanvas.KeyUp    -= FCanvas_KeyUp;

                if (components != null)
                {
                    components.Dispose();
                }
            }

            base.Dispose(disposing);
        }
Beispiel #2
0
        public GraphEditor()
        {
            //
            // The InitializeComponent() call is required for Windows Forms designer support.
            //
            InitializeComponent();

            SolidLayer = FCanvas.Layer;
            LinkLayer  = new PLayer();
            FCanvas.Root.AddChild(LinkLayer);

            //add linklayer below nodelayer
            FCanvas.Camera.AddLayer(LinkLayer);
            FCanvas.Camera.AddLayer(SolidLayer);

            //set default roots
            LinkRoot = CreateDot(null);
            Root     = CreateDot(null);

            //set render quality
            FCanvas.HighRenderQuality +=
                delegate(Graphics graphics)
            {
                //improves text render quality when antialiased and speeds up drawing
                graphics.CompositingQuality = CompositingQuality.HighSpeed;
            };
            FCanvas.AnimatingRenderQuality   = RenderQuality.HighQuality;
            FCanvas.InteractingRenderQuality = RenderQuality.HighQuality;
            FCanvas.DefaultRenderQuality     = RenderQuality.HighQuality;

            //remove default zoom and pan event handlers
            FCanvas.RemoveInputEventListener(FCanvas.ZoomEventHandler);
            FCanvas.RemoveInputEventListener(FCanvas.PanEventHandler);

            //create custom event handlers
            FDragDropEventHandler   = new DragDropEventHandler();
            FMyPanEventHandler      = new PanEventHandler();
            FMyZoomEventHandler     = new ZoomEventHandler();
            FPathEventHandler       = new PathEventHandler(this);
            FEventPassThrougHandler = new EventPassThrougHandler(this);

            //add custom event handlers
            FCanvas.AddInputEventListener(FDragDropEventHandler);
            FCanvas.AddInputEventListener(FMyPanEventHandler);
            FCanvas.AddInputEventListener(FMyZoomEventHandler);
            FCanvas.AddInputEventListener(FPathEventHandler);
            FCanvas.AddInputEventListener(FEventPassThrougHandler);

            FCanvas.KeyPress += FCanvas_KeyPress;
            FCanvas.KeyDown  += FCanvas_KeyDown;
            FCanvas.KeyUp    += FCanvas_KeyUp;

            FCanvas.MinimumSize = new Size(10, 10);
        }