diff options
author | bkuntz | 2019-07-09 14:59:27 +0000 |
---|---|---|
committer | bkuntz | 2019-07-09 14:59:27 +0000 |
commit | f4a1d1ec4aa2518852bc526464ff06793020ccab (patch) | |
tree | 8b5577366055d1647e294c6f9c8e12d901b2aaf6 | |
parent | 4d3e41285cbb7791705c7df40206bb1bc81506e8 (diff) | |
download | eclipse.platform.ui.tools-f4a1d1ec4aa2518852bc526464ff06793020ccab.tar.gz eclipse.platform.ui.tools-f4a1d1ec4aa2518852bc526464ff06793020ccab.tar.xz eclipse.platform.ui.tools-f4a1d1ec4aa2518852bc526464ff06793020ccab.zip |
Bug 539188 - E4 model editor - Allow multi deletion in the fragmentY20190812-0900Y20190808-0900Y20190805-0900Y20190801-0900Y20190730-0135Y20190730-0055Y20190729-0900Y20190725-0900Y20190722-0900Y20190718-0905Y20190718-0450Y20190715-2335Y20190715-0900Y20190711-2335Y20190711-0900S4_13_0_M1I20190812-1800I20190811-1800I20190810-1800I20190809-1800I20190808-1800I20190807-1800I20190806-1800I20190805-1800I20190804-1800I20190803-1800I20190802-1800I20190801-1800I20190801-0600I20190731-1800I20190730-1800I20190729-1800I20190728-1800I20190727-1800I20190726-1800I20190725-1800I20190724-1800I20190723-1800I20190722-1800I20190721-1800I20190720-1800I20190719-1800I20190718-1800I20190717-1800I20190716-1800I20190715-1800I20190714-1800I20190713-1800I20190713-1105I20190713-0230I20190712-1800I20190712-0625I20190711-1805I20190711-1120I20190711-0825I20190710-1800
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.java | 42 |
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); |