您好我正在使用GMF开发图形编辑器,并希望在初始化新图表时创建一组节点(我的项目中的资源)以及它们之间的连接。我不想在这里使用命令,因为没有代码更轻薄,更容易阅读,而且在我看来也更快。
通过调用我的XXXFactory.eInstance.createResource()
并将它们添加到图模型中来创建节点没有问题。我的连接包含在资源类中的source-/targetConnections
功能中。所以我添加了一个类似创建的连接作为资源的源/目标。但即使它存在于ResourceImpl结构特征中,它也不会出现在图中。也许我需要在图表中另外添加它,但由于它包含在图表中包含的功能中,我不知道如何。
我做错了什么或丢失了什么或者没有命令就不可能做到这一点?任何帮助将非常感激。示例代码如下。它的输出是两个节点但没有连接。
谢谢Lars
createInitialModel方法示例:
private static RDFEditor.ShapesDiagram createInitialModel(){
ShapesDiagram diagram = >RDFEditor.RDFEditorFactory.eINSTANCE.createShapesDiagram(); RDFEditor.Resource res = RDFEditorFactory.eINSTANCE.createResource(); RDFEditor.Resource res2 = RDFEditorFactory.eINSTANCE.createResource(); Connection con = RDFEditorFactory.eINSTANCE.createConnection(); EStructuralFeature target = >res.eClass().getEStructuralFeature("targetConnections"); EStructuralFeature source = >res.eClass().getEStructuralFeature("sourceConnections"); res2.setName("rdfs:Resource"); res.setName("rdfs:Class"); con.setName("rdfs:type"); con.setSource(res); con.setTarget(res2); res.getSourceConnections().add(con); res.getTargetConnections().add(con); //res2.eSet(target, con); //res.eSet(source, con); List<? extends Shape> resList = Arrays.asList(res,res2); EStructuralFeature shapes = >diagram.eClass().getEStructuralFeature("shapes"); diagram.eSet(shapes, resList); return diagram;
}