Если из данного окна открыть другое окно c OpenMode.NEW_TAB, то после его закрытия становится активным следующее (если таковое имеется) из списка открытых табов. Как сделать, чтоб после закрытия данного окна активировалось окно, в котором его вызвали ?
1 симпатия
Здравствуйте, Юрий
Для начала, нужно получить доступ к tabbed контейнеру:
Screen rootScreen = AppUI.getCurrent().getTopLevelWindowNN()
.getFrameOwner();
if (!(rootScreen instanceof Window.HasWorkArea)) {
return;
}
Window.HasWorkArea hasWorkAreaRoot = (Window.HasWorkArea) rootScreen;
WebAppWorkArea workArea = (WebAppWorkArea) hasWorkAreaRoot.getWorkArea();
TabSheetBehaviour tabSheet = workArea.getTabbedWindowContainer()
.getTabSheetBehaviour();
После этого подписаться на закрытие окна с помощью Screen#addAfterCloseListener
и воспользоваться API tabbed контейнера:
screen.addAfterCloseListener(e -> {
// choose required tab
tabSheet.setSelectedTab(...);
});
1 симпатия
Коллега подсказал более изящное решение:
screen.addAfterCloseListener(e -> {
screens.showFromNavigation(this);
});
Это не совсем активация, более того, в определённой ситуации может открыться дубликат
а можно по подробнее про определенную ситуацию ?
Если экран поддерживает множественное открытие (см. Screen#isMultipleOpen
), то дубликат будет всегда появляться.
В противном случае дубликат будет открыт в зависимости от результата вызова Screen#isSameScreen
.
1 симпатия