1

こんにちは、私は GMF を使用してグラフィカル エディターを開発しており、新しいダイアグラムの初期化時に一連のノード (私のプロジェクトのリソース) とそれらの間の接続を作成したいと考えています。ここではコマンドを使用したくありません。コードを使用しないと、はるかにスリムになり、読みやすくなり、高速に思えるからです。

my を呼び出してノードをXXXFactory.eInstance.createResource()ダイアグラム モデルに追加することで、ノードを作成しても問題はありません。私の接続はsource-/targetConnections、リソース クラスの機能として含まれています。そのため、同様に作成された接続をソース/ターゲットとしてリソースに追加しました。ただし、ResourceImpl 構造機能に存在する場合でも、図には表示されません。ダイアグラムに追加する必要があるかもしれませんが、ダイアグラムに含まれる機能に含まれているため、方法がわかりません。

私は何か間違っているか、何かが欠けていますか、それともコマンドなしでこれを行うことは不可能ですか? どんな助けでも大歓迎です。サンプルコードは以下です。その出力は 2 つのノードですが、接続はありません。

ありがとうラース

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;

}

4

0 に答える 0