我在學習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
第一次寫博客 希望能夠幫助遇到類似情況的人.