diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings index c69d66347ae3953aa0ebb8842c388aee197a4048..fabef4c4910470a38c92acb1f7be8c1d66ad7d1e 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/.ratings @@ -1,6 +1,6 @@ CurvedLinkLayoutedContentAnchorangeController.java e22faedbe98c3dab660b5d2df8ebd004e116c5ba GREEN CurvedLinkLayoutedDiagramAnchorangeController.java f2e5e2a7cc9b6a070871e200e57371286bb15222 GREEN -EObjectDiagramController.java ccccc925eb7966b274aa7354f4e9d4c534b250c5 GREEN +EObjectDiagramController.java 7fe2cd69ee8449b0ecaeb42e4fe2b65fffd9b6c3 GREEN EObjectEllipticResizableContentControllerBase.java f12e8f5a646a23fe428ed4768bf041c8b885ec81 GREEN EObjectModelChangeProvider.java f4b60cebb088a5c81ca92a41614e1a5d40030502 GREEN EObjectRectangularResizableContentControllerBase.java cde6c13659611d927691c03ecd2621cff2414b03 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectDiagramController.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectDiagramController.java index ccccc925eb7966b274aa7354f4e9d4c534b250c5..7fe2cd69ee8449b0ecaeb42e4fe2b65fffd9b6c3 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectDiagramController.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/editor/fx/controller/EObjectDiagramController.java @@ -16,7 +16,6 @@ package org.fortiss.tooling.base.ui.editor.fx.controller; import static java.lang.Math.max; import static java.util.Objects.requireNonNull; import static org.fortiss.tooling.base.ui.utils.ContextMenuUtils.createAutoLayoutMenu; -import static org.fortiss.tooling.base.ui.utils.ContextMenuUtils.createDisplayMenu; import static org.fortiss.tooling.base.ui.utils.ContextMenuUtils.createElementCompositionContext; import static org.fortiss.tooling.base.ui.utils.ContextMenuUtils.createPrototypeMenu; import static org.fortiss.tooling.base.ui.utils.FXDNDUtils.canCompose; @@ -86,7 +85,8 @@ public class EObjectDiagramController<T extends EObject> extends DefaultDiagramC IElementCompositionContext edc = createElementCompositionContext(modelParent, x, y, true, getViewer().getFeatures().getCurrentZoomFactor()); List<MenuItem> result = createPrototypeMenu(modelParent, edc); - result.add(createDisplayMenu(getViewer())); + // Adds "Display" menu + result.addAll(super.contextMenuContributions(node, diagramLocation)); if(modelParent instanceof IHierarchicElement && enableAutoLayout()) { result.add(createAutoLayoutMenu((IHierarchicElement)modelParent)); } diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings index 2d6cada90ddcdeb7bc4b4c3a9f75abf0c358bca2..6d70a178d73efd4cb8c67c1ca2d4c2ff807169c3 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/.ratings @@ -1,6 +1,6 @@ AbstractNameEditingSupport.java c57336a0e0da18711a1610ca667dfea76728807f GREEN ActionUtils.java 322f43d4f92f992daef8ac88eb0f9197c840c89b GREEN -ContextMenuUtils.java 434d6b7aad095ce726caa4de42913391ed6e6832 GREEN +ContextMenuUtils.java 74a4264a1d3febb92c7cf9a78f6c12fa1c7ad2f0 GREEN DragAndDropBaseUtils.java d375377f9124f6113b2a295e6b0e09ac8966e564 GREEN EllipseLayoutUIUtils.java 4dd9dbd96a45e8c455c019caa19e4a50f18336af GREEN FXDNDUtils.java 6ce94e239e68f9e2b3cc0524b072606f4a120076 GREEN diff --git a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/ContextMenuUtils.java b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/ContextMenuUtils.java index 434d6b7aad095ce726caa4de42913391ed6e6832..74a4264a1d3febb92c7cf9a78f6c12fa1c7ad2f0 100644 --- a/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/ContextMenuUtils.java +++ b/org.fortiss.tooling.base.ui/src/org/fortiss/tooling/base/ui/utils/ContextMenuUtils.java @@ -26,8 +26,6 @@ import org.fortiss.tooling.base.model.element.IHierarchicElement; import org.fortiss.tooling.base.model.layout.Point; import org.fortiss.tooling.base.ui.layout.auto.IAutoLayouter; import org.fortiss.tooling.base.ui.layout.auto.KielerAutoLayouter; -import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewer; -import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerFeatures; import org.fortiss.tooling.kernel.extension.data.IElementCompositionContext; import org.fortiss.tooling.kernel.extension.data.Prototype; import org.fortiss.tooling.kernel.service.ICommandStackService; @@ -105,39 +103,4 @@ public final class ContextMenuUtils { Point loc = createPoint((int)x, (int)y, "CompositionPoint"); return new ElementDropContext(target, loc, isRoot, zoom); } - - /** Returns the default display menu for interaction with diagram viewer features. */ - public static Menu createDisplayMenu(DiagramViewer viewer) { - Menu menu = new Menu("Display ..."); - DiagramViewerFeatures features = viewer.getFeatures(); - // link highlighting - if(features.isLinkHighlightingEnabled()) { - MenuItem disableLinkHighlighting = new MenuItem("Disable Link Highlighting"); - disableLinkHighlighting.setOnAction(evt -> { - features.setLinkHighlightingEnabled(false); - }); - menu.getItems().add(disableLinkHighlighting); - } else { - MenuItem enableLinkHighlighting = new MenuItem("Enable Link Highlighting"); - enableLinkHighlighting.setOnAction(evt -> { - features.setLinkHighlightingEnabled(true); - }); - menu.getItems().add(enableLinkHighlighting); - } - // interaction area shading - if(features.isInteractionAreaShadingEnabled()) { - MenuItem disableInteractionShading = new MenuItem("Disable Interactive Area Shading"); - disableInteractionShading.setOnAction(evt -> { - features.setInteractionAreaShadingEnabled(false); - }); - menu.getItems().add(disableInteractionShading); - } else { - MenuItem enableInteractionShading = new MenuItem("Enable Interactive Area Shading"); - enableInteractionShading.setOnAction(evt -> { - features.setInteractionAreaShadingEnabled(true); - }); - menu.getItems().add(enableInteractionShading); - } - return menu; - } } diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings index f4861e4fddd5014e568093359cd342d872c6194d..c1f077e5e35c7f3e73011bf6cff268211ad0256e 100644 --- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings +++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/.ratings @@ -2,7 +2,7 @@ AnchorageContentControllerBase.java da56b10cbf2711b5da69f0b59f43eacbe54f4eea GRE ClickControllerBase.java 8e5861ed5f9318008ad0fdd5497ed320cd5bd647 GREEN ContentAnchorageMoveControllerBase.java c18e7915ce23e124757f5b736086ecc46694800a GREEN ControllerBase.java 9311521b252e46640e26d409610e527fd5ed6922 GREEN -DefaultDiagramController.java 0e083b89a08f63967102a384d66ebc1d64d203af GREEN +DefaultDiagramController.java 3a0c4c4c28e6306dcaf70c5c1c7f8ad22bb86d73 GREEN DelegatingContentAnchorageController.java 1889628a346a2183082ffe213978f9d15a949494 GREEN DragControllerBase.java b15ff874304f679fe494d85f57cc8cbe4d0d1d15 GREEN DraggingUtils.java 95117e2ea4c36b6c6a31f8088bb95b484e0e6612 GREEN diff --git a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java index 0e083b89a08f63967102a384d66ebc1d64d203af..3a0c4c4c28e6306dcaf70c5c1c7f8ad22bb86d73 100644 --- a/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java +++ b/org.fortiss.tooling.common.ui/src/org/fortiss/tooling/common/ui/javafx/lwfxef/controller/base/DefaultDiagramController.java @@ -9,17 +9,20 @@ *******************************************************************************/ package org.fortiss.tooling.common.ui.javafx.lwfxef.controller.base; -import java.util.LinkedList; +import static java.util.Arrays.asList; + import java.util.List; import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramCoordinate; import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerFeatures; +import org.fortiss.tooling.common.ui.javafx.lwfxef.DiagramViewerFeatures.IndicatorType; import org.fortiss.tooling.common.ui.javafx.lwfxef.EDragGesture; import org.fortiss.tooling.common.ui.javafx.lwfxef.change.Change; import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IClickController; import org.fortiss.tooling.common.ui.javafx.lwfxef.controller.IDragController; import org.fortiss.tooling.common.ui.javafx.lwfxef.mvc.IMVCBundle; +import javafx.collections.ObservableList; import javafx.scene.Node; import javafx.scene.control.Menu; import javafx.scene.control.MenuItem; @@ -32,48 +35,86 @@ public class DefaultDiagramController extends ControllerBase { /** Flag for ignoring mouse click event after dragging gesture. */ private boolean ignoreNextMouseClick = false; + /** Previous grid indicator type (to restore grid after it has been hidden). */ + private IndicatorType previousGridIndicatorType = null; + /** Constructor. */ public DefaultDiagramController(IMVCBundle mvcb) { super(mvcb); } - /** {@inheritDoc} */ - @Override - public List<MenuItem> contextMenuContributions(Node node, DiagramCoordinate diagramLocation) { - Menu menu = new Menu("Display ..."); - DiagramViewerFeatures features = getViewer().getFeatures(); - // link highlighting + /** Creates the {@link MenuItem} to enable/disable link highlighting. */ + private MenuItem createLinkHighlightingMenuItem(DiagramViewerFeatures features) { + MenuItem linkHighLightingMenuItem; if(features.isLinkHighlightingEnabled()) { - MenuItem disableLinkHighlighting = new MenuItem("Disable Link Highlighting"); - disableLinkHighlighting.setOnAction(evt -> { + linkHighLightingMenuItem = new MenuItem("Disable Link Highlighting"); + linkHighLightingMenuItem.setOnAction(evt -> { features.setLinkHighlightingEnabled(false); }); - menu.getItems().add(disableLinkHighlighting); } else { - MenuItem enableLinkHighlighting = new MenuItem("Enable Link Highlighting"); - enableLinkHighlighting.setOnAction(evt -> { + linkHighLightingMenuItem = new MenuItem("Enable Link Highlighting"); + linkHighLightingMenuItem.setOnAction(evt -> { features.setLinkHighlightingEnabled(true); }); - menu.getItems().add(enableLinkHighlighting); } - // interaction area shading + return linkHighLightingMenuItem; + } + + /** Creates a {@link MenuItem} to enable/disable interaction shading. */ + private MenuItem createInteractionAreaShadingMenuItem(DiagramViewerFeatures features) { + MenuItem interactionAreaShadingMenuItem; if(features.isInteractionAreaShadingEnabled()) { - MenuItem disableInteractionShading = new MenuItem("Disable Interactive Area Shading"); - disableInteractionShading.setOnAction(evt -> { + interactionAreaShadingMenuItem = new MenuItem("Disable Interactive Area Shading"); + interactionAreaShadingMenuItem.setOnAction(evt -> { features.setInteractionAreaShadingEnabled(false); }); - menu.getItems().add(disableInteractionShading); } else { - MenuItem enableInteractionShading = new MenuItem("Enable Interactive Area Shading"); - enableInteractionShading.setOnAction(evt -> { + interactionAreaShadingMenuItem = new MenuItem("Enable Interactive Area Shading"); + interactionAreaShadingMenuItem.setOnAction(evt -> { features.setInteractionAreaShadingEnabled(true); }); - menu.getItems().add(enableInteractionShading); + } + return interactionAreaShadingMenuItem; + } + + /** + * Creates a {@link MenuItem} to hide/show the grid (returns {@code null} in case the diagram + * does not have a grid). + */ + private MenuItem createGridMenuItem(DiagramViewerFeatures features) { + MenuItem gridMenuItem = null; + if(features.getIndicatorType() == IndicatorType.INVISIBLE) { + if(previousGridIndicatorType != null) { + gridMenuItem = new MenuItem("Show Grid"); + gridMenuItem.setOnAction(evt -> { + features.setIndicatorType(previousGridIndicatorType); + }); + } + } else { + gridMenuItem = new MenuItem("Hide Grid"); + gridMenuItem.setOnAction(evt -> { + previousGridIndicatorType = features.getIndicatorType(); + features.setIndicatorType(IndicatorType.INVISIBLE); + }); + } + return gridMenuItem; + } + + /** {@inheritDoc} */ + @Override + public List<MenuItem> contextMenuContributions(Node node, DiagramCoordinate diagramLocation) { + Menu menu = new Menu("Display ..."); + ObservableList<MenuItem> menuItems = menu.getItems(); + DiagramViewerFeatures features = getViewer().getFeatures(); + + menuItems.add(createLinkHighlightingMenuItem(features)); + menuItems.add(createInteractionAreaShadingMenuItem(features)); + MenuItem gridMenuItem = createGridMenuItem(features); + if(gridMenuItem != null) { + menuItems.add(gridMenuItem); } - List<MenuItem> menuList = new LinkedList<>(); - menuList.add(menu); - return menuList; + return asList(menu); } /** {@inheritDoc} */