tips/eclipse/plugin開発/GEF/EditPolicy/LayoutEditPolicy の実装 の変更点


#navi(../../../)

* GEF/EditPolicy : LayoutEditPolicy の実装 [#e8da291b]

フィギュアのレイアウトに関する変更は LayoutEditPolicy を実装した EditPolicy で処理しますが、
実際にどのように処理されるのでしょうか。~
(以下、GEF 3.3.2 のソースを元に調べた結果です)


** LayoutEditPolicy の実装 [#f570c2c9]

単純に XY 座標を指定してレイアウトするだけなら、
親フィギュアの LayoutManager に XYLayout を設定し、
EditPolicy として XYLayoutEditPolicy(を継承したクラス)を使えば事足ります。
しかし複雑なレイアウトを実装しようと思うと、
どうしても必要なメソッドをオーバーライドして
独自の EditPolicy を作成する必要があります。

LayoutEditPolicy を直接継承して独自の EditPolicy を作成する場合、
以下の抽象メソッドを実装する必要があります。

- createChildEditPolicy(EditPart child)

- getCreateCommand(CreateRequest request)

- getMoveChildrenCommand(Request request)

実際には、LayoutEditPolicy を継承した ConstrainedLayoutEditPolicy (XYLayoutEditPolicy)、
OrderedLayoutEditPolicy が上記メソッドを、
それぞれの対応するレイアウトに合った形でオーバーライドしてます。~
独自の EditPolicy を作成する際も、これらの継承クラスをさらに継承して実装する方がより簡便です。

以下、それぞれの EditPolicy がどのように必要なメソッドをオーバーライドし、
必要なレイアウト処理を行っているかを調べました。

** ConstrainedLayoutEditPolicy の実装 [#g05b2731]

(以下作成中)