Активная перспектива равна нулю, если вид отделен - PullRequest
0 голосов
/ 11 июля 2019

Если я щелкну правой кнопкой мыши и отсоединю представление, modelService.getActivePerspective(window) начнет возвращать ноль.Это означает, что сброс перспективы не работает правильно.

Если представление не отключено, оно работает правильно.Я думаю, что когда новое окно открыто, оно пропускает другое окно, которое не содержит перспективу.

Пример

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 Ответ

1 голос
/ 11 июля 2019

Код для 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);
...