在开发Eclipse插件时,如何访问项目的Java Model和AST根节点?

时间:2011-04-16 20:57:14

标签: java eclipse eclipse-plugin

我目前正在开发一个插件,它将利用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?
        }
}

由于

4 个答案:

答案 0 :(得分:4)

我使用以下内容获取模型:

public static IJavaModel prepareWorkspace() {
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IWorkspaceRoot workspaceRoot = workspace.getRoot();
    IJavaModel javaModel = JavaCore.create(workspaceRoot);
    return javaModel;
}

您可以在EclipseUtils.javaEclipseSearchUtils.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)