E4从一个天生的透视中关闭了一部分

时间:2015-11-30 09:47:41

标签: eclipse eclipse-rcp rcp e4

我有一个有两个视角的e4应用程序:

  1. 操作
  2. 配置 - >包含(以及其他内容)配置打开的零件堆栈。部分中的每个配置。
  3. 加载新模型时,将关闭所有配置部件。如果在配置透视图处于活动状态时加载新模型,则此方法可以正常工作。

    但是,如果我在 Configuration 透视图中打开某些配置。切换到操作透视图并加载新模型。

    我可以在日志中看到关闭部件的代码被调用,一切似乎都没问题。但是,当我切换回配置透视图时,部件仍然可以看到打开。

    有人可以告诉我如何确保零件是否接近,无论哪个是活动透视图?

1 个答案:

答案 0 :(得分:1)

我找到了一个"解决方法"解决我的问题。

我有一个事件被抛出来检测模型负载,如下所示并使用它来关闭" /隐藏部件:

@Inject @Optional
void modelLoadedHandler(@UIEventTopic(STUConstants.UI_TOPIC_CONFIG_LOADED) Object nothing) {        
    viewer.setInput(sleConfigService);

    //Close open config parts
    MPartStack stack = (MPartStack) modelService
            .find(STUConstants.PART_STACK_ID_CONFIG_VIEW,
                    application);
    List<MStackElement> parts = new ArrayList<>(stack.getChildren());

    MPart mpart;
    for (MStackElement element : parts) {
        mpart = (MPart) element;

        log.error("Removing part {} visible {}", mpart.getElementId(), mpart.isVisible());
        partService.hidePart(mpart, true);
    }

    // Adding this make it work regardless of which perspective is 
    // active. 
    stack.getChildren().clear();
}

添加stack.getChildren().clear();就可以了。我不是百分之百地说这是否是处理这个问题的正确方法,因为我会删除一个部分时自动清空PartStack