Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbkuntz2019-07-09 14:59:27 +0000
committerbkuntz2019-07-09 14:59:27 +0000
commitf4a1d1ec4aa2518852bc526464ff06793020ccab (patch)
tree8b5577366055d1647e294c6f9c8e12d901b2aaf6
parent4d3e41285cbb7791705c7df40206bb1bc81506e8 (diff)
downloadeclipse.platform.ui.tools-f4a1d1ec4aa2518852bc526464ff06793020ccab.tar.gz
eclipse.platform.ui.tools-f4a1d1ec4aa2518852bc526464ff06793020ccab.tar.xz
eclipse.platform.ui.tools-f4a1d1ec4aa2518852bc526464ff06793020ccab.zip
editor URL: https://bugs.eclipse.org/bugs/show_bug.cgi?id=539188 Add delete menu entry when >1 item selected Change-Id: I4af57e3245815c1f054bbc5f826711af759b5821 Signed-off-by: bkuntz <benedikt.kuntz@airbus.com>
-rw-r--r--bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java42
1 files changed, 27 insertions, 15 deletions
diff --git a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
index 35fab8f4..cb625426 100644
--- a/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
+++ b/bundles/org.eclipse.e4.tools.emf.ui/src/org/eclipse/e4/tools/emf/ui/internal/common/ModelEditor.java
@@ -28,6 +28,7 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
@@ -627,6 +628,7 @@ public class ModelEditor implements IGotoObject {
final int noSelected = listOfSelections.size();
boolean addSeparator = false;
+ // single selection
if (!s.isEmpty() && noSelected == 1) {
List<Action> actions;
if (s.getFirstElement() instanceof VirtualEntry) {
@@ -694,23 +696,32 @@ public class ModelEditor implements IGotoObject {
manager.add(menu2);
}
- if (o.eContainer() != null) {
- addSeparator = true;
- manager.add(new Action(messages.ModelEditor_Delete, ImageDescriptor
- .createFromImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Obj16_cross))) {
- @Override
- public void run() {
- final Command cmd = DeleteCommand.create(modelProvider.getEditingDomain(), o);
- if (cmd.canExecute()) {
- modelProvider.getEditingDomain().getCommandStack().execute(cmd);
- }
- }
- });
- }
}
}
- // multi selection
+
+ // single & multi selection
if (noSelected > 0) {
+
+ // add delete entry if there are no virtual entries in selection all selected
+ // elements have a container
+ if (listOfSelections.stream().noneMatch(VirtualEntry.class::isInstance)
+ && listOfSelections.stream().filter(EObject.class::isInstance).map(EObject.class::cast)
+ .map(EObject::eContainer).allMatch(Objects::nonNull)) {
+ addSeparator = true;
+ manager.add(new Action(messages.ModelEditor_Delete, ImageDescriptor
+ .createFromImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_Obj16_cross))) {
+ @Override
+ public void run() {
+ final CompoundCommand cmd = new CompoundCommand();
+ EditingDomain editingDomain = modelProvider.getEditingDomain();
+ listOfSelections.forEach(o -> cmd.append(DeleteCommand.create(editingDomain, o)));
+ if (cmd.canExecute() && !cmd.isEmpty()) {
+ editingDomain.getCommandStack().execute(cmd);
+ }
+ }
+ });
+ }
+
if (!isModelFragment() && modelExtractor != null) {
manager.add(new Action(messages.ModelEditor_ExtractFragment, ImageDescriptor
.createFromImage(resourcePool.getImageUnchecked(ResourceProvider.IMG_ModelFragments))) {
@@ -763,6 +774,7 @@ public class ModelEditor implements IGotoObject {
});
}
+
}
final IExtensionRegistry registry = RegistryFactory.getRegistry();
@@ -2070,7 +2082,7 @@ public class ModelEditor implements IGotoObject {
case TAB_FORM:
// make sure tree node has been instantiated
final ObservableListTreeContentProvider<?> provider = (ObservableListTreeContentProvider<?>) viewer
- .getContentProvider();
+ .getContentProvider();
getFirstMatchingItem(object, provider, provider.getChildren(viewer.getInput()));
viewer.reveal(object);

Back to the top