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 54365 Details for
Bug 162006
[QuickAccess] Make Ctrl-3 extensible
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
[patch]
persistance and extension patch
CtrlEAction_20061122.txt (text/plain), 66.43 KB, created by
Aaron Ferguson
on 2006-11-22 15:08:28 EST
(
hide
)
Description:
persistance and extension patch
Filename:
MIME Type:
Creator:
Aaron Ferguson
Created:
2006-11-22 15:08:28 EST
Size:
66.43 KB
patch
obsolete
>### Eclipse Workspace Patch 1.0 >#P org.eclipse.ui.workbench >Index: Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java >=================================================================== >RCS file: /cvsroot/eclipse/org.eclipse.ui.workbench/Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java,v >retrieving revision 1.11 >diff -u -r1.11 CtrlEAction.java >--- Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java 15 Nov 2006 17:18:40 -0000 1.11 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/CtrlEAction.java 22 Nov 2006 19:59:32 -0000 >@@ -1,41 +1,16 @@ > package org.eclipse.ui.internal.incubator; > >-import java.util.ArrayList; >-import java.util.Arrays; > import java.util.HashMap; >-import java.util.HashSet; > import java.util.LinkedList; >-import java.util.List; > import java.util.Map; >-import java.util.Set; >-import java.util.SortedSet; >-import java.util.TreeSet; > > import org.eclipse.core.commands.AbstractHandler; >-import org.eclipse.core.commands.Command; > import org.eclipse.core.commands.ExecutionEvent; >-import org.eclipse.core.commands.ExecutionException; >-import org.eclipse.core.commands.NotEnabledException; >-import org.eclipse.core.commands.NotHandledException; >-import org.eclipse.core.commands.ParameterizedCommand; >-import org.eclipse.core.commands.common.NotDefinedException; >-import org.eclipse.jface.action.ActionContributionItem; >-import org.eclipse.jface.action.IAction; >-import org.eclipse.jface.action.IContributionItem; >-import org.eclipse.jface.action.LegacyActionTools; >-import org.eclipse.jface.action.MenuManager; >-import org.eclipse.jface.action.SubContributionItem; >-import org.eclipse.jface.bindings.Binding; > import org.eclipse.jface.dialogs.IDialogSettings; >-import org.eclipse.jface.preference.IPreferenceNode; >-import org.eclipse.jface.preference.IPreferencePage; >-import org.eclipse.jface.preference.PreferenceManager; >-import org.eclipse.jface.preference.PreferenceNode; > import org.eclipse.jface.resource.DeviceResourceException; > import org.eclipse.jface.resource.ImageDescriptor; > import org.eclipse.jface.resource.JFaceResources; > import org.eclipse.jface.resource.LocalResourceManager; >-import org.eclipse.jface.viewers.ILabelProvider; > import org.eclipse.jface.viewers.ITreeContentProvider; > import org.eclipse.jface.viewers.LabelProvider; > import org.eclipse.jface.viewers.StructuredSelection; >@@ -51,26 +26,13 @@ > import org.eclipse.swt.widgets.Shell; > import org.eclipse.swt.widgets.Tree; > import org.eclipse.swt.widgets.TreeItem; >-import org.eclipse.ui.IEditorReference; >-import org.eclipse.ui.IPerspectiveDescriptor; > import org.eclipse.ui.IWorkbenchPage; >-import org.eclipse.ui.IWorkbenchPart; > import org.eclipse.ui.IWorkbenchWindow; >-import org.eclipse.ui.PartInitException; > import org.eclipse.ui.PlatformUI; >-import org.eclipse.ui.handlers.IHandlerService; > import org.eclipse.ui.internal.IWorkbenchGraphicConstants; > import org.eclipse.ui.internal.WorkbenchImages; > import org.eclipse.ui.internal.WorkbenchPlugin; >-import org.eclipse.ui.internal.WorkbenchWindow; >-import org.eclipse.ui.internal.actions.NewWizardShortcutAction; >-import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog; >-import org.eclipse.ui.internal.keys.BindingService; > import org.eclipse.ui.internal.progress.ProgressManagerUtil; >-import org.eclipse.ui.keys.IBindingService; >-import org.eclipse.ui.views.IViewDescriptor; >-import org.eclipse.ui.wizards.IWizardCategory; >-import org.eclipse.ui.wizards.IWizardDescriptor; > > /** > * Experimental Action for search-based navigation to UI elements such as >@@ -79,13 +41,13 @@ > */ > public class CtrlEAction extends AbstractHandler { > >- private static final String DIRTY_MARK = "*"; //$NON-NLS-1$ >- > private IWorkbenchWindow window; > > protected String rememberedText; >- >+ > protected Map previousPicksMap = new HashMap(); >+ >+ protected Map reverseMap = new HashMap(); > > private LinkedList previousPicksList = new LinkedList(); > >@@ -98,23 +60,19 @@ > public Object execute(ExecutionEvent executionEvent) { > // need to get commands here because opening the popup changes which > // commands are "handled" >- BindingService bindingService = (BindingService) PlatformUI >- .getWorkbench().getService(IBindingService.class); >- Binding[] bindings = bindingService.getBindings(); >- SortedSet commands = new TreeSet(); >- for (int i = 0; i < bindings.length; i++) { >- Binding binding = bindings[i]; >- ParameterizedCommand command = binding.getParameterizedCommand(); >- if (command != null && command.getCommand().isHandled()) { >- commands.add(command); >- } >- } >+ >+ AbstractProvider[] providers = { new PreviousPicksProvider(), >+ new EditorProvider(), new ViewProvider(), >+ new PerspectiveProvider(), new CommandProvider(), >+ new ActionProvider(), new WizardProvider(), >+ new PreferenceProvider() }; > > window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); > if (window == null) { > return null; > } >- FilteringInfoPopup popup = new MyInfoPopup(ProgressManagerUtil.getDefaultParent(), commands); >+ FilteringInfoPopup popup = new MyInfoPopup(ProgressManagerUtil >+ .getDefaultParent(), providers); > popup.setInput(new Object()); > TreeItem[] rootItems = ((Tree) popup.getTreeViewer().getControl()) > .getItems(); >@@ -128,10 +86,10 @@ > private final static class QuickAccessTreeSorter extends > TreePathViewerSorter { > public int compare(Viewer viewer, Object e1, Object e2) { >- ILabelProvider labelProvider = (ILabelProvider) ((TreeViewer) viewer) >- .getLabelProvider(); >- String name1 = stripDirtyIndicator(labelProvider.getText(e1)); >- String name2 = stripDirtyIndicator(labelProvider.getText(e2)); >+ AbstractElement element1 = (AbstractElement) e1; >+ AbstractElement element2 = (AbstractElement) e2; >+ String name1 = element1.getSortLabel(); >+ String name2 = element2.getSortLabel(); > return getComparator().compare(name1, name2); > } > >@@ -140,10 +98,9 @@ > return; > } > Object parent = parentPath.getLastSegment(); >- if (parent instanceof Node) { >- Node node = (Node) parent; >- // TODO replace with a proper check >- if (node.name.equals(IncubatorMessages.CtrlEAction_Previous)) { >+ if (parent instanceof AbstractProvider) { >+ AbstractProvider provider = (AbstractProvider) parent; >+ if (provider instanceof PreviousPicksProvider) { > return; > } > } >@@ -156,18 +113,20 @@ > * > */ > private final class MyInfoPopup extends FilteringInfoPopup { >- private SortedSet commands; > >+ AbstractProvider[] providers; >+ > /** > * @param shell >- * @param commands >+ * @param providers > */ >- public MyInfoPopup(Shell shell, SortedSet commands) { >+ public MyInfoPopup(Shell shell, AbstractProvider[] providers) { > super(shell, SWT.RESIZE, SWT.H_SCROLL | SWT.V_SCROLL | SWT.SINGLE, > false); >- MyInfoPopup.this.commands = commands; >- getTreeViewer().setContentProvider( >- new MyContentProvider(MyInfoPopup.this.commands)); >+ this.providers = providers; >+ restoreDialog(); >+ getTreeViewer() >+ .setContentProvider(new MyContentProvider(providers)); > } > > protected TreeViewer createTreeViewer(Composite parent, int style) { >@@ -176,7 +135,7 @@ > viewer.setComparator(new QuickAccessTreeSorter()); > return viewer; > } >- >+ > protected void selectFirstMatch() { > String text = getFilterText().getText(); > Object element = previousPicksMap.get(text); >@@ -187,10 +146,16 @@ > } > super.selectFirstMatch(); > } >- >+ > protected String getMatchName(Object element) { >- String name = ((ILabelProvider) getTreeViewer().getLabelProvider()).getText(element); >- return stripDirtyIndicator(name); >+ if (element instanceof AbstractProvider) { >+ AbstractProvider provider = (AbstractProvider) element; >+ return provider.getName(); >+ } else if (element instanceof AbstractElement) { >+ AbstractElement abstractElement = (AbstractElement) element; >+ return abstractElement.getSortLabel(); >+ } >+ return ""; //$NON-NLS-1$ > } > > protected Point getInitialSize() { >@@ -232,66 +197,56 @@ > return super.close(); > } > >+ private void storeDialog(IDialogSettings dialogSettings) { >+ String[] idArray = new String[previousPicksList.size()]; >+ String[] textArray = new String[previousPicksList.size()]; >+ for(int i = 0; i < idArray.length; i++) { >+ Object element = previousPicksList.get(i); >+ if(element instanceof AbstractElement) { >+ AbstractElement abstractElement = (AbstractElement) element; >+ idArray[i] = abstractElement.getId(); >+ textArray[i] = (String) reverseMap.get(element); >+ } >+ } >+ dialogSettings.put("idArray", idArray); //$NON-NLS-1$ >+ dialogSettings.put("textArray", textArray); //$NON-NLS-1$ >+ } >+ > protected void handleElementSelected(Object selectedElement) { > addPreviousPick(selectedElement); >+ storeDialog(getDialogSettings()); > IWorkbenchPage activePage = window.getActivePage(); > if (activePage != null) { >- if (selectedElement instanceof IViewDescriptor) { >- IViewDescriptor viewDescriptor = (IViewDescriptor) selectedElement; >- try { >- activePage.showView(viewDescriptor.getId()); >- return; >- } catch (PartInitException e) { >- } >- } >- if (selectedElement instanceof IPerspectiveDescriptor) { >- IPerspectiveDescriptor perspectiveDescriptor = (IPerspectiveDescriptor) selectedElement; >- activePage.setPerspective(perspectiveDescriptor); >- } >- if (selectedElement instanceof IEditorReference) { >- IEditorReference editorReference = (IEditorReference) selectedElement; >- IWorkbenchPart part = editorReference.getPart(true); >- if (part != null) { >- activePage.activate(part); >- } >- return; >+ if (selectedElement instanceof AbstractElement) { >+ AbstractElement element = (AbstractElement) selectedElement; >+ element.execute(); > } >- if (selectedElement instanceof PreferenceNode) { >- PreferenceNode preferenceNode = (PreferenceNode) selectedElement; >- WorkbenchPreferenceDialog dialog = WorkbenchPreferenceDialog >- .createDialogOn(window.getShell(), preferenceNode >- .getId()); >- dialog.open(); >- return; >- } >- if (selectedElement instanceof IWizardDescriptor) { >- IWizardDescriptor wizardDescriptor = (IWizardDescriptor) selectedElement; >- NewWizardShortcutAction wizardAction = new NewWizardShortcutAction( >- window, wizardDescriptor); >- wizardAction.run(); >- return; >- } >- if (selectedElement instanceof ParameterizedCommand) { >- IHandlerService handlerService = (IHandlerService) window >- .getWorkbench().getService(IHandlerService.class); >- ParameterizedCommand command = (ParameterizedCommand) selectedElement; >- try { >- handlerService.executeCommand(command, null); >- } catch (ExecutionException e) { >- e.printStackTrace(); >- } catch (NotDefinedException e) { >- e.printStackTrace(); >- } catch (NotEnabledException e) { >- e.printStackTrace(); >- } catch (NotHandledException e) { >- e.printStackTrace(); >+ } >+ } >+ >+ public void restoreDialog() { >+ IDialogSettings dialogSettings = getDialogSettings(); >+ if(dialogSettings != null) { >+ String[] idArray = dialogSettings.getArray("idArray"); //$NON-NLS-1$ >+ String[] textArray = dialogSettings.getArray("textArray"); //$NON-NLS-1$ >+ if(idArray != null && idArray.length > 0 && textArray != null && textArray.length > 0) { >+ Map newMap = new HashMap(); >+ Map newReverseMap = new HashMap(); >+ LinkedList newList = new LinkedList(); >+ for(int i = 0; i < idArray.length; i++) { >+ for(int j = 0; j < providers.length; j++) { >+ AbstractElement element = providers[j].getElementForId(idArray[i]); >+ if(element != null) { >+ newList.add(element); >+ newMap.put(textArray[i], element); >+ newReverseMap.put(element, textArray[i]); >+ break; >+ } >+ } > } >- return; >- } >- if (selectedElement instanceof ActionContributionItem) { >- ActionContributionItem item = (ActionContributionItem) selectedElement; >- item.getAction().run(); >- return; >+ previousPicksMap = newMap; >+ reverseMap = newReverseMap; >+ previousPicksList = newList; > } > } > } >@@ -302,131 +257,32 @@ > } > } > >- private static class Node { >- private String name; >- >- private String imageId; >- >- Node(String name, String imageId) { >- this.name = name; >- this.imageId = imageId; >- } >- >- public String toString() { >- return name; >- } >- >- /** >- * @return >- */ >- public String getImageId() { >- return imageId; >- } >- } >- > private final class MyContentProvider implements ITreeContentProvider { > private Object input; >- >- private Node previousNode = new Node( >- IncubatorMessages.CtrlEAction_Previous, IWorkbenchGraphicConstants.IMG_OBJ_NODE); >- >- private Node editorNode = new Node( >- IncubatorMessages.CtrlEAction_Editors, IWorkbenchGraphicConstants.IMG_OBJ_NODE); >- >- private Node viewNode = new Node(IncubatorMessages.CtrlEAction_Views, >- IWorkbenchGraphicConstants.IMG_VIEW_DEFAULTVIEW_MISC); >- >- private Node perspectiveNode = new Node( >- IncubatorMessages.CtrlEAction_Perspectives, >- IWorkbenchGraphicConstants.IMG_ETOOL_DEF_PERSPECTIVE); >- >- private Node commandNode = new Node( >- IncubatorMessages.CtrlEAction_Commands, IWorkbenchGraphicConstants.IMG_OBJ_NODE); >- >- private Node menusNode = new Node(IncubatorMessages.CtrlEAction_Menus, >- IWorkbenchGraphicConstants.IMG_OBJ_NODE); >- >- private Node newNode = new Node(IncubatorMessages.CtrlEAction_New, IWorkbenchGraphicConstants.IMG_OBJ_NODE); >- >- private Node preferencesNode = new Node( >- IncubatorMessages.CtrlEAction_Preferences, IWorkbenchGraphicConstants.IMG_OBJ_NODE); >- >- private SortedSet commands; >+ private final AbstractProvider[] providers; >+ private HashMap elementMap; > > /** >- * @param commands >+ * @param providers > */ >- public MyContentProvider(SortedSet commands) { >- MyContentProvider.this.commands = commands; >+ public MyContentProvider(AbstractProvider[] providers) { >+ this.providers = providers; >+ this.elementMap = new HashMap(); >+ for (int i = 0; i < providers.length; i++) { >+ elementMap.put(providers[i], providers[i].getElements()); >+ } > } > > public Object[] getChildren(Object parentElement) { >- if (parentElement instanceof Node) { >- if (previousNode.equals(parentElement)) { >- return getPreviousPicks(); >- } else if (editorNode.equals(parentElement)) { >- if(window.getActivePage() != null) { >- return window.getActivePage().getEditorReferences(); >- } >- } else if (viewNode.equals(parentElement)) { >- return PlatformUI.getWorkbench().getViewRegistry() >- .getViews(); >- } else if (perspectiveNode.equals(parentElement)) { >- return PlatformUI.getWorkbench().getPerspectiveRegistry() >- .getPerspectives(); >- } else if (commandNode.equals(parentElement)) { >- return commands.toArray(); >- } else if (preferencesNode.equals(parentElement)) { >- List elements = PlatformUI.getWorkbench() >- .getPreferenceManager().getElements( >- PreferenceManager.PRE_ORDER); >- Set uniqueElements = new HashSet(elements); >- return uniqueElements.toArray(); >- } else if (menusNode.equals(parentElement)) { >- MenuManager menu = ((WorkbenchWindow) window) >- .getMenuBarManager(); >- Set result = new HashSet(); >- collectContributions(menu, result); >- return result.toArray(); >- } else if (newNode.equals(parentElement)) { >- IWizardCategory rootCategory = WorkbenchPlugin.getDefault() >- .getNewWizardRegistry().getRootCategory(); >- List result = new ArrayList(); >- collectWizards(rootCategory, result); >- return result.toArray(); >- } >+ if (parentElement instanceof AbstractProvider) { >+ return (Object[]) elementMap.get(parentElement); > } > if (parentElement == input) { >- return new Node[] { previousNode, editorNode, viewNode, >- perspectiveNode, commandNode, menusNode, newNode, >- preferencesNode }; >+ return providers; > } > return new Object[0]; > } > >- private void collectContributions(MenuManager menu, Set result) { >- IContributionItem[] items = menu.getItems(); >- for (int i = 0; i < items.length; i++) { >- IContributionItem item = items[i]; >- if (item instanceof SubContributionItem) { >- item = ((SubContributionItem) item).getInnerItem(); >- } >- if (item instanceof MenuManager) { >- collectContributions((MenuManager) item, result); >- } else if (item instanceof ActionContributionItem) { >- result.add(item); >- } >- } >- } >- >- private void collectWizards(IWizardCategory category, List result) { >- result.addAll(Arrays.asList(category.getWizards())); >- IWizardCategory[] childCategories = category.getCategories(); >- for (int i = 0; i < childCategories.length; i++) { >- collectWizards(childCategories[i], result); >- } >- } >- > public Object getParent(Object element) { > return null; > } >@@ -453,34 +309,16 @@ > > public Image getImage(Object element) { > Image image = null; >- if (element instanceof Node) { >- Node node = (Node) element; >- image = findOrCreateImage(WorkbenchImages >- .getImageDescriptor(node.getImageId())); >- } >- else if (element instanceof IEditorReference) { >- IEditorReference editorReference = (IEditorReference) element; >- image = editorReference.getTitleImage(); >- } >- else if (element instanceof IViewDescriptor) { >- IViewDescriptor viewDescriptor = (IViewDescriptor) element; >- image = findOrCreateImage(viewDescriptor.getImageDescriptor()); >- } >- else if (element instanceof IPerspectiveDescriptor) { >- IPerspectiveDescriptor perspectiveDescriptor = (IPerspectiveDescriptor) element; >- image = findOrCreateImage(perspectiveDescriptor >+ if (element instanceof AbstractProvider) { >+ AbstractProvider provider = (AbstractProvider) element; >+ image = findOrCreateImage(provider.getImageDescriptor()); >+ } else if (element instanceof AbstractElement) { >+ image = findOrCreateImage(((AbstractElement) element) > .getImageDescriptor()); > } >- else if (element instanceof IPreferenceNode) { >- IPreferenceNode preferenceNode = (IPreferenceNode) element; >- image = preferenceNode.getLabelImage(); >- } >- else if (element instanceof IWizardDescriptor) { >- IWizardDescriptor wizardDescriptor = (IWizardDescriptor) element; >- image = findOrCreateImage(wizardDescriptor.getDescriptionImage()); >- } > if (image == null) { >- image = WorkbenchImages.getImage(IWorkbenchGraphicConstants.IMG_OBJ_ELEMENT); >+ image = WorkbenchImages >+ .getImage(IWorkbenchGraphicConstants.IMG_OBJ_ELEMENT); > } > return image; > } >@@ -512,92 +350,59 @@ > } > > public String getText(Object element) { >- String separator = " - "; //$NON-NLS-1$ >- if (element instanceof IEditorReference) { >- IEditorReference editorReference = (IEditorReference) element; >- StringBuffer result = new StringBuffer(); >- if (editorReference.isDirty()) { >- result.append(DIRTY_MARK); >- } >- result.append(editorReference.getName()); >- result.append(separator); >- result.append(editorReference.getTitleToolTip()); >- return result.toString(); >- } >- if (element instanceof IViewDescriptor) { >- IViewDescriptor viewDescriptor = (IViewDescriptor) element; >- return viewDescriptor.getLabel(); >- } >- if (element instanceof IPerspectiveDescriptor) { >- IPerspectiveDescriptor perspectiveDescriptor = (IPerspectiveDescriptor) element; >- return perspectiveDescriptor.getLabel(); >- } >- if (element instanceof IPreferenceNode) { >- IPreferenceNode preferenceNode = (IPreferenceNode) element; >- IPreferencePage page = preferenceNode.getPage(); >- if (page != null && page.getDescription() != null >- && page.getDescription().length() != 0) { >- return preferenceNode.getLabelText() + separator >- + page.getDescription(); >- } >- return preferenceNode.getLabelText(); >- } >- if (element instanceof IWizardDescriptor) { >- IWizardDescriptor wizardDescriptor = (IWizardDescriptor) element; >- return wizardDescriptor.getLabel() + separator >- + wizardDescriptor.getDescription(); >- } >- if (element instanceof ActionContributionItem) { >- ActionContributionItem item = (ActionContributionItem) element; >- IAction action = item.getAction(); >- if (action.getToolTipText() != null >- && action.getToolTipText().length() != 0) { >- return LegacyActionTools.removeMnemonics(action.getText()) >- + separator + action.getToolTipText(); >- } >- return LegacyActionTools.removeMnemonics(action.getText()); >- } >- if (element instanceof ParameterizedCommand) { >- ParameterizedCommand command = (ParameterizedCommand) element; >- try { >- Command nestedCommand = command.getCommand(); >- if (nestedCommand != null >- && nestedCommand.getDescription() != null >- && nestedCommand.getDescription().length() != 0) { >- return command.getName() + separator >- + nestedCommand.getDescription(); >- } >- return command.getName(); >- } catch (NotDefinedException e) { >- return command.toString(); >- } >+ if (element instanceof AbstractProvider) { >+ AbstractProvider provider = (AbstractProvider) element; >+ return provider.getName(); >+ } else if (element instanceof AbstractElement) { >+ AbstractElement abstractElement = (AbstractElement) element; >+ return abstractElement.getLabel(); > } > return super.getText(element); > } > } >- >+ > /** > * @param element > */ > private void addPreviousPick(Object element) { > previousPicksList.remove(element); > previousPicksList.addFirst(element); >+ String text = (String) reverseMap.put(element, rememberedText); >+ if(text != null) { >+ previousPicksMap.remove(text); >+ } > previousPicksMap.put(rememberedText, element); > } > > /** > * @return > */ >- private Object[] getPreviousPicks() { >- return previousPicksList.toArray(); >+ private AbstractElement[] getPreviousPicks() { >+ return (AbstractElement[]) previousPicksList >+ .toArray(new AbstractElement[previousPicksList.size()]); > } > >- private static String stripDirtyIndicator(String elementName) { >- if (elementName.startsWith(DIRTY_MARK)) { >- elementName = elementName.substring(1); >+ private class PreviousPicksProvider extends AbstractProvider { >+ >+ public AbstractElement getElementForId(String id) { >+ return null; >+ } >+ >+ public AbstractElement[] getElements() { >+ return getPreviousPicks(); > } >- return elementName; >- } > >+ public String getId() { >+ return "org.eclipse.ui.previousPicks"; //$NON-NLS-1$ >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE); >+ } > >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_Previous; >+ } >+ } > } >\ No newline at end of file >Index: Eclipse UI/org/eclipse/ui/internal/incubator/ActionProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/ActionProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/ActionProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/ActionProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,91 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import java.util.HashMap; >+import java.util.HashSet; >+import java.util.Map; >+import java.util.Set; >+ >+import org.eclipse.jface.action.ActionContributionItem; >+import org.eclipse.jface.action.IContributionItem; >+import org.eclipse.jface.action.MenuManager; >+import org.eclipse.jface.action.SubContributionItem; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+import org.eclipse.ui.internal.WorkbenchWindow; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class ActionProvider extends AbstractProvider { >+ >+ private AbstractElement[] cachedElements; >+ private Map idToElement = new HashMap(); >+ >+ public String getId() { >+ return "org.eclipse.ui.actions"; //$NON-NLS-1$ >+ } >+ >+ public AbstractElement getElementForId(String id) { >+ getElements(); >+ return (ActionElement) idToElement.get(id); >+ } >+ >+ public AbstractElement[] getElements() { >+ if (cachedElements == null) { >+ WorkbenchWindow window = (WorkbenchWindow) PlatformUI >+ .getWorkbench().getActiveWorkbenchWindow(); >+ if (window != null) { >+ MenuManager menu = window.getMenuManager(); >+ Set result = new HashSet(); >+ collectContributions(menu, result); >+ ActionContributionItem[] actions = (ActionContributionItem[]) result >+ .toArray(new ActionContributionItem[result.size()]); >+ cachedElements = new AbstractElement[actions.length]; >+ for (int i = 0; i < actions.length; i++) { >+ ActionElement actionElement = new ActionElement(actions[i]); >+ cachedElements[i] = actionElement; >+ idToElement.put(actionElement.getId(), actionElement); >+ } >+ } >+ } >+ return cachedElements; >+ } >+ >+ private void collectContributions(MenuManager menu, Set result) { >+ IContributionItem[] items = menu.getItems(); >+ for (int i = 0; i < items.length; i++) { >+ IContributionItem item = items[i]; >+ if (item instanceof SubContributionItem) { >+ item = ((SubContributionItem) item).getInnerItem(); >+ } >+ if (item instanceof MenuManager) { >+ collectContributions((MenuManager) item, result); >+ } else if (item instanceof ActionContributionItem) { >+ result.add(item); >+ } >+ } >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE); >+ } >+ >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_Menus; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/WizardProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/WizardProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/WizardProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/WizardProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,79 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import java.util.ArrayList; >+import java.util.Arrays; >+import java.util.HashMap; >+import java.util.List; >+import java.util.Map; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+import org.eclipse.ui.internal.WorkbenchPlugin; >+import org.eclipse.ui.wizards.IWizardCategory; >+import org.eclipse.ui.wizards.IWizardDescriptor; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class WizardProvider extends AbstractProvider { >+ >+ private AbstractElement[] cachedElements; >+ private Map idToElement = new HashMap(); >+ >+ public AbstractElement getElementForId(String id) { >+ getElements(); >+ return (WizardElement) idToElement.get(id); >+ } >+ >+ public AbstractElement[] getElements() { >+ if (cachedElements == null) { >+ IWizardCategory rootCategory = WorkbenchPlugin.getDefault() >+ .getNewWizardRegistry().getRootCategory(); >+ List result = new ArrayList(); >+ collectWizards(rootCategory, result); >+ IWizardDescriptor[] wizards = (IWizardDescriptor[]) result >+ .toArray(new IWizardDescriptor[result.size()]); >+ cachedElements = new AbstractElement[wizards.length]; >+ for (int i = 0; i < wizards.length; i++) { >+ WizardElement wizardElement = new WizardElement(wizards[i]); >+ cachedElements[i] = wizardElement; >+ idToElement.put(wizardElement.getId(), wizardElement); >+ } >+ } >+ return cachedElements; >+ } >+ >+ private void collectWizards(IWizardCategory category, List result) { >+ result.addAll(Arrays.asList(category.getWizards())); >+ IWizardCategory[] childCategories = category.getCategories(); >+ for (int i = 0; i < childCategories.length; i++) { >+ collectWizards(childCategories[i], result); >+ } >+ } >+ >+ public String getId() { >+ return "org.eclipse.ui.wizards"; //$NON-NLS-1$ >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE); >+ } >+ >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_New; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,64 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import java.util.HashMap; >+import java.util.Map; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.IPerspectiveDescriptor; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class PerspectiveProvider extends AbstractProvider { >+ >+ private AbstractElement[] cachedElements; >+ private Map idToElement = new HashMap(); >+ >+ public String getId() { >+ return "org.eclipse.ui.perspectives"; //$NON-NLS-1$ >+ } >+ >+ public AbstractElement getElementForId(String id) { >+ getElements(); >+ return (PerspectiveElement) idToElement.get(id); >+ } >+ >+ public AbstractElement[] getElements() { >+ if (cachedElements == null) { >+ IPerspectiveDescriptor[] perspectives = PlatformUI.getWorkbench() >+ .getPerspectiveRegistry().getPerspectives(); >+ cachedElements = new AbstractElement[perspectives.length]; >+ for (int i = 0; i < perspectives.length; i++) { >+ PerspectiveElement perspectiveElement = new PerspectiveElement( >+ perspectives[i]); >+ cachedElements[i] = perspectiveElement; >+ idToElement.put(perspectiveElement.getId(), perspectiveElement); >+ } >+ } >+ return cachedElements; >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_ETOOL_DEF_PERSPECTIVE); >+ } >+ >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_Perspectives; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/AbstractProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/AbstractProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/AbstractProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/AbstractProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,31 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public abstract class AbstractProvider { >+ >+ public abstract String getId(); >+ >+ public abstract String getName(); >+ >+ public abstract ImageDescriptor getImageDescriptor(); >+ >+ public abstract AbstractElement[] getElements(); >+ >+ public abstract AbstractElement getElementForId(String id); >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/WizardElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/WizardElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/WizardElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/WizardElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,79 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.IWorkbenchWindow; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.actions.NewWizardShortcutAction; >+import org.eclipse.ui.wizards.IWizardDescriptor; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class WizardElement extends AbstractElement { >+ >+ private static final String separator = " - "; //$NON-NLS-1$ >+ >+ private IWizardDescriptor wizardDescriptor; >+ >+ public WizardElement(IWizardDescriptor wizardDescriptor) { >+ this.wizardDescriptor = wizardDescriptor; >+ } >+ >+ public void execute() { >+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); >+ if(window != null) { >+ NewWizardShortcutAction wizardAction = new NewWizardShortcutAction(window, wizardDescriptor); >+ wizardAction.run(); >+ } >+ } >+ >+ public String getId() { >+ return wizardDescriptor.getId(); >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return wizardDescriptor.getImageDescriptor(); >+ } >+ >+ public String getLabel() { >+ return wizardDescriptor.getLabel() + separator >+ + wizardDescriptor.getDescription(); >+ } >+ >+ public int hashCode() { >+ final int prime = 31; >+ int result = 1; >+ result = prime >+ * result >+ + ((wizardDescriptor == null) ? 0 : wizardDescriptor.hashCode()); >+ return result; >+ } >+ >+ public boolean equals(Object obj) { >+ if (this == obj) >+ return true; >+ if (obj == null) >+ return false; >+ if (getClass() != obj.getClass()) >+ return false; >+ final WizardElement other = (WizardElement) obj; >+ if (wizardDescriptor == null) { >+ if (other.wizardDescriptor != null) >+ return false; >+ } else if (!wizardDescriptor.equals(other.wizardDescriptor)) >+ return false; >+ return true; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/CommandElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/CommandElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/CommandElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/CommandElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,103 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.core.commands.Command; >+import org.eclipse.core.commands.ExecutionException; >+import org.eclipse.core.commands.NotEnabledException; >+import org.eclipse.core.commands.NotHandledException; >+import org.eclipse.core.commands.ParameterizedCommand; >+import org.eclipse.core.commands.common.NotDefinedException; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.IWorkbenchWindow; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.handlers.IHandlerService; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class CommandElement extends AbstractElement { >+ >+ private static final String separator = " - "; //$NON-NLS-1$ >+ >+ private ParameterizedCommand command; >+ >+ public CommandElement(ParameterizedCommand command) { >+ this.command = command; >+ } >+ >+ public void execute() { >+ IWorkbenchWindow window = PlatformUI.getWorkbench() >+ .getActiveWorkbenchWindow(); >+ if (window != null) { >+ IHandlerService handlerService = (IHandlerService) window >+ .getWorkbench().getService(IHandlerService.class); >+ try { >+ handlerService.executeCommand(command, null); >+ } catch (ExecutionException e) { >+ e.printStackTrace(); >+ } catch (NotDefinedException e) { >+ e.printStackTrace(); >+ } catch (NotEnabledException e) { >+ e.printStackTrace(); >+ } catch (NotHandledException e) { >+ e.printStackTrace(); >+ } >+ } >+ } >+ >+ public String getId() { >+ return command.getId(); >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return null; >+ } >+ >+ public String getLabel() { >+ try { >+ Command nestedCommand = command.getCommand(); >+ if (nestedCommand != null >+ && nestedCommand.getDescription() != null >+ && nestedCommand.getDescription().length() != 0) { >+ return command.getName() + separator + nestedCommand.getDescription(); >+ } >+ return command.getName(); >+ } catch (NotDefinedException e) { >+ return command.toString(); >+ } >+ } >+ >+ public int hashCode() { >+ final int prime = 31; >+ int result = 1; >+ result = prime * result + ((command == null) ? 0 : command.hashCode()); >+ return result; >+ } >+ >+ public boolean equals(Object obj) { >+ if (this == obj) >+ return true; >+ if (obj == null) >+ return false; >+ if (getClass() != obj.getClass()) >+ return false; >+ final CommandElement other = (CommandElement) obj; >+ if (command == null) { >+ if (other.command != null) >+ return false; >+ } else if (!command.equals(other.command)) >+ return false; >+ return true; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/EditorElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/EditorElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/EditorElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/EditorElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,87 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.IEditorReference; >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.IWorkbenchPart; >+import org.eclipse.ui.PlatformUI; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class EditorElement extends AbstractElement { >+ >+ private static final String DIRTY_MARK = "*"; //$NON-NLS-1$ >+ >+ private static final String separator = " - "; //$NON-NLS-1$ >+ >+ private IEditorReference editorReference; >+ >+ public EditorElement(IEditorReference editorReference) { >+ this.editorReference = editorReference; >+ } >+ >+ public void execute() { >+ IWorkbenchPart part = editorReference.getPart(true); >+ if (part != null) { >+ IWorkbenchPage activePage = PlatformUI.getWorkbench() >+ .getActiveWorkbenchWindow().getActivePage(); >+ if (activePage != null) { >+ activePage.activate(part); >+ } >+ } >+ } >+ >+ public String getId() { >+ return editorReference.getId(); >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return ImageDescriptor.createFromImage(editorReference.getTitleImage()); >+ } >+ >+ public String getLabel() { >+ boolean dirty = editorReference.isDirty(); >+ return (dirty ? DIRTY_MARK : "") + editorReference.getName() + separator + editorReference.getTitleToolTip(); //$NON-NLS-1$ >+ } >+ >+ public String getSortLabel() { >+ return editorReference.getTitle(); >+ } >+ >+ public int hashCode() { >+ final int prime = 31; >+ int result = 1; >+ result = prime * result >+ + ((editorReference == null) ? 0 : editorReference.hashCode()); >+ return result; >+ } >+ >+ public boolean equals(Object obj) { >+ if (this == obj) >+ return true; >+ if (obj == null) >+ return false; >+ if (getClass() != obj.getClass()) >+ return false; >+ final EditorElement other = (EditorElement) obj; >+ if (editorReference == null) { >+ if (other.editorReference != null) >+ return false; >+ } else if (!editorReference.equals(other.editorReference)) >+ return false; >+ return true; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,69 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import java.util.HashSet; >+import java.util.List; >+import java.util.HashMap; >+import java.util.Map; >+import java.util.Set; >+ >+import org.eclipse.jface.preference.IPreferenceNode; >+import org.eclipse.jface.preference.PreferenceManager; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class PreferenceProvider extends AbstractProvider { >+ >+ private AbstractElement[] cachedElements; >+ private Map idToElement = new HashMap(); >+ >+ public String getId() { >+ return "org.eclipse.ui.preferences"; //$NON-NLS-1$ >+ } >+ >+ public AbstractElement getElementForId(String id) { >+ getElements(); >+ return (PreferenceElement) idToElement.get(id); >+ } >+ >+ public AbstractElement[] getElements() { >+ if (cachedElements == null) { >+ List list = PlatformUI.getWorkbench().getPreferenceManager().getElements(PreferenceManager.PRE_ORDER); >+ Set uniqueElements = new HashSet(list); >+ IPreferenceNode[] preferences = (IPreferenceNode[]) uniqueElements.toArray(new IPreferenceNode[uniqueElements.size()]); >+ cachedElements = new AbstractElement[preferences.length]; >+ for (int i = 0; i < preferences.length; i++) { >+ PreferenceElement preferenceElement = new PreferenceElement( >+ preferences[i]); >+ cachedElements[i] = preferenceElement; >+ idToElement.put(preferenceElement.getId(), preferenceElement); >+ } >+ } >+ return cachedElements; >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE); >+ } >+ >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_Preferences; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/PreferenceElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,92 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.preference.IPreferenceNode; >+import org.eclipse.jface.preference.IPreferencePage; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.swt.graphics.Image; >+import org.eclipse.ui.IWorkbenchWindow; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.dialogs.WorkbenchPreferenceDialog; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class PreferenceElement extends AbstractElement { >+ >+ private static final String separator = " - "; //$NON-NLS-1$ >+ >+ private IPreferenceNode preferenceNode; >+ >+ public PreferenceElement(IPreferenceNode preferenceNode) { >+ this.preferenceNode = preferenceNode; >+ } >+ >+ public void execute() { >+ IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow(); >+ if(window != null) { >+ WorkbenchPreferenceDialog dialog = WorkbenchPreferenceDialog >+ .createDialogOn(window.getShell(), preferenceNode >+ .getId()); >+ dialog.open(); >+ } >+ } >+ >+ public String getId() { >+ return preferenceNode.getId(); >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ Image image = preferenceNode.getLabelImage(); >+ if(image != null) { >+ ImageDescriptor descriptor = ImageDescriptor.createFromImage(image); >+ return descriptor; >+ } >+ return null; >+ } >+ >+ public String getLabel() { >+ IPreferencePage page = preferenceNode.getPage(); >+ if (page != null && page.getDescription() != null >+ && page.getDescription().length() != 0) { >+ return preferenceNode.getLabelText() + separator >+ + page.getDescription(); >+ } >+ return preferenceNode.getLabelText(); >+ } >+ >+ public int hashCode() { >+ final int prime = 31; >+ int result = 1; >+ result = prime * result >+ + ((preferenceNode == null) ? 0 : preferenceNode.hashCode()); >+ return result; >+ } >+ >+ public boolean equals(Object obj) { >+ if (this == obj) >+ return true; >+ if (obj == null) >+ return false; >+ if (getClass() != obj.getClass()) >+ return false; >+ final PreferenceElement other = (PreferenceElement) obj; >+ if (preferenceNode == null) { >+ if (other.preferenceNode != null) >+ return false; >+ } else if (!preferenceNode.equals(other.preferenceNode)) >+ return false; >+ return true; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/CommandProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/CommandProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/CommandProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/CommandProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,80 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import java.util.HashMap; >+import java.util.Map; >+import java.util.SortedSet; >+import java.util.TreeSet; >+ >+import org.eclipse.core.commands.ParameterizedCommand; >+import org.eclipse.jface.bindings.Binding; >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+import org.eclipse.ui.internal.keys.BindingService; >+import org.eclipse.ui.keys.IBindingService; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class CommandProvider extends AbstractProvider { >+ >+ private AbstractElement[] cachedElements; >+ private Map idToElement = new HashMap(); >+ >+ public String getId() { >+ return "org.eclipse.ui.commands"; //$NON-NLS-1$ >+ } >+ >+ public AbstractElement getElementForId(String id) { >+ getElements(); >+ return (CommandElement) idToElement.get(id); >+ } >+ >+ public AbstractElement[] getElements() { >+ if (cachedElements == null) { >+ BindingService bindingService = (BindingService) PlatformUI >+ .getWorkbench().getService(IBindingService.class); >+ Binding[] bindings = bindingService.getBindings(); >+ SortedSet commandSet = new TreeSet(); >+ for (int i = 0; i < bindings.length; i++) { >+ Binding binding = bindings[i]; >+ ParameterizedCommand command = binding >+ .getParameterizedCommand(); >+ if (command != null && command.getCommand().isHandled()) { >+ commandSet.add(command); >+ } >+ } >+ ParameterizedCommand[] commands = (ParameterizedCommand[]) commandSet >+ .toArray(new ParameterizedCommand[commandSet.size()]); >+ cachedElements = new AbstractElement[commands.length]; >+ for (int i = 0; i < commands.length; i++) { >+ CommandElement commandElement = new CommandElement(commands[i]); >+ cachedElements[i] = commandElement; >+ idToElement.put(commandElement.getId(), commandElement); >+ } >+ } >+ return cachedElements; >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE); >+ } >+ >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_Commands; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/PerspectiveElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,73 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.IPerspectiveDescriptor; >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.PlatformUI; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class PerspectiveElement extends AbstractElement { >+ >+ private final IPerspectiveDescriptor descriptor; >+ >+ public PerspectiveElement(IPerspectiveDescriptor descriptor) { >+ this.descriptor = descriptor; >+ } >+ >+ public void execute() { >+ IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); >+ if(activePage != null) { >+ activePage.setPerspective(descriptor); >+ } >+ } >+ >+ public String getId() { >+ return descriptor.getId(); >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return descriptor.getImageDescriptor(); >+ } >+ >+ public String getLabel() { >+ return descriptor.getLabel(); >+ } >+ >+ public int hashCode() { >+ final int prime = 31; >+ int result = 1; >+ result = prime * result >+ + ((descriptor == null) ? 0 : descriptor.hashCode()); >+ return result; >+ } >+ >+ public boolean equals(Object obj) { >+ if (this == obj) >+ return true; >+ if (obj == null) >+ return false; >+ if (getClass() != obj.getClass()) >+ return false; >+ final PerspectiveElement other = (PerspectiveElement) obj; >+ if (descriptor == null) { >+ if (other.descriptor != null) >+ return false; >+ } else if (!descriptor.equals(other.descriptor)) >+ return false; >+ return true; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/AbstractElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,33 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public abstract class AbstractElement { >+ >+ public abstract String getLabel(); >+ >+ public abstract ImageDescriptor getImageDescriptor(); >+ >+ public abstract String getId(); >+ >+ public abstract void execute(); >+ >+ public String getSortLabel() { >+ return getLabel(); >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/EditorProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/EditorProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/EditorProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/EditorProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,65 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import java.util.HashMap; >+import java.util.Map; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.IEditorReference; >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class EditorProvider extends AbstractProvider { >+ >+ private AbstractElement[] cachedElements; >+ private Map idToElement = new HashMap(); >+ >+ public AbstractElement getElementForId(String id) { >+ getElements(); >+ return (EditorElement) idToElement.get(id); >+ } >+ >+ public AbstractElement[] getElements() { >+ if (cachedElements == null) { >+ IWorkbenchPage activePage = PlatformUI.getWorkbench() >+ .getActiveWorkbenchWindow().getActivePage(); >+ IEditorReference[] editors = activePage.getEditorReferences(); >+ cachedElements = new AbstractElement[editors.length]; >+ for (int i = 0; i < editors.length; i++) { >+ EditorElement editorElement = new EditorElement(editors[i]); >+ cachedElements[i] = editorElement; >+ idToElement.put(editorElement.getId(), editorElement); >+ } >+ } >+ return cachedElements; >+ } >+ >+ public String getId() { >+ return "org.eclipse.ui.editors"; //$NON-NLS-1$ >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_OBJ_NODE); >+ } >+ >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_Editors; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/ViewProvider.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/ViewProvider.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/ViewProvider.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/ViewProvider.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,63 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import java.util.HashMap; >+import java.util.Map; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.internal.IWorkbenchGraphicConstants; >+import org.eclipse.ui.internal.WorkbenchImages; >+import org.eclipse.ui.views.IViewDescriptor; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class ViewProvider extends AbstractProvider { >+ >+ private AbstractElement[] cachedElements; >+ private Map idToElement = new HashMap(); >+ >+ public String getId() { >+ return "org.eclipse.ui.views"; //$NON-NLS-1$ >+ } >+ >+ public AbstractElement getElementForId(String id) { >+ getElements(); >+ return (ViewElement) idToElement.get(id); >+ } >+ >+ public AbstractElement[] getElements() { >+ if (cachedElements == null) { >+ IViewDescriptor[] views = PlatformUI.getWorkbench() >+ .getViewRegistry().getViews(); >+ cachedElements = new AbstractElement[views.length]; >+ for (int i = 0; i < views.length; i++) { >+ ViewElement viewElement = new ViewElement(views[i]); >+ cachedElements[i] = viewElement; >+ idToElement.put(viewElement.getId(), viewElement); >+ } >+ } >+ return cachedElements; >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return WorkbenchImages >+ .getImageDescriptor(IWorkbenchGraphicConstants.IMG_VIEW_DEFAULTVIEW_MISC); >+ } >+ >+ public String getName() { >+ return IncubatorMessages.CtrlEAction_Views; >+ } >+} >Index: Eclipse UI/org/eclipse/ui/internal/incubator/ActionElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/ActionElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/ActionElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/ActionElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,80 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.action.ActionContributionItem; >+import org.eclipse.jface.action.IAction; >+import org.eclipse.jface.action.LegacyActionTools; >+import org.eclipse.jface.resource.ImageDescriptor; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class ActionElement extends AbstractElement { >+ >+ private static final String separator = " - "; //$NON-NLS-1$ >+ >+ private ActionContributionItem item; >+ >+ public ActionElement(ActionContributionItem item) { >+ this.item = item; >+ } >+ >+ public void execute() { >+ item.getAction().run(); >+ } >+ >+ public String getId() { >+ return item.getId(); >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return item.getAction().getImageDescriptor(); >+ } >+ >+ public String getLabel() { >+ IAction action = item.getAction(); >+ if (action.getToolTipText() != null >+ && action.getToolTipText().length() != 0) { >+ return LegacyActionTools.removeMnemonics(action.getText()) >+ + separator + action.getToolTipText(); >+ } >+ return LegacyActionTools.removeMnemonics(action.getText()); >+ } >+ >+ public int hashCode() { >+ final int prime = 31; >+ int result = 1; >+ result = prime * result + ((item == null) ? 0 : item.hashCode()); >+ return result; >+ } >+ >+ public boolean equals(Object obj) { >+ if (this == obj) >+ return true; >+ if (obj == null) >+ return false; >+ if (getClass() != obj.getClass()) >+ return false; >+ final ActionElement other = (ActionElement) obj; >+ if (item == null) { >+ if (other.item != null) >+ return false; >+ } else if (!item.equals(other.item)) >+ return false; >+ return true; >+ } >+} >+ >+ >+ >Index: Eclipse UI/org/eclipse/ui/internal/incubator/ViewElement.java >=================================================================== >RCS file: Eclipse UI/org/eclipse/ui/internal/incubator/ViewElement.java >diff -N Eclipse UI/org/eclipse/ui/internal/incubator/ViewElement.java >--- /dev/null 1 Jan 1970 00:00:00 -0000 >+++ Eclipse UI/org/eclipse/ui/internal/incubator/ViewElement.java 1 Jan 1970 00:00:00 -0000 >@@ -0,0 +1,77 @@ >+/******************************************************************************* >+ * Copyright (c) 2006 IBM Corporation and others. >+ * All rights reserved. This program and the accompanying materials >+ * are made available under the terms of the Eclipse Public License v1.0 >+ * which accompanies this distribution, and is available at >+ * http://www.eclipse.org/legal/epl-v10.html >+ * >+ * Contributors: >+ * IBM Corporation - initial API and implementation >+ ******************************************************************************/ >+ >+package org.eclipse.ui.internal.incubator; >+ >+import org.eclipse.jface.resource.ImageDescriptor; >+import org.eclipse.ui.IWorkbenchPage; >+import org.eclipse.ui.PartInitException; >+import org.eclipse.ui.PlatformUI; >+import org.eclipse.ui.views.IViewDescriptor; >+ >+/** >+ * @since 3.3 >+ * >+ */ >+public class ViewElement extends AbstractElement { >+ >+ private final IViewDescriptor viewDescriptor; >+ >+ public ViewElement(IViewDescriptor viewDescriptor) { >+ this.viewDescriptor = viewDescriptor; >+ } >+ >+ public void execute() { >+ IWorkbenchPage activePage = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage(); >+ if(activePage != null) { >+ try { >+ activePage.showView(viewDescriptor.getId()); >+ } catch (PartInitException e) { >+ } >+ } >+ } >+ >+ public String getId() { >+ return viewDescriptor.getId(); >+ } >+ >+ public ImageDescriptor getImageDescriptor() { >+ return viewDescriptor.getImageDescriptor(); >+ } >+ >+ public String getLabel() { >+ return viewDescriptor.getLabel(); >+ } >+ >+ public int hashCode() { >+ final int prime = 31; >+ int result = 1; >+ result = prime * result >+ + ((viewDescriptor == null) ? 0 : viewDescriptor.hashCode()); >+ return result; >+ } >+ >+ public boolean equals(Object obj) { >+ if (this == obj) >+ return true; >+ if (obj == null) >+ return false; >+ if (getClass() != obj.getClass()) >+ return false; >+ final ViewElement other = (ViewElement) obj; >+ if (viewDescriptor == null) { >+ if (other.viewDescriptor != null) >+ return false; >+ } else if (!viewDescriptor.equals(other.viewDescriptor)) >+ return false; >+ return true; >+ } >+}
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 162006
:
54110
|
54198
|
54203
|
54208
|
54365
|
54438
|
250041
|
262379