我在学习GEF过程中,实例程序默认使用的是ScalableRootEditPart, GraphicalViewer默认提供的RootEditPart也是.具体的代码实现在org.eclipse.gef.ui.parts.GraphicalViewerImpl
类
/**
* Creates the default root editpart. Called during construction.
*/
protected void createDefaultRoot() {
setRootEditPart(new ScalableRootEditPart());
}
如果你仅仅是将ScalableRootEditPart()改为ScalableFreeformRootEditPart,会出现primary layer主层隐藏的情况.
需要进行额外的修改.
将ContentEditPart(包含Model的ContentModel对应的EditPart)中的createFigure中生成的函数.
@Override
protected IFigure createFigure()
{
FreeformLayer layer= new FreeformLayer();
layer.setLayoutManager(new FreeformLayout());
return layer;
}
1.返回的layer 的类型是FreeformLayer
2.layoutManager是FreeformLayout
用子类应该也行
修改1, 可以使得primary layer展现 但当拖动model到左侧/上侧时,就会陷入死循环
修改2. 解决死循环问题
参考 :http://blog.csdn.net/dollyn/article/details/1574985
第一次写博客 希望能够帮助遇到类似情况的人.