切换视角后,MPart不是用户

时间:2018-03-20 08:16:57

标签: eclipse-rcp e4 perspective

我有一个与在E4中切换视角有关的问题。这两个视角共享相同的MPart。切换到新视角后,将使用新的MPart。在回到原始视角后,仍将使用第二个MPart而不是第一个。

enter image description here

在图像中,您可以找到应用程序结构,并且两个Perspectives都有Outline屏幕。 在打开透视图时,大纲适用于该透视图。然后,如果我们切换到透视图2(具有不同的其他屏幕),则第二个大纲将被激活并且正常工作。切换回第一个视角时,第二个大纲仍然有效,第一个大纲不会响应任何请求。

切换到透视图后,我将所有MPart重新激活:

List<MPart> part = service.findElements(perspective, null, MPart.class, null);
    List<MPartStack> mainPartStack = service.findElements(perspective, "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));
        }
      }
    }

如何激活第一个大纲,以便从第一个角度响应新请求?

1 个答案:

答案 0 :(得分:0)

创建一个共享的Outline部分并使用占位符来重用Outline。通过这个解决方案,我改变了透视切换实现。因此,如果用户回到第一个视角,当他切换到第二个时轮廓的数据是相同的。