插件开发和Xtext:扩展ViewPart并且不知道如何获取活动文件的AST

时间:2016-12-03 16:38:19

标签: eclipse plugins xtext

我正在为我的dsl语言开发一个新的插件(我使用xtext来开发它)。在我的插件中,我想要为每个* .mydsl文件,它应该查看在打开的文件中定义的变量图。

为此,我需要获得一些在打开文件中定义的EObject。 如果我有一些EObject,我可以通过AST来获得图形所需的所有变量。

所以,我扩展了ViewPart类,我试图找到在这段代码中打开的当前文件:

  IWorkbenchPage page = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage();

但是,我不知道如何从IWorkbenchPage获得一些EObject类型,有人可以告诉我如何做到这一点吗? (或其他可行的方式)

-------- UPDATE:---------

我发现很难通过获取EObject来检查文件的AST(因为我想使用以下函数:EcoreUtil2.getContainerOfType(context,Model) 它只能在xtext项目中工作。) 而不是找到EObject,有没有办法获得文件的AST?我想要在活动文件中定义的所有特定类型的变量。 (当前标签中的文件) 谢谢!

1 个答案:

答案 0 :(得分:1)

IEditorPart activeEditor = page.getActiveEditor();
if (activeEditor instanceof XtextEditor) {
    XtextEditor xtextEditor = (XtextEditor) activeEditor;
    xtextEditor.getDocument().readOnly((XtextResource resource) -> {
        EObject content = resource.getContents().get(0);
        // Do your AST related stuff here
        ...

        // Optionally return a result
        return null;
    });
}