こんにちは私はEclipseGEFを初めて使用し、ズームに問題があります。
基本的に、この機能が必要です。エディタービューを閉じるときはいつでも、エディターを前のスケールでズームし、最も重要なのは同じ場所にズームしたいです。
ビューポートを介してそのような機能を実現しようとしましたが、行き詰まりました。
こんにちは私はEclipseGEFを初めて使用し、ズームに問題があります。
基本的に、この機能が必要です。エディタービューを閉じるときはいつでも、エディターを前のスケールでズームし、最も重要なのは同じ場所にズームしたいです。
ビューポートを介してそのような機能を実現しようとしましたが、行き詰まりました。
最後に、私は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());
}