我正在为我的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?我想要在活动文件中定义的所有特定类型的变量。 (当前标签中的文件) 谢谢!
答案 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;
});
}