将EclipseGEF放大到特定位置

将EclipseGEF放大到特定位置,eclipse,zooming,java,eclipse-gef,Eclipse,Zooming,Java,Eclipse Gef,您好,我是EclipseGEF的新手,在缩放方面有问题 基本上,我希望具有以下功能: 每当我关闭我的编辑器视图时,我都希望编辑器能够以先前的比例缩放,最重要的是缩放到相同的位置 我试图通过Viewport实现这样的功能,但我被卡住了。最后我通过设置ViewLocation(Position p)方法找到了解决方案。 棘手的部分在别处-在执行这种方法之前,视口必须处于有效状态 所以最好的方法是在viewport的UpdateManager上执行performUpdate()。如果在GEF编辑器中设

您好,我是EclipseGEF的新手,在缩放方面有问题

基本上,我希望具有以下功能: 每当我关闭我的编辑器视图时,我都希望编辑器能够以先前的比例缩放,最重要的是缩放到相同的位置


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

最后我通过
设置ViewLocation(Position p)
方法找到了解决方案。 棘手的部分在别处-在执行这种方法之前,视口必须处于有效状态

所以最好的方法是在viewport的UpdateManager上执行
performUpdate()。如果在GEF编辑器中设置此位置,则可能会出现另一种棘手的情况,因为必须在
initializeGraphicalViewer()
method而不是
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());
}

最后,我通过
setViewLocation(位置p)
方法找到了解决方案。 棘手的部分在别处-在执行这种方法之前,视口必须处于有效状态

所以最好的方法是在viewport的UpdateManager上执行
performUpdate()。如果在GEF编辑器中设置此位置,则可能会出现另一种棘手的情况,因为必须在
initializeGraphicalViewer()
method而不是
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());
}