我有由xtext 2.8.4生成的DSL IDE。它运作正常。由于不同的原因,我必须为不同类型的文件实现一些编辑器。我很容易添加带有语法着色的XML编辑器。另外,我需要概述XML的视图。如果我没有弄错我必须实现这样的东西
public class XMLOutlineTreeProvider implements IOutlineTreeStructureProvider, IOutlineTreeProvider, IOutlineTreeProvider.Cancelable {}
Eclipse平台本身也有XML大纲实现。我可以在xtext项目中重用这个实现吗? 我确信已准备好使用此任务的实现,但我可以找到它。下一个问题我无法找到如何在XText核心中注册我的实现
任何建议赞赏
由于 亚历
答案 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大纲所期望的内部模型。