Skip to content
Snippets Groups Projects
Commit 6850c493 authored by Simon Barner's avatar Simon Barner
Browse files

Merge branch '4097' into 'master'

4097: Add hide/show grid context menu item for diagram editors

See merge request !131
parents 9be21c13 ff3ad310
No related branches found
No related tags found
1 merge request!1314097: Add hide/show grid context menu item for diagram editors
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
......
......@@ -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));
}
......
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
......
......@@ -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;
}
}
......@@ -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
......
......@@ -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} */
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment