java - 如何获得 GEF GraphicalViewer 以适合其所在的 View /编辑器?

标签 java eclipse eclipse-gef

我的 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;
}

关于java - 如何获得 GEF GraphicalViewer 以适合其所在的 View /编辑器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24612674/

相关文章:

java - 当在 GEF 上打开同一文件的不同视角时,如何打开不同的插件

java - 如何在不调用receive的情况下判断数据报包是否到达?

java - 如何在相机 2 api 片段中捕获和预览显示到 ImageView ?

java - 当相同的字符组合在一起时,Android 会分割字符串

java - Tomcat 8 与 Maven 的集成

eclipse - "SSL host could not be verified"错误

java - 带有详细页面的“图书馆”

java - Eclipse Tomcat 8 服务器上的 Spring MVC 应用程序输出过多的 DEBUG 消息

java - 如何从 GEF 编辑器访问我的 Java 源模型(来自 JDT)?