| ///******************************************************************************* |
| // * Copyright (c) 2000, 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.tests.adaptable; |
| // |
| //import java.util.ArrayList; |
| //import java.util.Iterator; |
| // |
| //import org.eclipse.core.resources.IContainer; |
| //import org.eclipse.core.resources.IFile; |
| //import org.eclipse.core.resources.IResource; |
| //import org.eclipse.core.resources.IWorkspace; |
| //import org.eclipse.core.resources.ResourcesPlugin; |
| //import org.eclipse.core.runtime.IAdaptable; |
| //import org.eclipse.core.runtime.IPath; |
| //import org.eclipse.core.runtime.Platform; |
| //import org.eclipse.jface.action.IMenuListener; |
| //import org.eclipse.jface.action.IMenuManager; |
| //import org.eclipse.jface.action.MenuManager; |
| //import org.eclipse.jface.dialogs.IDialogSettings; |
| //import org.eclipse.jface.preference.IPreferenceStore; |
| //import org.eclipse.jface.viewers.DecoratingLabelProvider; |
| //import org.eclipse.jface.viewers.DoubleClickEvent; |
| //import org.eclipse.jface.viewers.IDoubleClickListener; |
| //import org.eclipse.jface.viewers.ILabelDecorator; |
| //import org.eclipse.jface.viewers.ILabelProvider; |
| //import org.eclipse.jface.viewers.ISelection; |
| //import org.eclipse.jface.viewers.ISelectionChangedListener; |
| //import org.eclipse.jface.viewers.IStructuredSelection; |
| //import org.eclipse.jface.viewers.SelectionChangedEvent; |
| //import org.eclipse.jface.viewers.StructuredSelection; |
| //import org.eclipse.jface.viewers.TreeViewer; |
| //import org.eclipse.osgi.util.NLS; |
| //import org.eclipse.swt.SWT; |
| //import org.eclipse.swt.events.KeyEvent; |
| //import org.eclipse.swt.events.KeyListener; |
| //import org.eclipse.swt.widgets.Composite; |
| //import org.eclipse.swt.widgets.Menu; |
| //import org.eclipse.swt.widgets.Shell; |
| //import org.eclipse.ui.IDecoratorManager; |
| //import org.eclipse.ui.IEditorInput; |
| //import org.eclipse.ui.IEditorPart; |
| //import org.eclipse.ui.IEditorReference; |
| //import org.eclipse.ui.IFileEditorInput; |
| //import org.eclipse.ui.IMemento; |
| //import org.eclipse.ui.IPartListener; |
| //import org.eclipse.ui.IViewSite; |
| //import org.eclipse.ui.IWorkbenchPage; |
| //import org.eclipse.ui.IWorkbenchPart; |
| //import org.eclipse.ui.PartInitException; |
| //import org.eclipse.ui.PlatformUI; |
| //import org.eclipse.ui.actions.ActionContext; |
| //import org.eclipse.ui.internal.views.navigator.ResourceNavigatorMessages; |
| //import org.eclipse.ui.part.DrillDownAdapter; |
| //import org.eclipse.ui.part.ViewPart; |
| //import org.eclipse.ui.plugin.AbstractUIPlugin; |
| //import org.eclipse.ui.views.navigator.ResourceSorter; |
| // |
| ///** |
| // * Implements the Resource Navigator view. |
| // */ |
| //public class AdaptedResourceNavigator extends ViewPart { |
| // private TreeViewer viewer; |
| // |
| // private IDialogSettings settings; |
| // |
| // private IMemento memento; |
| // |
| // protected TestNavigatorActionGroup actionGroup; |
| // |
| // /** |
| // * Preference name constant for linking editor switching to navigator selection. |
| // * |
| // * [Issue: We're cheating here, by referencing a preference which is actually defined |
| // * on the Workbench's preference page. The Navigator should eventually have its own |
| // * preference page with this preference on it, instead of on the Workbench's. |
| // * The value must be the same as IWorkbenchPreferenceConstants.LINK_NAVIGATOR_TO_EDITOR.] |
| // */ |
| // private static final String LINK_NAVIGATOR_TO_EDITOR = "LINK_NAVIGATOR_TO_EDITOR"; //$NON-NLS-1$ |
| // |
| // private IPartListener partListener = new IPartListener() { |
| // public void partActivated(IWorkbenchPart part) { |
| // if (part instanceof IEditorPart) |
| // editorActivated((IEditorPart) part); |
| // } |
| // |
| // public void partBroughtToTop(IWorkbenchPart part) { |
| // } |
| // |
| // public void partClosed(IWorkbenchPart part) { |
| // } |
| // |
| // public void partDeactivated(IWorkbenchPart part) { |
| // } |
| // |
| // public void partOpened(IWorkbenchPart part) { |
| // } |
| // }; |
| // |
| // /** |
| // * Creates a new AdaptedResourceNavigator. |
| // */ |
| // public AdaptedResourceNavigator() { |
| // IDialogSettings workbenchSettings = getPlugin().getDialogSettings(); |
| // settings = workbenchSettings.getSection("ResourceNavigator"); //$NON-NLS-1$ |
| // if (settings == null) |
| // settings = workbenchSettings.addNewSection("ResourceNavigator"); //$NON-NLS-1$ |
| // } |
| // |
| // /** |
| // * Converts the given selection into a form usable by the viewer, |
| // * where the elements are resources. |
| // */ |
| // StructuredSelection convertSelection(ISelection selection) { |
| // ArrayList list = new ArrayList(); |
| // if (selection instanceof IStructuredSelection) { |
| // IStructuredSelection ssel = (IStructuredSelection) selection; |
| // for (Iterator i = ssel.iterator(); i.hasNext();) { |
| // Object o = i.next(); |
| // IResource resource = null; |
| // if (o instanceof IResource) { |
| // resource = (IResource) o; |
| // } else { |
| // if (o instanceof IAdaptable) { |
| // resource = (IResource) ((IAdaptable) o) |
| // .getAdapter(IResource.class); |
| // } |
| // } |
| // if (resource != null) { |
| // list.add(resource); |
| // } |
| // } |
| // } |
| // return new StructuredSelection(list); |
| // } |
| // |
| // /* (non-Javadoc) |
| // * Method declared on IWorkbenchPart. |
| // */ |
| // public void createPartControl(Composite parent) { |
| // viewer = new TreeViewer(parent, SWT.MULTI | SWT.H_SCROLL | SWT.V_SCROLL); |
| // // initDrillDownAdapter(viewer); |
| // viewer.setUseHashlookup(true); |
| // viewer.setContentProvider(new TestAdaptableContentProvider()); |
| // IDecoratorManager manager = getSite().getWorkbenchWindow() |
| // .getWorkbench().getDecoratorManager(); |
| // viewer.setLabelProvider(new DecoratingLabelProvider( |
| // new TestAdaptableWorkbenchAdapter(), manager |
| // .getLabelDecorator())); |
| // |
| // viewer.setInput(getInitialInput()); |
| // updateTitle(); |
| // |
| // MenuManager menuMgr = new MenuManager("#PopupMenu"); //$NON-NLS-1$ |
| // menuMgr.setRemoveAllWhenShown(true); |
| // menuMgr.addMenuListener(new IMenuListener() { |
| // public void menuAboutToShow(IMenuManager manager) { |
| // AdaptedResourceNavigator.this.fillContextMenu(manager); |
| // } |
| // }); |
| // Menu menu = menuMgr.createContextMenu(viewer.getTree()); |
| // viewer.getTree().setMenu(menu); |
| // getSite().registerContextMenu(menuMgr, viewer); |
| // |
| // makeActions(); |
| // |
| // // Update the global action enable state to match |
| // // the current selection. |
| // IStructuredSelection selection = (IStructuredSelection) viewer |
| // .getSelection(); |
| // actionGroup.updateGlobalActions(selection); |
| // |
| // viewer.addSelectionChangedListener(new ISelectionChangedListener() { |
| // public void selectionChanged(SelectionChangedEvent event) { |
| // handleSelectionChanged(event); |
| // } |
| // }); |
| // viewer.addDoubleClickListener(new IDoubleClickListener() { |
| // public void doubleClick(DoubleClickEvent event) { |
| // handleDoubleClick(event); |
| // } |
| // }); |
| // viewer.getControl().addKeyListener(new KeyListener() { |
| // public void keyPressed(KeyEvent event) { |
| // handleKeyPressed(event); |
| // } |
| // |
| // public void keyReleased(KeyEvent event) { |
| // handleKeyReleased(event); |
| // } |
| // }); |
| // |
| // actionGroup.fillActionBars(selection); |
| // |
| // getSite().setSelectionProvider(viewer); |
| // |
| // getSite().getPage().addPartListener(partListener); |
| // |
| // if (memento != null) |
| // restoreState(memento); |
| // memento = null; |
| // } |
| // |
| // /* (non-Javadoc) |
| // * Method declared on IWorkbenchPart. |
| // */ |
| // public void dispose() { |
| // getSite().getPage().removePartListener(partListener); |
| // super.dispose(); |
| // } |
| // |
| // /** |
| // * An editor has been activated. Set the selection in this navigator |
| // * to be the editor's input, if linking is enabled. |
| // */ |
| // void editorActivated(IEditorPart editor) { |
| // if (!isLinkingEnabled()) |
| // return; |
| // |
| // IEditorInput input = editor.getEditorInput(); |
| // if (input instanceof IFileEditorInput) { |
| // IFileEditorInput fileInput = (IFileEditorInput) input; |
| // IFile file = fileInput.getFile(); |
| // ISelection newSelection = new StructuredSelection(file); |
| // if (!viewer.getSelection().equals(newSelection)) { |
| // viewer.setSelection(newSelection); |
| // } |
| // } |
| // |
| // } |
| // |
| // /** |
| // * Called when the context menu is about to open. |
| // */ |
| // void fillContextMenu(IMenuManager menu) { |
| // actionGroup.setContext(new ActionContext(getViewer().getSelection())); |
| // actionGroup.fillContextMenu(menu); |
| // } |
| // |
| // /** |
| // * Returns the initial input for the viewer. |
| // * Tries to convert the input to a resource, either directly or via IAdaptable. |
| // * If the resource is a container, it uses that. |
| // * If the resource is a file, it uses its parent folder. |
| // * If a resource could not be obtained, it uses the workspace root. |
| // */ |
| // IContainer getInitialInput() { |
| // IAdaptable input = getSite().getPage().getInput(); |
| // IResource resource = null; |
| // if (input instanceof IResource) { |
| // resource = (IResource) input; |
| // } else { |
| // resource = (IResource) input.getAdapter(IResource.class); |
| // } |
| // if (resource != null) { |
| // switch (resource.getType()) { |
| // case IResource.FILE: |
| // return resource.getParent(); |
| // case IResource.FOLDER: |
| // case IResource.PROJECT: |
| // case IResource.ROOT: |
| // return (IContainer) resource; |
| // default: |
| // // Unknown resource type. Fall through. |
| // break; |
| // } |
| // } |
| // return ResourcesPlugin.getWorkspace().getRoot(); |
| // } |
| // |
| // /** |
| // * Returns the navigator's plugin. |
| // */ |
| // public AbstractUIPlugin getPlugin() { |
| // return (AbstractUIPlugin) Platform.getPlugin(PlatformUI.PLUGIN_ID); |
| // } |
| // |
| // /** |
| // * Returns the current sorter. |
| // * @since 2.0 |
| // */ |
| // public ResourceSorter getSorter() { |
| // return (ResourceSorter) getViewer().getSorter(); |
| // } |
| // |
| // /** |
| // * Returns the tree viewer which shows the resource hierarchy. |
| // * @since 2.0 |
| // */ |
| // public TreeViewer getViewer() { |
| // return viewer; |
| // } |
| // |
| // /** |
| // * Returns the shell to use for opening dialogs. |
| // * Used in this class, and in the actions. |
| // */ |
| // public Shell getShell() { |
| // return getViewSite().getShell(); |
| // } |
| // |
| // /** |
| // * Returns the message to show in the status line. |
| // * |
| // * @param selection the current selection |
| // * @return the status line message |
| // */ |
| // String getStatusLineMessage(IStructuredSelection selection) { |
| // if (selection.size() == 1) { |
| // Object o = selection.getFirstElement(); |
| // if (o instanceof IResource) { |
| // return ((IResource) o).getFullPath().makeRelative().toString(); |
| // } else { |
| // return ResourceNavigatorMessages.ResourceNavigator_oneItemSelected; |
| // } |
| // } |
| // if (selection.size() > 1) { |
| // return NLS.bind(ResourceNavigatorMessages.ResourceNavigator_statusLine, new Integer(selection.size())); |
| // } |
| // return ""; //$NON-NLS-1$ |
| // } |
| // |
| // /** |
| // * Returns the tool tip text for the given element. |
| // */ |
| // String getToolTipText(Object element) { |
| // if (element instanceof IResource) { |
| // IPath path = ((IResource) element).getFullPath(); |
| // if (path.isRoot()) { |
| // return ResourceNavigatorMessages.ResourceManager_toolTip; |
| // } else { |
| // return path.makeRelative().toString(); |
| // } |
| // } else { |
| // return ((ILabelProvider) getViewer().getLabelProvider()) |
| // .getText(element); |
| // } |
| // } |
| // |
| // /** |
| // * Handles double clicks in viewer. |
| // * Opens editor if file double-clicked. |
| // * @since 2.0 |
| // */ |
| // protected void handleDoubleClick(DoubleClickEvent event) { |
| // IStructuredSelection selection = (IStructuredSelection) event |
| // .getSelection(); |
| // Object element = selection.getFirstElement(); |
| // |
| // // 1GBZIA0: ITPUI:WIN2000 - Double-clicking in navigator should expand/collapse containers |
| // if (viewer.isExpandable(element)) { |
| // viewer.setExpandedState(element, !viewer.getExpandedState(element)); |
| // } |
| // |
| // } |
| // |
| // /** |
| // * Handles selection changed in viewer. |
| // * Updates global actions. |
| // * Links to editor (if option enabled) |
| // * @since 2.0 |
| // */ |
| // protected void handleSelectionChanged(SelectionChangedEvent event) { |
| // IStructuredSelection sel = (IStructuredSelection) event.getSelection(); |
| // updateStatusLine(sel); |
| // actionGroup.updateGlobalActions(sel); |
| // actionGroup.selectionChanged(sel); |
| // linkToEditor(sel); |
| // } |
| // |
| // /** |
| // * Handles a key press in viewer. By default do nothing. |
| // */ |
| // protected void handleKeyPressed(KeyEvent event) { |
| // |
| // } |
| // |
| // /** |
| // * Handles a key release in viewer. |
| // */ |
| // protected void handleKeyReleased(KeyEvent event) { |
| // |
| // } |
| // |
| // /* (non-Javadoc) |
| // * Method declared on IViewPart. |
| // */ |
| // public void init(IViewSite site, IMemento memento) throws PartInitException { |
| // super.init(site, memento); |
| // this.memento = memento; |
| // } |
| // |
| // /** |
| // * Initializes a drill down adapter on the viewer. |
| // */ |
| // void initDrillDownAdapter(TreeViewer viewer) { |
| // DrillDownAdapter drillDownAdapter = new DrillDownAdapter(viewer) { |
| // // need to update title whenever input changes; |
| // // updateNavigationButtons is called whenever any of the drill down buttons are used |
| // protected void updateNavigationButtons() { |
| // super.updateNavigationButtons(); |
| // updateTitle(); |
| // } |
| // }; |
| // drillDownAdapter.addNavigationActions(getViewSite().getActionBars() |
| // .getToolBarManager()); |
| // } |
| // |
| // /** |
| // * Returns whether the preference to link navigator selection to active editor is enabled. |
| // * @since 2.0 |
| // */ |
| // protected boolean isLinkingEnabled() { |
| // IPreferenceStore store = getPlugin().getPreferenceStore(); |
| // return store.getBoolean(LINK_NAVIGATOR_TO_EDITOR); |
| // } |
| // |
| // /** |
| // * Links to editor (if option enabled) |
| // * @since 2.0 |
| // */ |
| // protected void linkToEditor(IStructuredSelection selection) { |
| // if (!isLinkingEnabled()) |
| // return; |
| // |
| // Object obj = selection.getFirstElement(); |
| // if (obj instanceof IFile && selection.size() == 1) { |
| // IFile file = (IFile) obj; |
| // IWorkbenchPage page = getSite().getPage(); |
| // IEditorReference editorArray[] = page.getEditorReferences(); |
| // for (int i = 0; i < editorArray.length; ++i) { |
| // IEditorPart editor = editorArray[i].getEditor(true); |
| // IEditorInput input = editor.getEditorInput(); |
| // if (input instanceof IFileEditorInput |
| // && file.equals(((IFileEditorInput) input).getFile())) { |
| // page.bringToTop(editor); |
| // return; |
| // } |
| // } |
| // } |
| // } |
| // |
| // /** |
| // * Create self's action objects |
| // */ |
| // protected void makeActions() { |
| // actionGroup = new TestNavigatorActionGroup(this); |
| // } |
| // |
| // /** |
| // * Restore the state of the receiver to the state described in |
| // * momento. |
| // * @since 2.0 |
| // */ |
| // |
| // protected void restoreState(IMemento memento) { |
| // } |
| // |
| // public void saveState(IMemento memento) { |
| // } |
| // |
| // /** |
| // * Reveal and select the passed element selection in self's visual component |
| // */ |
| // public void selectReveal(ISelection selection) { |
| // StructuredSelection ssel = convertSelection(selection); |
| // if (!ssel.isEmpty()) { |
| // getViewer().setSelection(ssel, true); |
| // } |
| // } |
| // |
| // /** |
| // * @see IWorkbenchPart#setFocus() |
| // */ |
| // public void setFocus() { |
| // getViewer().getTree().setFocus(); |
| // } |
| // |
| // /** |
| // * Note: For experimental use only. |
| // * Sets the decorator for the navigator. |
| // * |
| // * @param decorator a label decorator or <code>null</code> for no decorations. |
| // */ |
| // public void setLabelDecorator(ILabelDecorator decorator) { |
| // DecoratingLabelProvider provider = (DecoratingLabelProvider) getViewer() |
| // .getLabelProvider(); |
| // if (decorator == null) { |
| // IDecoratorManager manager = getSite().getWorkbenchWindow() |
| // .getWorkbench().getDecoratorManager(); |
| // provider.setLabelDecorator(manager.getLabelDecorator()); |
| // } else { |
| // provider.setLabelDecorator(decorator); |
| // } |
| // } |
| // |
| // /** |
| // * Updates the message shown in the status line. |
| // * |
| // * @param selection the current selection |
| // */ |
| // void updateStatusLine(IStructuredSelection selection) { |
| // String msg = getStatusLineMessage(selection); |
| // getViewSite().getActionBars().getStatusLineManager().setMessage(msg); |
| // } |
| // |
| // /** |
| // * Updates the title text and title tool tip. |
| // * Called whenever the input of the viewer changes. |
| // */ |
| // void updateTitle() { |
| // Object input = getViewer().getInput(); |
| // IWorkspace workspace = ResourcesPlugin.getWorkspace(); |
| // if (input == null || input.equals(workspace) |
| // || input.equals(workspace.getRoot())) { |
| // setContentDescription(""); //$NON-NLS-1$ |
| // setTitleToolTip(""); //$NON-NLS-1$ |
| // } else { |
| // ILabelProvider labelProvider = (ILabelProvider) getViewer() |
| // .getLabelProvider(); |
| // setContentDescription(labelProvider.getText(input)); |
| // //$NON-NLS-1$ |
| // setTitleToolTip(getToolTipText(input)); |
| // } |
| // } |
| // |
| //} |