如果视图已分离,则活动透视图为null

时间:2019-07-11 09:50:50

标签: java eclipse-rcp e4

如果我右键单击并分离视图,则modelService.getActivePerspective(window)开始返回null。这意味着重置透视图无法正常工作。

如果未分离视图,则它可以正常工作。我在想,当打开一个新窗口时,它正在传递不包含透视图的其他窗口。

示例

public class ResetPerspectiveHandler {
    @Execute
    public static void resetPerspective(final MApplication app, final EPartService partService,
        final EModelService modelService, final MWindow window) {

    // Prints null
    System.out.println(modelService.getActivePerspective(window));

    PerspectiveSnippetsCopier.resetPerspective(modelService, partService, app, window,
        modelService.getActivePerspective(window).getElementId());
    }
}

可能是什么原因造成的?

1 个答案:

答案 0 :(得分:1)

getActivePerspective的代码是:

public MPerspective getActivePerspective(MWindow window) {
    List<MPerspectiveStack> pStacks = findElements(window, null, MPerspectiveStack.class);
    if (pStacks.size() == 1) {
        MPerspective perspective = pStacks.get(0).getSelectedElement();
        return perspective;
    }

    return null;
}

因此,它期望在给定的窗口中找到一个MPerspectiveStack,大概是分离的窗口没有这个。

您可以尝试在应用中找到主窗口,而不是使用当前窗口。

MWindow mainWindow = (MWindow)modelService.find("main window id", app);
相关问题