Наконец-то я нашел решение методом setViewLocation(Position p)
.
Сложная часть лежит в другом месте - перед выполнением такого метода область просмотра должна быть в допустимом состоянии,
, поэтому лучший подход - выполнить performUpdate()
в UpdateManager области просмотра. Другая сложная ситуация может возникнуть, если вы устанавливаете такую позицию в редакторе GEF, потому что там положение установки должно быть выполнено в методе initializeGraphicalViewer()
NOT в 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());
}