diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/FindElementAction.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/FindElementAction.java | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/FindElementAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/FindElementAction.java deleted file mode 100644 index 359368c40..000000000 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/FindElementAction.java +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2004, 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 implementation - *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; - -import java.lang.reflect.InvocationTargetException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import org.eclipse.core.runtime.IProgressMonitor; -import org.eclipse.debug.internal.ui.DebugUIPlugin; -import org.eclipse.debug.internal.ui.IDebugHelpContextIds; -import org.eclipse.debug.internal.ui.viewers.AsynchronousTreeNavigationDialog; -import org.eclipse.debug.internal.ui.viewers.AsynchronousTreeViewer; -import org.eclipse.debug.internal.ui.viewers.ILabelResult; -import org.eclipse.jface.action.Action; -import org.eclipse.jface.dialogs.ProgressMonitorDialog; -import org.eclipse.jface.operation.IRunnableWithProgress; -import org.eclipse.jface.viewers.LabelProvider; -import org.eclipse.jface.viewers.TreePath; -import org.eclipse.jface.viewers.TreeSelection; -import org.eclipse.jface.window.Window; -import org.eclipse.swt.graphics.Image; -import org.eclipse.ui.IViewPart; -import org.eclipse.ui.PlatformUI; -import org.eclipse.ui.texteditor.IUpdate; -import org.eclipse.ui.texteditor.IWorkbenchActionDefinitionIds; - -/** - * Action which prompts the user to find/navigate to an element in an async tree. - */ -public class FindElementAction extends Action implements IUpdate { - - private AsynchronousTreeViewer fViewer; - private IViewPart fView; - private List fLabelResults; - private Map fElementToResult = new HashMap(); - - class FindLabelProvider extends LabelProvider { - - public FindLabelProvider() { - } - - public Image getImage(Object element) { - ILabelResult result = (ILabelResult) fElementToResult.get(element); - if (result != null) { - Image[] images = result.getImages(); - if (images != null && images.length > 0) { - return images[0]; - } - } - return null; - } - - public String getText(Object element) { - ILabelResult result = (ILabelResult) fElementToResult.get(element); - if (result != null) { - String[] labels = result.getLabels(); - if (labels != null && labels.length > 0) { - return labels[0]; - } - } - return ""; //$NON-NLS-1$ - } - - } - - public FindElementAction(IViewPart view, AsynchronousTreeViewer viewer) { - setText(ActionMessages.FindAction_0); - setId(DebugUIPlugin.getUniqueIdentifier() + ".FindElementAction"); //$NON-NLS-1$ - PlatformUI.getWorkbench().getHelpSystem().setHelp(this, IDebugHelpContextIds.FIND_ELEMENT_ACTION); - setActionDefinitionId(IWorkbenchActionDefinitionIds.FIND_REPLACE); - fViewer = viewer; - fView = view; - } - - public void run() { - final Object element = fViewer.getControl().getData(); - IRunnableWithProgress runnable = new IRunnableWithProgress() { - public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { - fLabelResults = fViewer.buildLabels(monitor, element, DebugUIPlugin.removeAccelerators(ActionMessages.FindAction_0)); - if (monitor.isCanceled()) { - throw new InterruptedException(); - } - } - }; - ProgressMonitorDialog dialog = new ProgressMonitorDialog(fView.getSite().getShell()); - dialog.setCancelable(true); - try { - dialog.run(true, true, runnable); - } catch (InvocationTargetException e) { - DebugUIPlugin.log(e); - return; - } catch (InterruptedException e) { - return; - } - Iterator iter = fLabelResults.iterator(); - while (iter.hasNext()) { - ILabelResult result = (ILabelResult) iter.next(); - fElementToResult.put(result.getElement(), result); - } - performFind(); - fElementToResult.clear(); - fLabelResults.clear(); - } - - protected void performFind() { - AsynchronousTreeNavigationDialog dialog = new AsynchronousTreeNavigationDialog(fView.getSite().getShell(), new FindLabelProvider(), fElementToResult.keySet().toArray()); - dialog.setTitle(ActionMessages.FindDialog_3); - dialog.setMessage(ActionMessages.FindDialog_1); - if (dialog.open() == Window.OK) { - Object[] elements = dialog.getResult(); - if (elements.length == 1) { - ILabelResult result = (ILabelResult) fElementToResult.get(elements[0]); - TreePath treePath = result.getTreePath(); - if (treePath != null) { - fViewer.setSelection(new TreeSelection(treePath), true, true); - } - } - } - } - - public void update() { - setEnabled(fViewer.getInput() != null); - } - -} |