Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 146691 Details for
Bug 15670
[Contributions] interactions: Improve support for plug-ins contributing to other plug-ins' menus
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
sketch of a patch
bug_15670-patch1.txt (text/plain), 4.37 KB, created by
Stephan Herrmann
on 2009-09-08 15:14:31 EDT
(
hide
)
Description:
sketch of a patch
Filename:
MIME Type:
Creator:
Stephan Herrmann
Created:
2009-09-08 15:14:31 EDT
Size:
4.37 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.workbench >Index: Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java,v >retrieving revision 1.37 >diff -u -r1.37 PluginActionSetBuilder.java >--- Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java 24 Aug 2009 19:24:10 -0000 1.37 >+++ Eclipse UI/org/eclipse/ui/internal/PluginActionSetBuilder.java 8 Sep 2009 19:06:24 -0000 >@@ -12,8 +12,10 @@ > > import java.util.ArrayList; > import java.util.Iterator; >- >+import java.util.List; > import org.eclipse.core.runtime.IConfigurationElement; >+import org.eclipse.core.runtime.IStatus; >+import org.eclipse.core.runtime.Status; > import org.eclipse.core.runtime.dynamichelpers.IExtensionTracker; > import org.eclipse.jface.action.AbstractGroupMarker; > import org.eclipse.jface.action.ActionContributionItem; >@@ -224,12 +226,24 @@ > // pass the adjunct contributions will be processed. > PluginActionSetBuilder[] builders = new PluginActionSetBuilder[pluginActionSets > .size()]; >+ resetPendingWirings(new ArrayList()); > for (int i = 0; i < pluginActionSets.size(); i++) { > PluginActionSet set = (PluginActionSet) pluginActionSets.get(i); > PluginActionSetBuilder builder = new PluginActionSetBuilder(); > builder.readActionExtensions(set, window); > builders[i] = builder; > } >+ List pendingWirings = resetPendingWirings(null); >+ int size; >+ while ((size = pendingWirings.size()) > 0) { >+ ((Runnable) pendingWirings.get(0)).run(); >+ if (pendingWirings.size() == size) { >+ WorkbenchPlugin.log(new Status(IStatus.ERROR, >+ WorkbenchPlugin.PI_WORKBENCH, >+ "Unmet dependencies among menu actions")); //$NON-NLS-1$ >+ break; >+ } >+ } > for (int i = 0; i < builders.length; i++) { > PluginActionSetBuilder builder = builders[i]; > builder.processAdjunctContributions(); >Index: Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java,v >retrieving revision 1.29 >diff -u -r1.29 PluginActionBuilder.java >--- Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java 6 Oct 2008 17:49:14 -0000 1.29 >+++ Eclipse UI/org/eclipse/ui/internal/PluginActionBuilder.java 8 Sep 2009 19:06:23 -0000 >@@ -12,7 +12,7 @@ > package org.eclipse.ui.internal; > > import java.util.ArrayList; >- >+import java.util.List; > import org.eclipse.core.runtime.IConfigurationElement; > import org.eclipse.core.runtime.Platform; > import org.eclipse.jface.action.AbstractGroupMarker; >@@ -345,8 +345,8 @@ > /** > * Contributes action from action descriptor into the provided menu manager. > */ >- protected void contributeMenuAction(ActionDescriptor ad, >- IMenuManager menu, boolean appendIfMissing) { >+ protected void contributeMenuAction(final ActionDescriptor ad, >+ final IMenuManager menu, final boolean appendIfMissing) { > // Get config data. > String mpath = ad.getMenuPath(); > String mgroup = ad.getMenuGroup(); >@@ -358,7 +358,15 @@ > if (mpath != null) { > parent = parent.findMenuUsingPath(mpath); > if (parent == null) { >- ideLog("Plug-in '" + ad.getPluginId() + "' contributed an invalid Menu Extension (Path: '" + mpath + "' is invalid): " + ad.getId()); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ >+ if (pendingWirings != null) { >+ final List currentList = pendingWirings; >+ pendingWirings.add(new Runnable() { >+ public void run() { >+ contributeMenuAction(ad, menu, appendIfMissing); >+ currentList.remove(this); >+ } >+ }); >+ } > return; > } > } >@@ -523,6 +531,20 @@ > } > } > >+ static List/* <Runnable */pendingWirings; >+ >+ /* >+ * (non-Javadoc) >+ * >+ * @see org.eclipse.jface.action.IMenuManager#resetPendingWirings(java.util >+ * .List) >+ */ >+ public static List resetPendingWirings(List newList) { >+ List old = pendingWirings; >+ pendingWirings = newList; >+ return old; >+ } >+ > private static boolean allowIdeLogging = false; > > /**
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 15670
:
75898
| 146691 |
146695