如何在GEF编辑器中实现自定义FlowLayout



我正在实现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管理它自己的视图,因此您的调用没有影响。

相关内容

  • 没有找到相关文章

最新更新