GEF:如何将数字添加到RootEditPart / -Figure的不同BorderLayout部分

时间:2012-06-04 21:34:07

标签: eclipse-plugin visualization layout-manager eclipse-gef draw2d

我有一个带有以下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-7Rectangle 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.BOTTOMCENTER添加两个新数字。

我会感谢任何起点:)。

1 个答案:

答案 0 :(得分:0)

您需要一个EditPartFactory,它将模型元素“调度”到不同的EditPart。 然后,toplevel editpart(7)应该实现getModelChildren以返回5和6,其editpart依次作为子节点返回1,2和3,4。

如何花一些时间使用GEF形状示例和/或使用http://www.redbooks.ibm.com/abstracts/sg246302.html