首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >缩放环境在Eclipse 4环境中的应用

缩放环境在Eclipse 4环境中的应用
EN

Stack Overflow用户
提问于 2016-06-13 12:25:12
回答 1查看 143关注 0票数 1

我正在尝试使用Eclipse4放大我的全球环境基金应用程序。我已经通过使用ZoomManager和操作实现了在Eclipse3环境中工作的缩放功能:

代码语言:javascript
复制
ZoomManager manager = rootEditPart.getZoomManager();
getActionRegistry().registerAction(new ZoomInAction(manager));
getActionRegistry().registerAction(new ZoomOutAction(manager));

现在我尝试将我的项目迁移到Eclipse 4环境中。据我所知,在Eclipse4中,操作已经被命令所取代,我已经在我的应用程序中添加了一个"ZoomIn命令“和一个"ZoomIn处理程序”。我还找到了一个使用ScalableFreeformLayeredPane的例子。

代码语言:javascript
复制
private static ScalableFreeformLayeredPane root;

@Inject
@Optional
private void subscribeTopicViewZoomIn(@UIEventTopic(Events.TOPIC_VIEW_ZOOMIN) Map<String, String> event) {
    double curScale = root.getScale();

    if (curScale <= 2.9)
        root.setScale(curScale + 0.1);
}

我的问题是,我不知道如何将这个ScalableFreeformLayeredPane与我的ScrollingGraphicalViewer连接起来,用它来显示我的模型:

代码语言:javascript
复制
private static ScrollingGraphicalViewer viewer = new ScrollingGraphicalViewer();
private static Model model = new Model();

    @PostConstruct
    public void postConstruct(Composite parent) {

    viewer.createControl(parent);

    viewer.setEditPartFactory(editPartFactory);
    viewer.setEditDomain(new DefaultEditDomain(this));

    CreateModel();

    viewer.setContents(model);

}

有人能帮我或者举个例子吗?或者,如果不使用ScalableFreeformLayeredPane,还有其他方法吗?

谢谢!托马斯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-01 14:38:48

我终于找到了一个对我有用的解决方案:

代码语言:javascript
复制
    private ZoomManager manager;

    @Override
    protected void initializeGraphicalViewer() {
        double[] zoomLevels;
        ArrayList<String> zoomContributions;

        ScalableRootEditPart rootEditPart = (ScalableRootEditPart) viewer.getRootEditPart();

        manager = rootEditPart.getZoomManager();

        zoomLevels = new double[] {0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0, 5.0};
        manager.setZoomLevels(zoomLevels);

        zoomContributions = new ArrayList<String>();

        manager.setZoomLevelContributions(zoomContributions);
    }

使用此配置,我可以使用命令和事件访问ZoomManager:

代码语言:javascript
复制
@Inject
@Optional
private void subscribeTopicViewZoomIn(@UIEventTopic(Events.TOPIC_VIEW_ZOOMIN) Map<String, String> event) {

    manager.setZoom(manager.getNextZoomLevel());
    updateZoomCombo();
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37789819

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档