Bug 431807 - [Model] EModelService.findElements only retrieve specifics
model elements
Add addons
Change-Id: I055b4b98e3cd43ea7629725de14cabd168113881
Signed-off-by: Louis-Michel Mathurin <mathurin.lm@gmail.com>
diff --git a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
index a97372c..9d7daea 100644
--- a/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
+++ b/bundles/org.eclipse.e4.ui.workbench/src/org/eclipse/e4/ui/internal/workbench/ModelServiceImpl.java
@@ -21,6 +21,7 @@
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.core.services.events.IEventBroker;
import org.eclipse.e4.core.services.log.Logger;
+import org.eclipse.e4.ui.model.application.MAddon;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationElement;
import org.eclipse.e4.ui.model.application.commands.MBindingContext;
@@ -169,6 +170,8 @@
children.addAll(app.getBindingContexts());
} else if (clazz.equals(MBindingTable.class) || clazz.equals(MKeyBinding.class)) {
children.addAll(app.getBindingTables());
+ } else if (clazz.equals(MAddon.class)) {
+ children.addAll(app.getAddons());
}
// } else { only look for these if specifically asked.
// children.addAll(app.getHandlers());
diff --git a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServiceFindTest.java b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServiceFindTest.java
index 17697e3..394128f 100644
--- a/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServiceFindTest.java
+++ b/tests/org.eclipse.e4.ui.tests/src/org/eclipse/e4/ui/tests/application/EModelServiceFindTest.java
@@ -21,8 +21,10 @@
import java.util.List;
import org.eclipse.e4.core.contexts.IEclipseContext;
import org.eclipse.e4.ui.internal.workbench.swt.E4Application;
+import org.eclipse.e4.ui.model.application.MAddon;
import org.eclipse.e4.ui.model.application.MApplication;
import org.eclipse.e4.ui.model.application.MApplicationElement;
+import org.eclipse.e4.ui.model.application.MApplicationFactory;
import org.eclipse.e4.ui.model.application.commands.MBindingTable;
import org.eclipse.e4.ui.model.application.commands.MHandler;
import org.eclipse.e4.ui.model.application.commands.MKeyBinding;
@@ -377,6 +379,29 @@
}
@Test
+ public void testFindAddons() {
+ MApplication application = createApplication();
+ EModelService modelService = (EModelService) application.getContext()
+ .get(EModelService.class.getName());
+ assertNotNull(modelService);
+
+ MAddon addon = MApplicationFactory.INSTANCE.createAddon();
+
+ application.getAddons().add(addon);
+
+ List<MAddon> elements = modelService.findElements(application,
+ MAddon.class, EModelService.ANYWHERE, new Selector() {
+ @Override
+ public boolean select(MApplicationElement element) {
+ return (element instanceof MAddon);
+ }
+ });
+
+ assertEquals(1, elements.size());
+ assertEquals(addon, elements.get(0));
+ }
+
+ @Test
public void testBug314685() {
MApplication application = createApplication();
application.setContext(applicationContext);