我有一个带有以下RootEditPart
的GEF编辑器。
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-7
为Rectangle
s,其中1-4
表示与5-7
不同的模型元素。目前,所有数字都是按脚(new Rectangle(x, y, w, h)
+ parent.setConstraint(this, figure, rectangle)
)排列的。数字5-7
的位置是根据数字1-4
上的位置使用简单算法计算的。
为了实用起见,我希望能够简单地将1-4
添加到RootFigure FlowLayout
处的Figure
ed BorderLayout.BOTTOM
,并添加其余的数字为RootFigure的BorderLayout.CENTER
。
但是,我对GEF很陌生,无法理解如何做到这一点。我找不到在各自的1-4
EditPart
中添加数字createFigure()
的正确方法。
例如,我尝试使用parent.getFigure().getChildren().get(0).add(Figure_1)
这样的内容,使用RootEditPart的createFigure()
方法分别向BorderLayout.BOTTOM
和CENTER
添加两个新数字。
我会感谢任何起点:)。
答案 0 :(得分:0)
您需要一个EditPartFactory,它将模型元素“调度”到不同的EditPart。 然后,toplevel editpart(7)应该实现getModelChildren以返回5和6,其editpart依次作为子节点返回1,2和3,4。
如何花一些时间使用GEF形状示例和/或使用http://www.redbooks.ibm.com/abstracts/sg246302.html?