让MPart监听eventBroker事件

时间:2019-06-07 07:27:20

标签: java eclipse-rcp e4

我有一个Eclipse E4应用程序。当应用程序打开时,当前正在激活链接到特定对象的所有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事件?

1 个答案:

答案 0 :(得分:0)

想象一下,您想在应用程序启动时打开所有对话框。从理论上讲这是可能的,但从用户角度来看,这将导致非常出乎意料的事情。实际上,您的请求非常相似,因为您希望激活所有的MPart。

  

必须加载所有数据,以便如果用户选择一个选项卡,它确实会即时显示其数据(而无需再次调用后端服务器)

因此,您想预取所有数据。此问题与MPart激活无关。您需要创建一些服务,这些服务将为您执行所有后端调用。然后每个MPart都将呈现可用结果。