Отключение стандартной кнопки "Закрыть(крестик)" в screen

Добрый день уважаемые разработчики. В некоторых screen’ах потребовалось отключить кнопку закрыть TAB(управление из меню), подскажите как бы ее отключить. Большое спасибо!

П.с. мультитаб отключен.

Добрый день, @mr.vvatcher!

Попробуйте воспользоваться следующим кодом:

@Subscribe
public void onInit(InitEvent event) {
    getWindow().setCloseable(false);
}

С уважением,
Глеб

Спасибо @durygin за ответ! Попробовал, не сработало :frowning:

Однако это навело меня на мысли попробовать AfterShowEvent с тем же кодом, я попробовал, и если в случае с кодом @durygin кнопка работала, то в случае с AfterShowEvent кнопка отображается но уже не работает.

@mr.vvatcher, да, вы правы, нужно подписаться на AfterShowEvent:

@Subscribe
protected void onAfterShow(AfterShowEvent event) {
    getWindow().setCloseable(false);
}

С уважением,
Глеб

1 симпатия

@durygin спасибо большое Глеб! Подскажи пожалуйста а как еще и видимость ее отключить?

@mr.vvatcher, попробуйте воспользоваться следующим кодом:

@UiController("sample_")
@UiDescriptor("new-screen.xml")
public class NewScreen extends Screen {

    @Inject
    protected Screens screens;
    @Inject
    protected UserSettingsTools userSettingsTools;
    
    @Subscribe
    protected void onAfterShow(AfterShowEvent event) {
        Screen rootScreen = screens.getOpenedScreens().getRootScreen();
        Component workAreaComponent = rootScreen.getWindow().getComponent("workArea");
        if (workAreaComponent instanceof AppWorkArea) {
            AppWorkArea.Mode appWindowMode = userSettingsTools.loadAppWindowMode();
            if (AppWorkArea.Mode.TABBED == appWindowMode) {
                // cuba.web.appWindowMode = TABBED
                TabSheetBehaviour tabSheet = ((WebAppWorkArea) workAreaComponent).getTabbedWindowContainer().getTabSheetBehaviour();
                TabWindowContainer windowContainer = (TabWindowContainer) tabSheet.getSelectedTab();
                String tabId = tabSheet.getTab(windowContainer);
                tabSheet.setTabClosable(tabId, false);
            } else if (AppWorkArea.Mode.SINGLE == appWindowMode) {
                // cuba.web.appWindowMode = SINGLE
                CubaSingleModeContainer singleModeContainer = ((WebAppWorkArea) workAreaComponent).getSingleWindowContainer();
                TabWindowContainer windowContainer = (TabWindowContainer) singleModeContainer.getWindowContainer();
                if (windowContainer != null) {
                    WindowBreadCrumbs breadCrumbs = windowContainer.getBreadCrumbs();
                    breadCrumbs.getComponent(breadCrumbs.getComponentCount() - 1);
                    com.vaadin.ui.Component closeBtn = breadCrumbs.getComponent(breadCrumbs.getComponentCount() - 1);
                    if (closeBtn instanceof CubaButton
                            && "c-closetab-button".equals(closeBtn.getStyleName())) {
                        closeBtn.setVisible(false);
                    }
                }
            }
        }
    }
}

С уважением,
Глеб

2 симпатии

Работает! Спасибо большое! :wink: