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

时间:2014-05-09 23:20:33

标签: java swt eclipse-gef flowlayout draw2d

我正在实施一个GEF编辑器,面临以下问题。

EditPart有两种类型:1)GraphEditPart,2)NodeEditPart。 我的编辑器扩展了GraphicalEditor,因为我根本不需要调色板。我对SimpleRootEditPart使用GraphicalViewer

GraphEditPart的数字为Layer,其格式为FlowLayout。它的模型子节点是节点,应该根据FlowLayout显示,即一个接一个地显示节点图(a Label)超出可见部分的“换行符”。 GraphicalViewer。这将是通常出现水平滚动条的点。为了抑制滚动条,我设置了layer.setPreferredSize(new Dimension(getViewer().getControl().getSize()))。这非常有效,因此当我将应用程序窗口调整为较小的大小时,编辑器会变小,并且节点数字会在FlowLayout中执行准“换行”。

但是,如果图中有很多节点,我想显示垂直滚动条,因为现在,节点只是消失在屏幕的下端。

基本上,我想要实现的行为就像文本编辑器一样,只要输入足够的文本就会向下滚动(就像stackoverflow上的WYSIWYG文本编辑器一样)......

我试图通过调用((FigureCanvas) getViewer()).getControl.setVerticalScrollbarVisibility(FigureCanvas.AUTOMATIC))来设置滚动条,但无济于事。

1 个答案:

答案 0 :(得分:0)

我认为问题是您使用的是SimpleRootEditPart,它不支持滚动。尝试将其更改为ScalableRootEditPart甚至ScalableFreeformRootEditPart(这就是我正在使用的)。您正在进行的调用会影响包含编辑部分的控件,但由于GEF管理自己的视图,因此您的调用无效。