0

我有一个 GEF 编辑器,其中包含以下RootEditPart.

public class MyProjectEditPart extends AbstractGraphicalEditPart {

@Override
protected IFigure createFigure() {
    ScalableFreeformLayeredPane layer = new ScalableFreeformLayeredPane();
    layer.setLayoutManager(new FreeformLayout());
    return layer;
  }

我正在使用编辑器创建一个自下而上的树:

     _7_
    /   \
   5     6
  / \   / \
 1   2 3   4 

1-7Rectangles,其中1-4代表与 不同的模型元素5-7。目前,所有图形都按脚(new Rectangle(x, y, w, h)+ parent.setConstraint(this, figure, rectangle))排列。人物的位置是根据人物5-7上的位置用简单的算法计算出来的1-4

为了实用起见,我希望能够简单地添加1-4到 RootFigure 的FlowLayoutedFigureBorderLayout.BOTTOM,并将其余图形添加到 RootFigure 中BorderLayout.CENTER

但是,我对 GEF 还很陌生,不知道该怎么做。我找不到正确的方法来添加1-4他们各自EditPart的数字createFigure()

例如,我尝试过类似的东西parent.getFigure().getChildren().get(0).add(Figure_1),例如,使用 RootEditPart 的createFigure()方法分别将两个新图形添加到BorderLayout.BOTTOMCENTER..

我会感谢任何起点:)。

4

1 回答 1

0

You need an EditPartFactory which "dispatches" the model elements to different EditParts. The toplevel editpart (7) should then implement getModelChildren to return the 5 and 6, whose editparts in turn should return as children the 1,2 and 3,4.

How about taking some time the GEF shape example and/or with http://www.redbooks.ibm.com/abstracts/sg246302.html ?

于 2012-09-03T10:23:08.737 回答