Переопределение метода при открытии экрана НЕ из главного меню

У нас есть задача блокировать повторное открытие экрана с тем же содержимым. Для этого мы используем переопределение метода isSameScreen(Screen openedScreen). Мы поняли, как переопределить этот метод при открытии экрана из главного меню. Подскажите, как его переопределить при открытии экрана из другого экрана.

Здравствуйте!

Когда экран открывается через ScreenBuilders или через Screens, то метод isSameScreen() экрана не вызывается. Думаю, здесь будет лучше дополнительно переопределить метод show().

Например, когда он будет открываться программно, мы будем проверять не открыт ли сейчас этот экран:

@Autowired
private Screens screens;

@Override
public Screen show() {
    Screens.OpenedScreens openedScreens = screens.getOpenedScreens();

    // Ищем открытый экран, также учитываем что экран может являться рутовым в breadcrumbs
    Screen sameScreen = openedScreens.getWorkAreaStacks().stream()
            .map(windowStack -> Iterables.getLast(windowStack.getBreadcrumbs()))
            .filter(tabScreen -> isAlreadyOpened(this, tabScreen))
            .findFirst()
            .orElse(null);

    if (sameScreen != null) {
        return sameScreen;
    }

    return super.show();
}