Bug 351851 - [Compatibility] we need to fix up 122 errors in our
org.eclipse.ui.tests bundle
org.eclipse.ui.tests.dynamicplugins fix
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java
index 0152502..2ae7748 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/ContributionRecord.java
@@ -12,6 +12,7 @@
package org.eclipse.e4.ui.workbench.renderers.swt;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import org.eclipse.core.expressions.ExpressionInfo;
@@ -47,6 +48,28 @@
return renderer.getManager(menuModel);
}
+ public MMenuContribution getMenuContribution() {
+ return menuContribution;
+ }
+
+ /**
+ * Access to analyze for tests. For Looking, not touching!
+ *
+ * @return the shared elements collection
+ */
+ public Collection<MMenuElement> getSharedElements() {
+ return sharedElements;
+ }
+
+ /**
+ * Access to analyze for tests. For Looking, not touching!
+ *
+ * @return the generated elements collection
+ */
+ public Collection<MMenuElement> getGeneratedElements() {
+ return generatedElements;
+ }
+
/**
* @param context
*/
diff --git a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java
index 61eb80b..4a1c912 100644
--- a/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java
+++ b/bundles/org.eclipse.e4.ui.workbench.renderers.swt/src/org/eclipse/e4/ui/workbench/renderers/swt/MenuManagerRenderer.java
@@ -734,6 +734,17 @@
}
/**
+ * Search the records for testing. Look, but don't touch!
+ *
+ * @return the array of active ContributionRecords.
+ */
+ public ContributionRecord[] getContributionRecords() {
+ HashSet<ContributionRecord> records = new HashSet<ContributionRecord>(
+ modelContributionToRecord.values());
+ return records.toArray(new ContributionRecord[records.size()]);
+ }
+
+ /**
* @param menuManager
* @param menuModel
*/
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/ActionSetTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/ActionSetTests.java
index 4e171cc..99d90b3 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/ActionSetTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/ActionSetTests.java
@@ -12,17 +12,20 @@
import java.lang.ref.ReferenceQueue;
import java.lang.ref.WeakReference;
+import java.util.Collection;
import org.eclipse.core.runtime.IRegistryChangeListener;
-
+import org.eclipse.e4.ui.internal.workbench.swt.AbstractPartRenderer;
+import org.eclipse.e4.ui.model.application.ui.basic.MWindow;
+import org.eclipse.e4.ui.model.application.ui.menu.MMenuElement;
+import org.eclipse.e4.ui.workbench.renderers.swt.ContributionRecord;
+import org.eclipse.e4.ui.workbench.renderers.swt.MenuManagerRenderer;
+import org.eclipse.e4.ui.workbench.swt.factories.IRendererFactory;
import org.eclipse.jface.action.IAction;
-
-import org.eclipse.ui.internal.PluginActionSet;
import org.eclipse.ui.internal.WWinPluginAction;
import org.eclipse.ui.internal.WorkbenchPlugin;
import org.eclipse.ui.internal.WorkbenchWindow;
import org.eclipse.ui.internal.registry.ActionSetRegistry;
-import org.eclipse.ui.internal.registry.IActionSet;
import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
import org.eclipse.ui.tests.leaks.LeakTests;
@@ -81,24 +84,50 @@
}
private void findInPresentation(WorkbenchWindow window,
- WWinPluginAction[] action, boolean[] found) {
- IActionSet[] sets = window.getActionPresentation().getActionSets();
+ WWinPluginAction[] action, boolean[] found) {
+ IRendererFactory factory = (IRendererFactory) window
+ .getService(IRendererFactory.class);
+ MWindow mwindow = window.getModel();
+ AbstractPartRenderer obj = factory.getRenderer(mwindow.getMainMenu(),
+ null);
+ if (!(obj instanceof MenuManagerRenderer)) {
+ return;
+ }
- for (int i = 0; i < sets.length; i++) {
- if (((PluginActionSet) sets[i]).getDesc().getId().equals(
- "org.eclipse.newActionSet1.newActionSet2")) {
- found[0] = true;
- IAction[] pluginActions = ((PluginActionSet) sets[i])
- .getPluginActions();
- for (int j = 0; j < pluginActions.length; j++) {
- if (pluginActions[j].getId().equals(
- "org.eclipse.ui.tests.action1"))
- action[0] = (WWinPluginAction) pluginActions[j];
- }
- break;
- }
- }
- }
+ ContributionRecord[] records = ((MenuManagerRenderer) obj)
+ .getContributionRecords();
+ for (int i = 0; i < records.length; i++) {
+ ContributionRecord rec = records[i];
+ String id = rec.getMenuContribution().getElementId();
+ if (id != null
+ && id.startsWith("org.eclipse.newActionSet1.newActionSet2")) {
+ found[0] = true;
+ Collection<MMenuElement> elements = rec.getGeneratedElements();
+ for (MMenuElement element : elements) {
+ if ("org.eclipse.ui.tests.action1".equals(element
+ .getElementId())) {
+ // FIXME return the plugin action
+ action[0] = new WWinPluginAction(null, window,
+ element.getElementId(), IAction.AS_PUSH_BUTTON);
+ }
+ }
+ }
+ }
+// for (int i = 0; i < sets.length; i++) {
+// if (((PluginActionSet) sets[i]).getDesc().getId()
+// .equals("org.eclipse.newActionSet1.newActionSet2")) {
+// found[0] = true;
+// IAction[] pluginActions = ((PluginActionSet) sets[i])
+// .getPluginActions();
+// for (int j = 0; j < pluginActions.length; j++) {
+// if (pluginActions[j].getId().equals(
+// "org.eclipse.ui.tests.action1"))
+// action[0] = (WWinPluginAction) pluginActions[j];
+// }
+// break;
+// }
+// }
+ }
/**
* @return
diff --git a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/PerspectiveTests.java b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/PerspectiveTests.java
index 5c0f90f..52c0816 100644
--- a/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/PerspectiveTests.java
+++ b/tests/org.eclipse.ui.tests/Eclipse UI Tests/org/eclipse/ui/tests/dynamicplugins/PerspectiveTests.java
@@ -10,12 +10,14 @@
*******************************************************************************/
package org.eclipse.ui.tests.dynamicplugins;
+import org.eclipse.e4.ui.model.application.ui.advanced.MPerspective;
+import org.eclipse.e4.ui.workbench.modeling.EModelService;
import org.eclipse.ui.IPerspectiveDescriptor;
import org.eclipse.ui.IPerspectiveRegistry;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.PlatformUI;
import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.internal.WorkbenchPage;
+import org.eclipse.ui.internal.WorkbenchWindow;
import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants;
/**
@@ -64,8 +66,10 @@
window.getActivePage().setPerspective(desc);
removeBundle();
- assertNull(((WorkbenchPage) window.getActivePage())
- .findPerspective(desc));
+ MPerspective persp = findPerspective(window, desc.getId());
+ assertNull(persp);
+
+
assertFalse(window.getActivePage().getPerspective().getId().equals(
desc.getId()));
assertEquals(IDE.RESOURCE_PERSPECTIVE_ID, window.getActivePage()
@@ -89,14 +93,21 @@
reg.findPerspectiveWithId(IDE.RESOURCE_PERSPECTIVE_ID));
removeBundle();
- assertNull(((WorkbenchPage) window.getActivePage())
- .findPerspective(desc));
+ MPerspective persp = findPerspective(window, PERSPECTIVE_ID);
+ assertNull(persp);
- assertFalse(window.getActivePage().getPerspective().getId().equals(
- PERSPECTIVE_ID));
+ assertFalse(window.getActivePage().getPerspective().getId()
+ .equals(PERSPECTIVE_ID));
assertEquals(IDE.RESOURCE_PERSPECTIVE_ID, window.getActivePage()
.getPerspective().getId());
}
+
+ private MPerspective findPerspective(IWorkbenchWindow window, String id) {
+ EModelService modelService = (EModelService) window
+ .getService(EModelService.class);
+ return (MPerspective) modelService.find(id,
+ ((WorkbenchWindow) window).getModel());
+ }
/*
* (non-Javadoc)