blob: bbcc5026854a172a20b2cbe3c9eeb951020a1627 [file] [log] [blame]
///*******************************************************************************
// * 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));
// }
// }
//
//}