我正在实现GEF编辑器,并面临以下问题。
有两种类型的EditPart: 1) GraphEditPart, 2) NodeEditPart。我的编辑器扩展了GraphicalEditor
,因为我根本不需要调色板。我用SimpleRootEditPart
代替GraphicalViewer
。
GraphEditPart
有一个类型为Layer
的图形,用FlowLayout
进行布局。它的模型子节点是node,应该根据FlowLayout
显示,即一个接一个,当节点图(Label
)将移动到GraphicalViewer
的可见部分之外时,使用"断行"。这通常是水平滚动条出现的地方。为了抑制滚动条,我设置了layer.setPreferredSize(new Dimension(getViewer().getControl().getSize()))
。这工作得很好,所以当我将应用程序窗口的大小调整到更小的大小时,编辑器会变得更小,并且节点图形执行类似于FlowLayout的"换行"。
然而,如果我在图中有很多节点,我想要显示垂直滚动条,因为现在,节点只是消失在屏幕底部的下方。
所以基本上,我想实现的行为就像一个文本编辑器,它向下滚动,如果你只是输入足够的文本(如所见即所得文本编辑器在这里的stackoverflow)…
我试图通过调用((FigureCanvas) getViewer()).getControl.setVerticalScrollbarVisibility(FigureCanvas.AUTOMATIC))
来设置滚动条可见,但无济于事。
我认为问题是你使用的是SimpleRootEditPart
,它不支持滚动。尝试将其更改为ScalableRootEditPart
甚至ScalableFreeformRootEditPart
(这就是我使用的)。您正在执行的调用影响包含编辑部分的控件,但是由于GEF管理它自己的视图,因此您的调用没有影响。