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

2008-04-22 (火) 02:34:49 (5848d)

GEF/EditPolicy : LayoutEditPolicy の実装

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

LayoutEditPolicy の実装

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

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

  • createChildEditPolicy(EditPart child)
  • getCreateCommand(CreateRequest request)
  • getMoveChildrenCommand(Request request)

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

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

ConstrainedLayoutEditPolicy の実装

(以下作成中)