JavaGMF以编程方式创建连接,而不使用命令
嗨,我正在用GMF开发一个图形编辑器,希望在初始化一个新的图表时创建一组节点(我项目中的资源)和它们之间的连接。我不想在这里使用命令,因为在我看来,如果没有代码,它会更精简、更容易阅读,而且速度更快
通过调用myXXXFactory.eInstance.createResource()
并将它们添加到关系图模型中来创建节点没有问题。我的连接作为source-/targetConnections
特性包含在资源类中。因此,我在资源中添加了一个类似创建的连接作为源/目标。但它不会显示在图表中,即使它存在于ResourceImpl结构特性中。也许我需要将它添加到图表中,但由于它包含在图表中的一个特性中,我不知道如何添加
我是否做错了什么或遗漏了什么,或者没有命令就无法做到这一点?任何帮助都将不胜感激。下面是示例代码。它的输出是两个节点,但没有连接
谢谢,拉尔斯
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;
}
共 (0) 个答案