Как получить текущий метод из активного редактора Eclipse?

В настоящее время я работаю над надстройкой Eclipse, которая поможет мне писать код. По сути, это библиотека фрагментов строк.

При создании нового я хотел бы присвоить ему идентификатор вида ClassName.MethodName.X.

Получить редактор довольно просто:

IWorkbenchPage page = PlatformUI.getWorkbench()
                        .getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();
if(activeEditor.getClass().getName().endsWith("CompilationUnitEditor")){
// do something
}

Теперь... есть ли способ использовать API-интерфейсы Eclipse jdt для получения имени метода, в котором сейчас находится мой текстовый курсор?

Редактировать: В порядке. С помощью Эндрю вот что я получил:

IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();

if(activeEditor instanceof JavaEditor) {
    ICompilationUnit root = (ICompilationUnit) EditorUtility.getEditorInputJavaElement(activeEditor, false);
    try {
        ITextSelection sel = (ITextSelection) ((JavaEditor) activeEditor)
            .getSelectionProvider().getSelection();
        int offset = sel.getOffset();
        IJavaElement element = root.getElementAt(offset);
        if(element.getElementType() == IJavaElement.METHOD){
            return element.getElementName());
        }
    } catch (JavaModelException e) {
        e.printStackTrace();
    }
}

Работает очень хорошо. Хотя это своего рода грязное решение для использования ограниченных классов.

10
задан Andrew Eisenberg 6 November 2012 в 05:30
поделиться