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 149898 Details for
Bug 174689
[Contributions] Commands not appearing in Customize Perspective dialog
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
Rough cut
Commands in CPD 01.txt (text/plain), 11.06 KB, created by
Prakash Rangaraj
on 2009-10-19 13:32:03 EDT
(
hide
)
Description:
Rough cut
Filename:
MIME Type:
Creator:
Prakash Rangaraj
Created:
2009-10-19 13:32:03 EDT
Size:
11.06 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.workbench >Index: Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java,v >retrieving revision 1.79 >diff -u -r1.79 CustomizePerspectiveDialog.java >--- Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java 7 May 2009 14:01:41 -0000 1.79 >+++ Eclipse UI/org/eclipse/ui/internal/dialogs/CustomizePerspectiveDialog.java 7 Oct 2009 11:14:29 -0000 >@@ -22,10 +22,11 @@ > import java.util.List; > import java.util.Map; > import java.util.Set; >- > import org.eclipse.core.commands.Command; > import org.eclipse.core.commands.ParameterizedCommand; >+import org.eclipse.core.expressions.ExpressionTagNames; > import org.eclipse.core.runtime.CoreException; >+import org.eclipse.core.runtime.IConfigurationElement; > import org.eclipse.jface.action.ActionContributionItem; > import org.eclipse.jface.action.ContributionManager; > import org.eclipse.jface.action.CoolBarManager; >@@ -112,6 +113,7 @@ > import org.eclipse.ui.IActionBars2; > import org.eclipse.ui.IPerspectiveDescriptor; > import org.eclipse.ui.IPerspectiveRegistry; >+import org.eclipse.ui.ISources; > import org.eclipse.ui.IWorkbenchCommandConstants; > import org.eclipse.ui.IWorkbenchWindow; > import org.eclipse.ui.PlatformUI; >@@ -143,6 +145,7 @@ > import org.eclipse.ui.internal.registry.ActionSetDescriptor; > import org.eclipse.ui.internal.registry.ActionSetRegistry; > import org.eclipse.ui.internal.registry.IActionSetDescriptor; >+import org.eclipse.ui.internal.registry.IWorkbenchRegistryConstants; > import org.eclipse.ui.internal.util.BundleUtility; > import org.eclipse.ui.internal.util.Util; > import org.eclipse.ui.keys.IBindingService; >@@ -559,6 +562,10 @@ > > wasChanged = true; > } >+ >+ public String getId() { >+ return descriptor.getId(); >+ } > } > > /** >@@ -2846,15 +2853,63 @@ > } > > private static String getActionSetID(IContributionItem item) { >+ String actionSetID = null; > if (item instanceof ActionSetContributionItem) { > ActionSetContributionItem asci = (ActionSetContributionItem) item; >- return asci.getActionSetId(); >- } >- if (item instanceof PluginActionCoolBarContributionItem) { >+ actionSetID = asci.getActionSetId(); >+ } else if (item instanceof PluginActionCoolBarContributionItem) { > PluginActionCoolBarContributionItem pacbci = (PluginActionCoolBarContributionItem) item; >- return pacbci.getActionSetId(); >+ actionSetID = pacbci.getActionSetId(); >+ } else if (item instanceof CommandContributionItem) { >+ CommandContributionItem commandContributionItem = (CommandContributionItem) item; >+ actionSetID = getActionSetID(commandContributionItem); >+ } else if (item instanceof ToolBarContributionItem2) { >+ actionSetID = ((ToolBarContributionItem2) item).getId(); >+ } >+ return actionSetID; >+ } >+ >+ private static String getActionSetID(CommandContributionItem item) { >+ >+ String actionSetID = null; >+ IConfigurationElement element = item.configurationElement; >+ if (element != null) { >+ IConfigurationElement[] visibleConfig = element.getChildren(IWorkbenchRegistryConstants.TAG_VISIBLE_WHEN); >+ if (visibleConfig.length > 0 && visibleConfig.length < 2) { >+ actionSetID = getActionSetID(visibleConfig[0]); >+ } else { >+ IConfigurationElement[] children = element.getChildren(); >+ for (int i = 0; i < children.length; i++) { >+ actionSetID = getActionSetID(children[i]); >+ if (actionSetID != null) >+ break; >+ } >+ } > } >- return null; >+ return actionSetID; >+ } >+ >+ private static String getActionSetID(IConfigurationElement element) { >+ >+ if(element == null || element.getChildren().length == 0) >+ return null; >+ String actionSetID = null; >+ IConfigurationElement[] withTag = element.getChildren(ExpressionTagNames.WITH); >+ outer: >+ for (int i = 0; i < withTag.length; i++) { >+ if (!ISources.ACTIVE_CONTEXT_NAME.equals(withTag[i].getAttribute("variable"))) //$NON-NLS-1$ >+ continue; >+ IConfigurationElement[] iterateTag = withTag[i].getChildren(ExpressionTagNames.ITERATE); >+ for (int j = 0; j < iterateTag.length; j++) { >+ IConfigurationElement[] equalsTag = iterateTag[j].getChildren(ExpressionTagNames.EQUALS); >+ for (int k = 0; k < equalsTag.length; k++) { >+ actionSetID = equalsTag[k].getAttribute("value"); //$NON-NLS-1$ >+ if (actionSetID != null) >+ break outer; >+ } >+ } >+ } >+ return actionSetID; > } > > /** >@@ -3022,8 +3077,8 @@ > } > > private DisplayItem createToolBarStructure(CoolBar coolbar) { >- DisplayItem root = new DisplayItem(null, null); // Create a >- // root >+ DisplayItem root = new DisplayItem(null, null); >+ // Create a root > createToolbarEntries(coolbar, root); > return root; > } >@@ -3052,23 +3107,25 @@ > if (items[i].getImage() == null) { > toolBarEntry.setImageDescriptor(toolbarImageDescriptor); > } >+ String actionSetId = getActionSetID(contributionItem); > toolBarEntry.setActionSet((ActionSet) idToActionSet >- .get(getActionSetID(contributionItem))); >- parent.addChild(toolBarEntry); >+ .get(actionSetId)); > > Control control = items[i].getControl(); > > if (control instanceof ToolBar) { > ToolItem[] toolitems = ((ToolBar) control).getItems(); >- createToolbarEntries(toolitems, toolBarEntry); >+ createToolbarEntries(toolitems, toolBarEntry, parent); > } > >- entries.add(toolBarEntry); >+ if (toolBarEntry.getChildren().size() != 0) { >+ entries.add(toolBarEntry); >+ parent.addChild(toolBarEntry); >+ } > } > } > >- private void createToolbarEntries(ToolItem[] toolitems, >- DisplayItem parent) { >+ private void createToolbarEntries(ToolItem[] toolitems, DisplayItem parent, DisplayItem root) { > if (toolitems == null) > return; > >@@ -3082,12 +3139,36 @@ > toolBarEntry.setImageDescriptor(ImageDescriptor > .createFromImage(image)); > } >- toolBarEntry.setActionSet((ActionSet) idToActionSet >- .get(getActionSetID(contributionItem))); > contributionItem.setVisible(true);// force parents to update > toolBarEntry.setCheckState(getToolbarItemIsVisible(toolBarEntry)); >- parent.addChild(toolBarEntry); >+ >+ String actionSetID = getActionSetID(contributionItem); >+ toolBarEntry.setActionSet((ActionSet) idToActionSet.get(actionSetID)); >+ ActionSet parentActionSet = parent.getActionSet(); >+ if (actionSetID != null && parentActionSet != null && parent.getActionSet().getId().equals(actionSetID)) { >+ parent.addChild(toolBarEntry); >+ } else { >+ DisplayItem displayItem = findDisplayItem(root, actionSetID); >+ if (displayItem != null) >+ displayItem.addChild(toolBarEntry); >+ else >+ parent.addChild(toolBarEntry); >+ >+ } >+ } >+ } >+ >+ public DisplayItem findDisplayItem(DisplayItem parent, String actionSetId) { >+ >+ DisplayItem actionSetItem = null; >+ for (Iterator i = parent.getChildren().iterator(); i.hasNext();) { >+ DisplayItem item = (DisplayItem) i.next(); >+ if (item.getActionSet() != null && item.getActionSet().getId().equals(actionSetId)) { >+ actionSetItem = item; >+ break; >+ } > } >+ return actionSetItem; > } > > /** >Index: Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java,v >retrieving revision 1.53 >diff -u -r1.53 MenuAdditionCacheEntry.java >--- Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java 24 Nov 2008 18:43:07 -0000 1.53 >+++ Eclipse UI/org/eclipse/ui/internal/menus/MenuAdditionCacheEntry.java 7 Oct 2009 11:14:29 -0000 >@@ -18,7 +18,6 @@ > import java.util.List; > import java.util.Map; > import java.util.Set; >- > import org.eclipse.core.expressions.Expression; > import org.eclipse.core.expressions.ExpressionConverter; > import org.eclipse.core.runtime.CoreException; >@@ -325,6 +324,7 @@ > getTooltip(commandAddition), getStyle(commandAddition), > getHelpContextId(commandAddition), > getVisibleEnabled(commandAddition)); >+ parm.configurationElement = commandAddition; > if (inToolbar()) { > parm.iconStyle = ICommandImageService.IMAGE_STYLE_TOOLBAR; > } >Index: Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java,v >retrieving revision 1.55 >diff -u -r1.55 CommandContributionItem.java >--- Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java 25 May 2009 20:52:16 -0000 1.55 >+++ Eclipse UI/org/eclipse/ui/menus/CommandContributionItem.java 7 Oct 2009 11:14:29 -0000 >@@ -11,7 +11,6 @@ > package org.eclipse.ui.menus; > > import java.util.Map; >- > import org.eclipse.core.commands.Command; > import org.eclipse.core.commands.CommandEvent; > import org.eclipse.core.commands.ExecutionException; >@@ -20,6 +19,7 @@ > import org.eclipse.core.commands.NotHandledException; > import org.eclipse.core.commands.ParameterizedCommand; > import org.eclipse.core.commands.common.NotDefinedException; >+import org.eclipse.core.runtime.IConfigurationElement; > import org.eclipse.core.runtime.IStatus; > import org.eclipse.core.runtime.Status; > import org.eclipse.jface.action.ContributionItem; >@@ -160,10 +160,15 @@ > private Display display; > > /** >+ * @since 3.6 >+ */ >+ public IConfigurationElement configurationElement; >+ >+ /** > * Create a CommandContributionItem to place in a ContributionManager. > * > * @param contributionParameters >- * parameters necessary to render this contribution item. >+ * parameters necessary to render this contribution item. > * @since 3.4 > */ > public CommandContributionItem( >@@ -180,6 +185,7 @@ > this.helpContextId = contributionParameters.helpContextId; > this.visibleEnabled = contributionParameters.visibleEnabled; > this.mode = contributionParameters.mode; >+ this.configurationElement = contributionParameters.configurationElement; > > menuService = (IMenuService) contributionParameters.serviceLocator > .getService(IMenuService.class); >Index: Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java,v >retrieving revision 1.6 >diff -u -r1.6 CommandContributionItemParameter.java >--- Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java 1 Dec 2008 19:12:35 -0000 1.6 >+++ Eclipse UI/org/eclipse/ui/menus/CommandContributionItemParameter.java 7 Oct 2009 11:14:29 -0000 >@@ -12,7 +12,7 @@ > package org.eclipse.ui.menus; > > import java.util.Map; >- >+import org.eclipse.core.runtime.IConfigurationElement; > import org.eclipse.jface.resource.ImageDescriptor; > import org.eclipse.ui.IWorkbenchPartSite; > import org.eclipse.ui.IWorkbenchWindow; >@@ -115,6 +115,11 @@ > public int mode; > > /** >+ * @since 3.6 >+ */ >+ public IConfigurationElement configurationElement; >+ >+ /** > * Create the parameter object. Nullable attributes can be set directly. > * > * @param serviceLocator
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 174689
: 149898