0

GEF と Draw2d を使用してグラフを作成しています。

表示したい 3 レベルの構造があります。つまり、次のことを意味します。

RootEditPart
/
Level1EditPart
/
Level2EditPart
/
Level3EditPart

Level2 には複数の子があります。

Level3EditParts (Level2 コンテナ内) 間の接続を描画したい。

私が混乱しているのは、これらの接続のライン ルーティング アルゴリズムを設定する場所と、それが親/子の EditPart/Figure 階層を介してどのように継承されるかです。

理想的には、ShortestPathConnectionRouter を使用したいと思います。Level2EditPart の図を使用して、これを接続レイヤーの接続ルーターとして設定して、これを使用しようとしました。私の理解では、この図の子を回避する障害物として使用します (したがって、他の Level3 に線を引くことはありませんが、それらを回避しようとします)。

ただし、コードをデバッグすると、ShortestPathRoutingAlgorithm のように見えますが、接続図に 1 つの座標系を使用しています (これは、接続レイヤーの座標系であると推測しています)。 Level3 Figure (それらの親の座標系。Level2 Figure)。これは、レベル 3 の 1 つと交差しているときにうまくいかないことを意味するため、それらを避けようとはしません。

そのため、ShortestPathConnectionRouter の機能を誤解しているか、正しく設定していません。誰か助けてくれませんか?

4

1 に答える 1

0

ShortestPathConnectionRouterコンストラクターで親図を提供する必要があるため、を接続層のルーターとして設定することはできません。このルーターを使用するには、使用するすべての接続に対して設定する必要があります。また、次のように簡単に取得できる親フィギュアも提供する必要があります。

if(getSource().getParent() instanceof MyNodeEditPart) {
    MyNodeEditPart parent = (MyNodeEditPart) getSource().getParent();
    conn.setConnectionRouter(new ShortestPathConnectionRouter(parent.getFigure()));
}

このように動作します。

于 2011-09-14T06:37:40.397 に答える