我是xtext的新手,我使用xtext创建了一个DSL,并且我生成了工件,它生成了编辑器,它具有许多功能,如内容辅助和语法着色,现在问题是我想将编辑器嵌入到对话框中.
为了使用EmbeddedEditor实现这一点,我可以获得嵌入式编辑器并将其放在对话框中,但嵌入式编辑器不显示文件的内容.
文件C:/Eclipse_Work/workspace/runtime_workspace/apa/ex.mydsl包含:
import com.ex.test;
entity{
element a;
}
对话框的createcontrol()中的代码是:
IEditedResourceProvider resourceProvider=new IEditedResourceProvider() {
@Override
public XtextResource createResource() {
try {
Resource resource = resourceSet.createResource(URI.createURI("C:/Eclipse_Work/workspace/runtime_workspace/apa/ex.mydsl"));
XtextResource resource2=(XtextResource)resource;
return (XtextResource) resource;
} catch (Exception e) {
return null;
}
}
};
MyDslActivator activator = MyDslActivator.getInstance();
Injector injector = activator
.getInjector(MyDslActivator.COM_APAMA_STUDIO_QUERY_EXT_MYDSL);
@SuppressWarnings("restriction")
EmbeddedEditorFactory factory = injector.getInstance(EmbeddedEditorFactory.class);
EmbeddedEditor handle= factory.newEditor(resourceProvider).withParent(
composite);
EmbeddedEditorModelAccess partialEditor= handle.createPartialEditor();
handle.getViewer().getControl().setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, true, 2, 0));
当我运行项目时,对话框打开一个编辑器区域,但它没有显示ex.mydsl中的代码,编辑器为空.
请告诉我如何在嵌入式编辑器中显示代码
最佳答案 您必须将编辑器的初始内容指定为
createPartialEditor(String prefix, String editablePart, String suffix, boolean insertLineBreaks)
的editablePart参数.要将XtextResource的内容作为文本获取,
save将其作为ByteArrayOutputStream,然后使用toString将其转换为字符串.