我的ScrollingGraphicalViewer
显示在ViewPart中。但是,如果所包含的图大于ViewPart,则会出现一个滚动条,并且无法看到整个图。相反,我想缩小直到无需滚动即可看到整个图。
我已经尝试调用viewer.zoomTo(Rectangle)
,但是显然,该方法尚未实现。还有另一种方法可以实现这一目标吗?
我仍然需要滚动功能,因此必须使用ScrollingGraphicalViewer
。仅在第一次打开ViewPart时,应如上所述调整缩放比例。
最佳答案
尝试安装GEF LayoutListener来绘制图形。覆盖内容editpart的#createFigure()方法(例如DiagramEditPart#createFigure()。
像这样:
protected IFigure createFigure() {
IFigure f = super.createFigure();
f.addLayoutListener(new LayoutListener.Stub(IFigure container) {
public void postLayout() {
Rectangle diagramBounds = new PrecisionRectangle(container.getBounds());
container.translateToAbsolute(diagramBounds);
/*
* Do the scale factor calculation based on you viewport/control size
*/
ZoomManager zoomManager = (ZoomManager)DiuagramEditPart.this.getViewer().getProperty(ZoomManager.class.toString());
if (zoomManager != null) {
zoomManager.setScale(scaleFactor);
}
}
});
return f;
}