更改xtext outline的根节点标签

时间:2013-08-14 23:39:12

标签: jface xtext

根节点的默认标签文本是filename。如果我创建了名为test.mydsl的文件名,则会将test显示为标签。但我想更改为完整文件名test.mydsl

首先,我覆盖createRoot(IXtextDocument document)以获取IXtextDocument类型对象,但似乎文件名信息不存在。

第二次尝试只是在原始文本的末尾附加.mydsl。奇怪的是,如果我在子类中重写_text(Model model)

def _xtext(Model model) { return super._xtext(model) }

将按预期提供原始标签test。但是,如果我尝试用它附加一个字符串,它将失败

def _xtext(Model model) {
   val filename = super._xtext(model)
   // or cast it to a string
   val filename = super._xtext(model) as String

   return filename + ".mydsl"

filename的值始终为null_xtext()的返回值是否不是String

2 个答案:

答案 0 :(得分:0)

您可以使用readOnly操作来查询文档中的资源,并询问该资源的URI。这样的事情可以解决问题:

myXtextDocument.readOnly(new IUnitOfWork<String, XtextResource>() {
  public String exec(XtextResource resource) {
    return resource.getURI().lastSegment();
  }
});

答案 1 :(得分:0)

尼斯!这是我的大纲提供程序类

中的xtend代码段
override createRoot(IXtextDocument doc) {

  filename = doc.readOnly([res|
    return res.URI.lastSegment
  ]);               

  super.createRoot(doc)     
}

并在filename

中返回类成员变量def _text(ROOT_NODE_TYPE)