GEF:在拖放过程中自动滚动

时间:2013-08-29 11:39:18

标签: java eclipse eclipse-gef

我有一个用GEF编写的图形编辑器。在这个编辑器中,可以拖放元素并通过拖放特定的锚点来创建连接。

一切正常,但是当用户拖动周围的图表时,图表不会自动滚动。

我希望当用户在拖动某些内容时到达侧面时,图表会自动滚动。

GEF支持这样的功能吗?应该调用哪个类/ setter来启用它?

如果没有直接支持,如何继续实现呢?

2 个答案:

答案 0 :(得分:3)

自从我上次摆弄GEF以来已经有一段时间了。

拖放根本不起作用或只是在负坐标的方向上? 你使用什么布局?

IIRC,有不同的布局,其中一个(FreeForm?)支持负坐标,所以如果你只是有负坐标的问题,你可以尝试改变布局。

这是一个Scrolling Graphical editor(作者说;))的例子,它可能会给你一个很好的提示。

还有一个名为 org.eclipse.gef.ui.parts.ScrollingGraphicalViewer 的类也可能有所帮助。

但是,只有提示,因为我不知道你的代码。

答案 1 :(得分:3)

第一步是使画布可滚动。这解释为in this book,页面 96 - 101

假设您已经在FigureCanvas上绘制了数据,而您正在使用FreeformFigureFreeformLayer,则可以执行以下操作:

MouseMoveListener的{​​{1}}上添加Figure。每次检测到拖动时,在EditPart方法中,使用mouseDragEvent显示您的数字。

这会导致getViewer().reveal(EditPart.this)在被拖动时始终不断显示。