对话框中的Xtext DSL嵌入式编辑器

时间:2013-03-10 16:19:29

标签: eclipse-plugin eclipse-rcp xtext

我是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中的代码,编辑器是空的。

请告诉我如何在嵌入式编辑器中显示代码

1 个答案:

答案 0 :(得分:2)

您必须将编辑器的初始内容指定为createPartialEditor(String prefix, String editablePart, String suffix, boolean insertLineBreaks)editablePart参数。要将XtextResource的内容作为文字获取,save将其转换为ByteArrayOutputStream,然后使用toString.将其转换为字符串

相关问题