Skip to content
Snippets Groups Projects
Commit 9b7dccb4 authored by Sebastian Bergemann's avatar Sebastian Bergemann
Browse files

Split reuse elements into separate menu (within editor context menu)

Issue-Ref: 4323
Issue-Url: af3#4323



Signed-off-by: default avatarSebastian Bergemann <bergemann@fortiss.org>
parent 6d252361
No related branches found
No related tags found
1 merge request!208Fix bad display of element choices in the in-editor context menu
......@@ -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
......
......@@ -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;
}
......
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