Пример #1
0
        public void Delete()
        {
            BaseController canvasController = ServiceManager.Get <IFlowSharpCanvasService>().ActiveController;

            if (canvasController.Canvas.Focused)
            {
                List <ZOrderMap>      originalZOrder   = canvasController.GetZOrderOfSelectedElements();
                List <GraphicElement> selectedElements = canvasController.SelectedElements.ToList();

                // TODO: Better implementation would be for the mouse controller to hook a shape deleted event?
                IFlowSharpMouseControllerService mouseController = ServiceManager.Get <IFlowSharpMouseControllerService>();
                canvasController.SelectedElements.ForEach(el => mouseController.ShapeDeleted(el));

                canvasController.UndoStack.UndoRedo("Delete",
                                                    () =>
                {
                    canvasController.DeleteSelectedElementsHierarchy(false);
                },
                                                    () =>
                {
                    canvasController.RestoreZOrderWithHierarchy(originalZOrder);
                    RestoreConnections(originalZOrder);
                    canvasController.DeselectCurrentSelectedElements();
                    canvasController.SelectElements(selectedElements);
                });
            }
        }
Пример #2
0
        protected void Initialize()
        {
            IFlowSharpMenuService            menuService   = ServiceManager.Get <IFlowSharpMenuService>();
            IFlowSharpCanvasService          canvasService = ServiceManager.Get <IFlowSharpCanvasService>();
            IFlowSharpMouseControllerService mouseService  = ServiceManager.Get <IFlowSharpMouseControllerService>();

            menuService.Initialize(form);
            menuService.Initialize(canvasService.ActiveController);
            canvasService.AddCanvas  += (sndr, args) => CreateCanvas();
            canvasService.LoadLayout += OnLoadLayout;
            canvasService.SaveLayout += OnSaveLayout;
            // mouseService.Initialize(canvasService.ActiveController);
            InformServicesOfNewCanvas(canvasService.ActiveController);
        }
Пример #3
0
        protected void InformServicesOfNewCanvas(BaseController controller)
        {
            // Wire up menu for this canvas controller.
            IFlowSharpMenuService menuService = ServiceManager.Get <IFlowSharpMenuService>();

            menuService.Initialize(controller);

            // Wire up mouse for this canvas controller.
            IFlowSharpMouseControllerService mouseService = ServiceManager.Get <IFlowSharpMouseControllerService>();

            mouseService.Initialize(controller);

            // Debug window needs to know too.
            ServiceManager.Get <IFlowSharpDebugWindowService>().Initialize(controller);

            // PropertyGrid service needs to hook controller events.
            ServiceManager.Get <IFlowSharpPropertyGridService>().Initialize(controller);

            // Update document tab when canvas name changes.
            controller.CanvasNameChanged += (sndr, args) =>
            {
                IDockDocument doc = ((IDockDocument)((BaseController)sndr).Canvas.Parent.Parent);
                doc.TabText = controller.CanvasName;

                // Update the metadata for the controller document so the layout contains this info on save.
                doc.Metadata = Constants.META_CANVAS + "," + controller.Filename + "," + doc.TabText;
            };

            // Update the metadata for the controller document so the layout contains this info on save.
            controller.FilenameChanged += (sndr, args) =>
            {
                IDockDocument doc = ((IDockDocument)((BaseController)sndr).Canvas.Parent.Parent);
                doc.Metadata = Constants.META_CANVAS + "," + controller.Filename + "," + doc.TabText;
            };

            // Inform debug window, so it can select the shape in the shape list when a shape is selected on the canvas.
            controller.ElementSelected += (sndr, args) =>
            {
                ServiceManager.Get <IFlowSharpDebugWindowService>().FindShape(args.Element);
            };

            ServiceManager.Get <IFlowSharpEditService>().NewCanvas(controller);

            // Update any other services needing to know about the new canvas.  These are additional services that are not
            // part of the core FlowSharp application (for example, the FlowSharpCode services.)
            NewCanvas.Fire(this, new NewCanvasEventArgs()
            {
                Controller = controller
            });
        }
Пример #4
0
        public void Delete()
        {
            BaseController canvasController = ServiceManager.Get <IFlowSharpCanvasService>().ActiveController;

            if (canvasController.Canvas.Focused)
            {
                List <ZOrderMap>      originalZOrder   = canvasController.GetZOrderOfSelectedElements();
                List <GraphicElement> selectedElements = canvasController.SelectedElements.ToList();
                Dictionary <GraphicElement, GraphicElement> elementParent = new Dictionary <GraphicElement, GraphicElement>();
                selectedElements.ForEach(el => elementParent[el] = el.Parent);

                // TODO: Better implementation would be for the mouse controller to hook a shape deleted event?
                IFlowSharpMouseControllerService mouseController = ServiceManager.Get <IFlowSharpMouseControllerService>();
                canvasController.SelectedElements.ForEach(el => mouseController.ShapeDeleted(el));

                canvasController.UndoStack.UndoRedo("Delete",
                                                    () =>
                {
                    canvasController.DeleteSelectedElementsHierarchy(false);

                    // Delete any parent association:
                    selectedElements.Where(el => el.Parent != null).ForEach(el =>
                    {
                        el.Parent.GroupChildren.Remove(el);
                        el.Parent = null;
                    });
                },
                                                    () =>
                {
                    canvasController.RestoreZOrderWithHierarchy(originalZOrder);
                    RestoreConnections(originalZOrder);
                    canvasController.DeselectCurrentSelectedElements();
                    canvasController.SelectElements(selectedElements);

                    // Restore parent associations:
                    selectedElements.ForEach(el =>
                    {
                        el.Parent = elementParent[el];

                        if (el.Parent != null)
                        {
                            el.Parent.GroupChildren.Add(el);
                        }
                    });
                });
            }
        }
Пример #5
0
        protected void Initialize()
        {
            IFlowSharpMenuService            menuService   = ServiceManager.Get <IFlowSharpMenuService>();
            IFlowSharpCanvasService          canvasService = ServiceManager.Get <IFlowSharpCanvasService>();
            IFlowSharpMouseControllerService mouseService  = ServiceManager.Get <IFlowSharpMouseControllerService>();

            menuService.Initialize(form);
            canvasService.AddCanvas  += (sndr, args) => CreateCanvas();
            canvasService.LoadLayout += OnLoadLayout;
            canvasService.SaveLayout += OnSaveLayout;
            // mouseService.Initialize(canvasService.ActiveController);

            // Will be null if canvas was not created when app starts.  Sanity check here
            // mainly for when we debug a form with no panels initialized by default.
            if (canvasService.ActiveController != null)
            {
                menuService.Initialize(canvasService.ActiveController);
                InformServicesOfNewCanvas(canvasService.ActiveController);
            }
        }
Пример #6
0
        protected void InformServicesOfNewCanvas(BaseController controller)
        {
            // Wire up menu for this canvas controller.
            IFlowSharpMenuService menuService = ServiceManager.Get <IFlowSharpMenuService>();

            menuService.Initialize(controller);

            // Wire up mouse for this canvas controller.
            IFlowSharpMouseControllerService mouseService = ServiceManager.Get <IFlowSharpMouseControllerService>();

            mouseService.Initialize(controller);

            // Debug window needs to know too.
            ServiceManager.Get <IFlowSharpDebugWindowService>().Initialize(controller);

            // PropertyGrid service needs to hook controller events.
            ServiceManager.Get <IFlowSharpPropertyGridService>().Initialize(controller);

            // Update document tab when canvas name changes.
            controller.CanvasNameChanged += (sndr, args) =>
            {
                IDockDocument doc = ((IDockDocument)((BaseController)sndr).Canvas.Parent.Parent);
                doc.TabText = controller.CanvasName;

                // Update the metadata for the controller document so the layout contains this info on save.
                doc.Metadata = Constants.META_CANVAS + "," + controller.Filename + "," + doc.TabText;
            };

            // Update the metadata for the controller document so the layout contains this info on save.
            controller.FilenameChanged += (sndr, args) =>
            {
                IDockDocument doc = ((IDockDocument)((BaseController)sndr).Canvas.Parent.Parent);
                doc.Metadata = Constants.META_CANVAS + "," + controller.Filename + "," + doc.TabText;
            };

            // Update any other services needing to know about the new canvas.
            NewCanvas.Fire(this, new NewCanvasEventArgs()
            {
                Controller = controller
            });
        }