java - 让 MPart 监听 eventBroker 事件
问题描述
我有一个 Eclipse E4 应用程序。该应用程序当前正在激活在打开时链接到特定 persective 的所有 MPart。现在我发现打开一个新的视角需要很长时间(大约 20 多岁)。所以我正在重构代码以加快打开视角。
我激活它们是因为否则 mPart 不会监听 EventBroker 事件。我激活部件的代码如下所示:
public void makeAllActive(MPerspective perspective) {
List<MPart> part = service.findElements(application, null, MPart.class, null);
List<MPartStack> mainPartStack = service.findElements(application, "partstack.shared", MPartStack.class, null);
if (!mainPartStack.isEmpty()) {
for (int i = part.size() - 1; i >= 0; i--) {
List<MPart> children = service.findElements(mainPartStack.get(0), part.get(i).getElementId(),
MPart.class, null);
if (!children.contains(part.get(i))) {
this.partService.activate(part.get(i));
}
}
}
}
此外,当用户切换多个视角并返回到第一个视角时,所选部分不会位于所有其他部分之上。这也不是真正的用户友好。
有没有办法激活透视图中的所有部分,以便这些部分可以监听 eventBroker 事件?
解决方案
想象一下,您想在应用程序启动时打开所有对话框。这在理论上是可能的,但是从用户的角度来看会导致非常意想不到的事情。事实上,您的请求非常相似,因为您希望激活所有 MPart。
必须加载所有数据,以便如果用户选择一个选项卡,它会立即显示其数据(无需再次调用后端服务器)
因此,您希望预先获取所有数据。此问题与 MPart 激活无关。您需要创建一些服务,它将为您执行所有后端调用。然后每个 MPart 将只呈现可用的结果。
推荐阅读
- fullcalendar - 是否可以在 fullcalendar 中将 rrule 插件与 businessHours 一起使用?
- r - 闪亮的应用程序结束后R闪亮的清除全局变量
- linux - 页面缓存与 L1 缓存?
- python - 无法使用 python Tkinter
- python - 如何区分 lambda 和 def 函数?
- javascript - 通过不一致的数据解析地址
- linux - 使用 repo“repo.ius.io”安装 php56 后,在亚马逊 linux2 上 yum 更新失败
- tensorflow - TensorFlow 如何知道如何计算导数?
- service - ExecCondition 不会阻止服务的启动
- c++ - 使用另一个向量和映射函数进行高效的 std::vector 初始化