0

您好,我是 Eclipse GEF 的新手,我在缩放时遇到问题。

基本上我想拥有这个功能:每当我关闭我的编辑器视图时,我想让编辑器以以前的比例缩放,最重要的是到相同的位置。

我试图通过 Viewport 实现这样的功能,但我被卡住了。

4

1 回答 1

3

最后我通过setViewLocation(Position p)方法找到了解决方案。棘手的部分在于其他地方 - 在执行此类方法之前,视口必须处于有效状态,

所以最好的方法是performUpdate()在视口的 UpdateManager 上执行。如果您在 GEF 编辑器中设置此类位置,则可能会出现另一种棘手的情况,因为必须在方法initializeGraphicalViewer()不是configureGraphicalViewer()方法中执行设置位置。

所以最后的代码应该是这样的:

@Override
protected void initializeGraphicalViewer() {

    super.initializeGraphicalViewer();
    final GraphicalViewer viewer = getGraphicalViewer();
    viewer.setContents(getModel());
    ScalableFreeformRootEditPart rootEditPart = (ScalableFreeformRootEditPart) viewer.getRootEditPart();

    Viewport viewport = (Viewport) rootEditPart.getFigure();
    viewport.getUpdateManager().performUpdate();
    viewport.setViewLocation(getModel().getZoomPosition());
}
于 2011-03-29T12:00:08.370 回答