我有一个有两个视角的e4应用程序:
加载新模型时,将关闭所有配置部件。如果在配置透视图处于活动状态时加载新模型,则此方法可以正常工作。
但是,如果我在 Configuration 透视图中打开某些配置。切换到操作透视图并加载新模型。
我可以在日志中看到关闭部件的代码被调用,一切似乎都没问题。但是,当我切换回配置透视图时,部件仍然可以看到打开。
有人可以告诉我如何确保零件是否接近,无论哪个是活动透视图?
答案 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
。