0

こんにちは私はEclipseGEFを初めて使用し、ズームに問題があります。

基本的に、この機能が必要です。エディタービューを閉じるときはいつでも、エディターを前のスケールでズームし、最も重要なのは同じ場所にズームしたいです。

ビューポートを介してそのような機能を実現しようとしましたが、行き詰まりました。

4

1 に答える 1

3

最後に、私はsetViewLocation(Position p)方法による解決策を見つけました。トリッキーな部分は他の場所にあります-そのようなメソッドを実行する前に、ビューポートは有効な状態でなければなりません、

したがって、最善のアプローチはperformUpdate()、ビューポートのUpdateManagerで実行することです。GEFエディターでそのような位置を設定している場合、メソッドではなくinitializeGraphicalViewer()メソッドで設定場所を実行する必要があるため、別のトリッキーな状況が発生する可能性があります。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());
}
于 2011-03-29T12:00:08.370 に答える