001: /*****************************************************************************************
002: * Copyright (c) 2004 Andrei Loskutov. All rights reserved. This program and the
003: * accompanying materials are made available under the terms of the BSD License which
004: * accompanies this distribution, and is available at
005: * http://www.opensource.org/licenses/bsd-license.php Contributor: Andrei Loskutov -
006: * initial API and implementation
007: ****************************************************************************************/package de.loskutov.bco.ui;
008:
009: import org.eclipse.jdt.core.IJavaElement;
010: import org.eclipse.jface.text.ITextSelection;
011: import org.eclipse.jface.viewers.ISelection;
012: import org.eclipse.jface.viewers.ISelectionProvider;
013: import org.eclipse.ui.IEditorInput;
014: import org.eclipse.ui.IEditorPart;
015: import org.eclipse.ui.IWorkbenchPage;
016: import org.eclipse.ui.IWorkbenchWindow;
017: import org.eclipse.ui.texteditor.ITextEditor;
018:
019: import de.loskutov.bco.BytecodeOutlinePlugin;
020:
021: /**
022: * @author Andrei
023: */
024: public class EclipseUtils {
025:
026: /**
027: * don't call me ;)
028: */
029: private EclipseUtils() {
030: super ();
031: }
032:
033: /**
034: * @return current active editor in workbench
035: */
036: public static IEditorPart getActiveEditor() {
037: IWorkbenchWindow window = BytecodeOutlinePlugin.getDefault()
038: .getWorkbench().getActiveWorkbenchWindow();
039: if (window != null) {
040: IWorkbenchPage page = window.getActivePage();
041: if (page != null) {
042: return page.getActiveEditor();
043: }
044: }
045: return null;
046: }
047:
048: /**
049: * @param part
050: * @return editor input as IJavaElement
051: */
052: public static IJavaElement getJavaInput(IEditorPart part) {
053: IEditorInput editorInput = part.getEditorInput();
054: if (editorInput != null) {
055: IJavaElement input = (IJavaElement) editorInput
056: .getAdapter(IJavaElement.class);
057: return input;
058: }
059: return null;
060: }
061:
062: /**
063: * @param editor
064: * @param offset
065: * @param length
066: */
067: public static void selectInEditor(ITextEditor editor, int offset,
068: int length) {
069: IEditorPart active = getActiveEditor();
070: if (active != editor) {
071: editor.getSite().getPage().activate(editor);
072: }
073: editor.selectAndReveal(offset, length);
074: }
075:
076: /**
077: * @param selectionProvider
078: * @return TextSelection or null, if provider does not provide TextSelection's
079: */
080: public static ITextSelection getSelection(
081: ISelectionProvider selectionProvider) {
082: ISelection selection = selectionProvider.getSelection();
083: if (selection instanceof ITextSelection) {
084: return (ITextSelection) selection;
085: }
086: return null;
087: }
088:
089: /**
090: * @param resource
091: * @return full package name in default java notation (with dots)
092: */
093: public static String getJavaPackageName(IJavaElement resource) {
094: String name = resource == null ? null : resource
095: .getElementName(); //$NON-NLS-1$
096: if (name == null) {
097: return ""; //$NON-NLS-1$
098: }
099: int type = resource.getElementType();
100: if (type == IJavaElement.PACKAGE_FRAGMENT
101: || type == IJavaElement.PACKAGE_FRAGMENT_ROOT) {
102: return name;
103: }
104: IJavaElement ancestor = resource
105: .getAncestor(IJavaElement.PACKAGE_FRAGMENT);
106: if (ancestor != null) {
107: return ancestor.getElementName();
108: }
109: return ""; //$NON-NLS-1$
110: }
111:
112: }
|