Не уверен, запрашиваете ли вы метод, связанный с текущим местоположением каретки, или метод, который выбирает местоположение каретки.Я покажу вам оба.
Во-первых, окружающий метод:
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();
if(activeEditor instanceof JavaEditor) {
IJavaElement elt = ((JavaEditor) activeEditor).getElementAt(((TextSelection) activeEditor.getSelection()).getOffset(), true);
if (elt.getElementType == IJavaElement.METHOD) {
return (IMethod) elt;
}
}
return null;
Важными методами являются getElementAt
и getSelection
.
А вот какнайдите метод, который в настоящее время выбран каретой:
IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();
if(activeEditor instanceof JavaEditor) {
ITypeRoot root = EditorUtility.getEditorInputJavaElement(this, false);
TextSelection sel = ((TextSelection) activeEditor.getSelection());
IJavaElement elt = root.codeSelect(sel.getOffset(), sel.getLength();
if (elt.getElementType == IJavaElement.METHOD) {
return (IMethod) elt;
}
}
return null;
Интересный метод здесь codeSelect
, который разрешает текущий выбор в контексте данной единицы компиляции или файла класса.
Фактический код будет другим, так как во многих местах вам нужно проверять нулевое значение, но вам не нужно выполнять какие-либо другие экземпляры тестов.