こんにちは、私は 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;
}