From 9b7dccb4f53782bf4fca73de5842e85ce5092def Mon Sep 17 00:00:00 2001 From: Sebastian Bergemann <bergemann@fortiss.org> Date: Tue, 19 Sep 2023 12:15:36 +0200 Subject: [PATCH] Split reuse elements into separate menu (within editor context menu) Issue-Ref: 4323 Issue-Url: https://git.fortiss.org/af3/af3/-/issues/4323 Signed-off-by: Sebastian Bergemann <bergemann@fortiss.org> --- .../META-INF/MANIFEST.MF | 3 ++- .../base/ui/utils/ContextMenuUtils.java | 21 ++++++++++++++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/org.fortiss.tooling.base.ui/META-INF/MANIFEST.MF b/org.fortiss.tooling.base.ui/META-INF/MANIFEST.MF index 1e4971a47..a1387ca8e 100644 --- a/org.fortiss.tooling.base.ui/META-INF/MANIFEST.MF +++ b/org.fortiss.tooling.base.ui/META-INF/MANIFEST.MF @@ -7,7 +7,8 @@ Bundle-Activator: org.fortiss.tooling.base.ui.ToolingBaseUIActivator Require-Bundle: org.fortiss.tooling.base;bundle-version="2.23.0";visibility:=reexport, org.fortiss.tooling.kernel.ui;bundle-version="2.23.0";visibility:=reexport, org.eclipse.swt, - org.fortiss.tooling.common.ui + org.fortiss.tooling.common.ui, + org.fortiss.tooling.ext.reuse Bundle-ActivationPolicy: lazy Bundle-RequiredExecutionEnvironment: JavaSE-11 Bundle-Vendor: fortiss GmbH 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 a55ceed42..ebe9cdc0b 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 @@ -16,6 +16,7 @@ package org.fortiss.tooling.base.ui.utils; import static org.fortiss.tooling.base.utils.LayoutModelElementFactory.createPoint; +import static org.fortiss.tooling.ext.reuse.utils.ReuseLibraryUtilsBasics.isCorrectReuseElement; import java.util.ArrayList; import java.util.List; @@ -70,6 +71,8 @@ public final class ContextMenuUtils { List<MenuItem> result = new ArrayList<>(); Menu newMenu = new Menu("New ..."); + Menu reuseMenu = new Menu("Reuse ..."); + List<Prototype> protos = pers.getComposablePrototypes(target.getClass()); for(Prototype p : protos) { EObject prototypeCopy = p.getPrototypeCopy(); @@ -79,18 +82,30 @@ public final class ContextMenuUtils { if((!onlyForEditedObject || isMenuForEditedObject || prototypeCopy instanceof IConnector) && ecs.canCompose(target, prototypeCopy, context)) { - MenuItem mi = new MenuItem(p.getName()); - mi.setOnAction(evt -> { + MenuItem menuItem = new MenuItem(p.getName()); + menuItem.setOnAction(evt -> { css.runAsCommand(target, () -> { ecs.compose(target, prototypeCopy, context); }); }); - newMenu.getItems().add(mi); + + if(isCorrectReuseElement(prototypeCopy)) { + // TODO 4323: add library name to item name + reuseMenu.getItems().add(menuItem); + } else { + newMenu.getItems().add(menuItem); + } + // TODO 4323: add priority system to prototypes (not only categories) and use it + // here to sort the newMenu list } } + if(!newMenu.getItems().isEmpty()) { result.add(newMenu); } + if(!reuseMenu.getItems().isEmpty()) { + result.add(reuseMenu); + } return result; } -- GitLab