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); }); } }
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); } }); }); } }