我目前正在开发一个插件,它将利用Eclipse的Java模型和Eclipse的Java抽象语法树。
所以我正在寻找的方法是通过我的插件获取Java Model根对象和当前Java项目的AST Root节点:
public class SampleHandler extends AbstractHandler {
public Object execute(ExecutionEvent event) throws ExecutionException {
IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindowChecked(event);
??? how to get the current Java project Java Model? and the AST node?
}
}
由于
答案 0 :(得分:4)
我使用以下内容获取模型:
public static IJavaModel prepareWorkspace() {
IWorkspace workspace = ResourcesPlugin.getWorkspace();
IWorkspaceRoot workspaceRoot = workspace.getRoot();
IJavaModel javaModel = JavaCore.create(workspaceRoot);
return javaModel;
}
您可以在EclipseUtils.java和EclipseSearchUtils.java中找到此实用程序和其他一些有用的Eclipse实用程序方法。
答案 1 :(得分:3)
您可以从处理程序中获取选择,然后您可以决定如何处理它:
ISelection sel = HandlerUtil.getCurrentSelection(event);
if (sel instanceof IStructuredSelection) {
// check to see if it's empty first, though
Object obj = ((IStructuredSelection)sel).getFirstElement();
// then have a look and see what your selection is.
}
如果你有一个IJavaElement,你可以走模型,直到找到你想要的点。如果你有一个IFile / IResource,你可以使用一些JavaCore方法来获取java模型。
答案 2 :(得分:2)
请参阅org.eclipse.jdt.core插件和IJavaProject和JavaCore类。使用JavaCore.create([IProject])获取IJavaProject并转到那里。
答案 3 :(得分:2)
看看这个......
和
基本上
ITypeRoot
ASTParser
或SharedASTProvider
以获得良好的起点祝你好运!