Создание экрана блокировки

Здравствуйте!
Прошу подсказать, есть ли в Jmix какие-либо стандартные решения для реализации окна блокировки.
Суть следующая: администратор нажимает кнопку и у всех пользователей, которые сейчас работают в приложении, а так же у тех, кто после нажатия кнопки войдет в приложение, открывается незакрываемый экран с сообщением о временной блокировке всего функционала.
Таким же образом должно происходить разблокирование.
Ищу способ открыть такое окно у всех пользователей. Пока что в голову приходит только переопределить класс Screen, внедрив в него проверку того включена ли блокировка и последующего вызова окна блокировки на этапе onBeforeShow.

Заранее благодарен за любые подсказки.

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

Вы можете создать собственную View для отображения в случае блокировки. Для этого такой экран не должен встраиваться в MainLayout, для этого достаточно не указывать layout="MainLayout" в @Route.

Пример экрана:

Контроллер:

@Route(value = "maintenance")
@ViewController("MaintenanceView")
@ViewDescriptor("maintenance-view.xml")
public class MaintenanceView extends StandardView {
}

Дескриптор:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<view xmlns="http://jmix.io/schema/flowui/view"
      title="msg://maintenanceView.title">
    <layout>
        <vbox id="text" width="100%" alignItems="CENTER">
            <p text="msg://maintenanceMessage"/>
        </vbox>
    </layout>
</view>

Далее в MainLayout вы можете сделать перенаправление по определенному условию на страницу блокировки, к примеру так:

@Route("")
@ViewController("MainView")
@ViewDescriptor("main-view.xml")
public class MainView extends StandardMainView {

    @Autowired
    private CurrentAuthentication currentAuthentication;

    @Subscribe
    public void onReady(final ReadyEvent event) {
        final User user = (User) currentAuthentication.getUser();
        //For example
        if (!user.getUsername().equals("admin")) {
            UI.getCurrent().getPage().open("/maintenance");
        }
    }
}

Результат:
image

С Уважением,
Никита

1 симпатия