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 の実装 †
(以下作成中)