Масштабирование в Eclipse GEF до определенного места - PullRequest
0 голосов
/ 25 марта 2011

Здравствуйте, я новичок в Eclipse GEF и у меня проблема с масштабированием.

В основном я хотел бы иметь эту функциональность: Всякий раз, когда я закрываю окно «Редактор», мне хотелось бы, чтобы редактор масштабировался с предыдущим масштабом и, что наиболее важно, в то же место.

Я пытался добиться такой функциональности через Viewport, но я застрял.

1 Ответ

3 голосов
/ 29 марта 2011

Наконец-то я нашел решение методом 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());
}
...