В настоящее время я работаю над надстройкой 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();
}
}
Работает очень хорошо. Хотя это своего рода грязное решение для использования ограниченных классов.