如何让GEF GraphicalViewer适合它所在的视图/编辑器?

时间:2014-07-07 14:12:40

标签: java eclipse eclipse-gef

我的ScrollingGraphicalViewer显示在ViewPart中。但是,如果包含的图表大于ViewPart,则会出现滚动条,但无法看到整个图表。相反,我想缩小,直到可以看到整个图表而不滚动。

我已经尝试过调用viewer.zoomTo(Rectangle),但显然,此方法尚未实现。还有另一种方法可以达到这个目的吗?

我仍然需要滚动功能,所以我必须使用ScrollingGraphicalViewer。就在第一次打开ViewPart时,应如上所述调整缩放。

1 个答案:

答案 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;
}