【发布时间】:2012-03-12 13:09:17
【问题描述】:
我目前正在开发一个可以帮助我编码的 Eclipse 插件。基本上是一个 String sn-ps 库。
当创建一个新的时,我很乐意给它一个 ClassName.MethodName.X 的 ID。
获取编辑器非常简单:
IWorkbenchPage page = PlatformUI.getWorkbench()
.getActiveWorkbenchWindow().getActivePage();
IEditorPart activeEditor = page.getActiveEditor();
if(activeEditor.getClass().getName().endsWith("CompilationUnitEditor")){
// do something
}
现在...有没有办法使用 Eclipse jdt API 来获取我的文本光标当前所在的方法的名称?
编辑: 好的。在 Andrew 的帮助下,我得到了以下结果:
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();
}
}
效果很好。虽然使用受限类是一种肮脏的解决方案。
【问题讨论】:
标签: java eclipse eclipse-plugin eclipse-jdt