From 97329692c64bd5e45a83c38f2eb842ce8113fa77 Mon Sep 17 00:00:00 2001 From: Tobias Ortmayr Date: Tue, 7 Oct 2025 13:46:07 +0200 Subject: [PATCH 1/2] GLSP-1586: Adjust to new MenuItem API Counterpart to https://github.com/eclipse-glsp/glsp-server-node/pull/116 Part of https://github.com/eclipse-glsp/glsp/issues/1586 --- .../WorkflowContextMenuItemProvider.java | 17 ++++++++++++----- .../server/features/contextmenu/MenuItem.java | 14 +++++++++++--- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java b/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java index b80260cf..466197d8 100644 --- a/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java +++ b/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java @@ -18,14 +18,13 @@ import static org.eclipse.glsp.example.workflow.utils.ModelTypes.AUTOMATED_TASK; import static org.eclipse.glsp.example.workflow.utils.ModelTypes.MANUAL_TASK; -import java.util.ArrayList; import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.Map; import org.eclipse.glsp.example.workflow.handler.GridSnapper; import org.eclipse.glsp.graph.GPoint; +import org.eclipse.glsp.server.actions.SetEditModeAction; import org.eclipse.glsp.server.features.contextmenu.ContextMenuItemProvider; import org.eclipse.glsp.server.features.contextmenu.MenuItem; import org.eclipse.glsp.server.model.GModelState; @@ -41,16 +40,24 @@ public class WorkflowContextMenuItemProvider implements ContextMenuItemProvider @Override public List getItems(final List selectedElementIds, final GPoint position, final Map args) { + SetEditModeAction editModeAction = new SetEditModeAction( + modelState.isReadonly() ? SetEditModeAction.EDIT_MODE_EDITABLE : SetEditModeAction.EDIT_MODE_READONLY); + MenuItem editModeMenu = new MenuItem("editMode", "Edit Mode", Arrays.asList(editModeAction), true); + editModeMenu.setToggled(modelState.isReadonly()); + if (modelState.isReadonly()) { - return Collections.emptyList(); + return Arrays.asList(editModeMenu); } + GPoint snappedPosition = GridSnapper.snap(position); MenuItem newAutTask = new MenuItem("newAutoTask", "Automated Task", Arrays.asList(new CreateNodeOperation(AUTOMATED_TASK, snappedPosition)), true); MenuItem newManTask = new MenuItem("newManualTask", "Manual Task", Arrays.asList(new CreateNodeOperation(MANUAL_TASK, snappedPosition)), true); - MenuItem newChildMenu = new MenuItem("new", "New", Arrays.asList(newAutTask, newManTask), "add", "0_new"); - return new ArrayList<>(List.of(newChildMenu)); + MenuItem hiddenItem = new MenuItem("hiddenItem", "Should be hidden", Arrays.asList(), false); + MenuItem newChildMenu = new MenuItem("new", "New", Arrays.asList(newAutTask, newManTask, hiddenItem), "add", + "0_new"); + return Arrays.asList(newChildMenu, editModeMenu); } } diff --git a/plugins/org.eclipse.glsp.server/src/org/eclipse/glsp/server/features/contextmenu/MenuItem.java b/plugins/org.eclipse.glsp.server/src/org/eclipse/glsp/server/features/contextmenu/MenuItem.java index 328fd182..6d474b88 100644 --- a/plugins/org.eclipse.glsp.server/src/org/eclipse/glsp/server/features/contextmenu/MenuItem.java +++ b/plugins/org.eclipse.glsp.server/src/org/eclipse/glsp/server/features/contextmenu/MenuItem.java @@ -29,6 +29,7 @@ public class MenuItem extends LabeledAction { private final List children; private boolean isEnabled; private boolean isToggled; + private boolean isVisible; public MenuItem(final String id, final String label, final List actions, final boolean isEnabled) { this(id, label, actions, isEnabled, null); @@ -41,7 +42,7 @@ public MenuItem(final String id, final String label, final List actions, public MenuItem(final String id, final String label, final List actions, final boolean isEnabled, final String icon, final String sortString) { - this(id, label, actions, icon, sortString, null, null, isEnabled, false, Collections.emptyList()); + this(id, label, actions, icon, sortString, null, null, isEnabled, isEnabled, false, Collections.emptyList()); } public MenuItem(final String id, final String label, final List children) { @@ -54,13 +55,14 @@ public MenuItem(final String id, final String label, final List childr public MenuItem(final String id, final String label, final List children, final String group, final String sortString) { - this(id, label, Collections.emptyList(), null, sortString, group, null, true, false, children); + this(id, label, Collections.emptyList(), null, sortString, group, null, true, true, false, children); } @SuppressWarnings("checkstyle:ParameterNumber") public MenuItem(final String id, final String label, final List actions, final String icon, final String sortString, final String group, - final String parentId, final boolean isEnabled, final boolean isToggled, final List children) { + final String parentId, final boolean isEnabled, final boolean isVisible, final boolean isToggled, + final List children) { super(label, actions, icon); this.id = id; this.sortString = sortString; @@ -68,6 +70,7 @@ public MenuItem(final String id, final String label, final List actions, this.group = group; this.parentId = parentId; this.isEnabled = isEnabled; + this.isVisible = isVisible; this.isToggled = isToggled; } @@ -92,4 +95,9 @@ public MenuItem(final String id, final String label, final List actions, public String getSortString() { return sortString; } public List getChildren() { return children; } + + public boolean isVisible() { return isVisible; } + + public void setVisible(final boolean isVisible) { this.isVisible = isVisible; } + } From a84c6ad0baafbf570fa005fc8a07b26747f53f41 Mon Sep 17 00:00:00 2001 From: Tobias Ortmayr Date: Thu, 9 Oct 2025 11:03:05 +0200 Subject: [PATCH 2/2] Address review feedback --- .../workflow/provider/WorkflowContextMenuItemProvider.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java b/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java index 466197d8..366cf32a 100644 --- a/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java +++ b/examples/org.eclipse.glsp.example.workflow/src/org/eclipse/glsp/example/workflow/provider/WorkflowContextMenuItemProvider.java @@ -42,7 +42,7 @@ public List getItems(final List selectedElementIds, final GPoi final Map args) { SetEditModeAction editModeAction = new SetEditModeAction( modelState.isReadonly() ? SetEditModeAction.EDIT_MODE_EDITABLE : SetEditModeAction.EDIT_MODE_READONLY); - MenuItem editModeMenu = new MenuItem("editMode", "Edit Mode", Arrays.asList(editModeAction), true); + MenuItem editModeMenu = new MenuItem("editMode", "Readonly Mode", Arrays.asList(editModeAction), true); editModeMenu.setToggled(modelState.isReadonly()); if (modelState.isReadonly()) {