X-Git-Url: http://secure.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/actions/OpenActionUtil.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/actions/OpenActionUtil.java new file mode 100644 index 0000000..18d7855 --- /dev/null +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpdt/internal/ui/actions/OpenActionUtil.java @@ -0,0 +1,103 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.internal.ui.actions; + +//import java.util.ArrayList; +//import java.util.List; + +import net.sourceforge.phpdt.core.IJavaElement; +//import net.sourceforge.phpdt.core.ISourceReference; +import net.sourceforge.phpdt.core.JavaModelException; +import net.sourceforge.phpdt.ui.JavaElementLabelProvider; +import net.sourceforge.phpeclipse.phpeditor.EditorUtility; + +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.dialogs.ElementListSelectionDialog; + +public class OpenActionUtil { + + private OpenActionUtil() { + // no instance. + } + + /** + * Opens the editor on the given element and subsequently selects it. + */ +// public static void open(Object element) throws JavaModelException, +// PartInitException { +// open(element, true); +// } + + /** + * Opens the editor on the given element and subsequently selects it. + */ + public static void open(Object element, boolean activate) + throws JavaModelException, PartInitException { + IEditorPart part = EditorUtility.openInEditor(element, activate); + if (element instanceof IJavaElement) + EditorUtility.revealInEditor(part, (IJavaElement) element); + } + + /** + * Filters out source references from the given code resolve results. A + * utility method that can be called by subclassers. + */ +// public static List filterResolveResults(IJavaElement[] codeResolveResults) { +// int nResults = codeResolveResults.length; +// List refs = new ArrayList(nResults); +// for (int i = 0; i < nResults; i++) { +// if (codeResolveResults[i] instanceof ISourceReference) +// refs.add(codeResolveResults[i]); +// } +// return refs; +// } + + /** + * Shows a dialog for resolving an ambigous java element. Utility method + * that can be called by subclassers. + */ + public static IJavaElement selectJavaElement(IJavaElement[] elements, + Shell shell, String title, String message) { + + int nResults = elements.length; + + if (nResults == 0) + return null; + + if (nResults == 1) + return elements[0]; + + int flags = JavaElementLabelProvider.SHOW_DEFAULT + | JavaElementLabelProvider.SHOW_QUALIFIED + | JavaElementLabelProvider.SHOW_ROOT; + + ElementListSelectionDialog dialog = new ElementListSelectionDialog( + shell, new JavaElementLabelProvider(flags)); + dialog.setTitle(title); + dialog.setMessage(message); + dialog.setElements(elements); + + if (dialog.open() == ElementListSelectionDialog.OK) { + Object[] selection = dialog.getResult(); + if (selection != null && selection.length > 0) { + nResults = selection.length; + for (int i = 0; i < nResults; i++) { + Object current = selection[i]; + if (current instanceof IJavaElement) + return (IJavaElement) current; + } + } + } + return null; + } +}