GMF - 以编程方式创建没有命令的连接

时间:2012-06-07 16:39:12

标签: java eclipse editor connection

您好我正在使用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;
     

}

0 个答案:

没有答案