E4 从不活动的视角关闭一个部分

E4 close a part from an innactive Perspective

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

  1. 操作
  2. Configuration -> 包含(除其他外)配置已打开的零件堆栈。每个配置在一个部分。

加载新模型时,将关闭所有配置部分。如果在配置透视图处于活动状态时加载新模型,这会很好地工作。

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

我在日志中看到调用了关闭部件的代码,一切似乎都很好。但是,当我切换回配置透视图时,部件仍然可见并处于打开状态。

有人能告诉我如何确保零件靠近,而不管哪个是活动视角吗?

我找到了 "workaround" 来解决我的问题。

我抛出了一个事件来检测模型加载,并将其用于 "close"/隐藏部件:

@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 应该在我删除部分时自动清空。