将Eclipse GEF缩放到特定位置

时间:2011-03-24 22:58:49

标签: eclipse zoom java eclipse-gef

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

基本上我想拥有这个功能: 每当我关闭编辑器视图时,我希望编辑器使用之前的比例进行缩放,最重要的是放大到同一位置。

我试图通过Viewport实现这样的功能,但我陷入困境。

1 个答案:

答案 0 :(得分:3)

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

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

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

@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());
}