将XML大纲添加到Xtext DSL IDE

时间:2015-08-19 12:39:55

标签: xml eclipse eclipse-rcp dsl xtext

我有由xtext 2.8.4生成的DSL IDE。它运作正常。由于不同的原因,我必须为不同类型的文件实现一些编辑器。我很容易添加带有语法着色的XML编辑器。另外,我需要概述XML的视图。如果我没有弄错我必须实现这样的东西

public class XMLOutlineTreeProvider implements IOutlineTreeStructureProvider, IOutlineTreeProvider, IOutlineTreeProvider.Cancelable {}

Eclipse平台本身也有XML大纲实现。我可以在xtext项目中重用这个实现吗? 我确信已准备好使用此任务的实现,但我可以找到它。下一个问题我无法找到如何在XText核心中注册我的实现

任何建议赞赏

由于 亚历

1 个答案:

答案 0 :(得分:1)

我认为重用现有的大纲实现要比自己实现一些方法更省力。实际上,您只需为xml节点提供标签,图标路径和子列表。

原则上看起来像这样(代码是Xtend):

def _createChildren(IOutlineNode parentNode, Element element) {
    element.children.forEach [
        createNode(parentNode, it);
    ]
}

标签提供者:

def text(Element ele) {
    return ele.name
}

def text(Attribute attr) {
    attr.name + '=' + attr.value 
}

def image(Element ele) {
    'element.gif'
}

域模型示例或算术示例确实实现了简单的轮廓。你可能想看看这些。

重用现有的东西比较麻烦,因为你必须将基于EMF的Xtext模型适应XML大纲所期望的内部模型。