我的ScrollingGraphicalViewer
显示在ViewPart中。但是,如果包含的图表大于ViewPart,则会出现滚动条,但无法看到整个图表。相反,我想缩小,直到可以看到整个图表而不滚动。
我已经尝试过调用viewer.zoomTo(Rectangle)
,但显然,此方法尚未实现。还有另一种方法可以达到这个目的吗?
我仍然需要滚动功能,所以我必须使用ScrollingGraphicalViewer
。就在第一次打开ViewPart时,应如上所述调整缩放。
答案 0 :(得分:1)
尝试将GEF LayoutListener安装到图表中覆盖内容editpart的#createFigure()方法(例如DiagramEditPart #creinFigure()。 这样的事情:
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;
}