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