Блокировка всего пользовательского интерфейса в процессе фоновой задачи

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

Есть ли в jmix возможность заблокировать все элементы пользовательского интерфейса на время выполнения длительной операции (несколько секунд)?

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

По умолчанию все продолжительные операции блокируют интерфейс Jmix приложения, но вы можете запустить свою задачу в BackgroundTask'е и запретить закрывать диалоговое окно:

image

Пример:

XML:

<button id="startProcessBtn" text="Start process"/>

Controller:

    @Autowired
    private Dialogs dialogs;

    @Subscribe(id = "startProcessBtn", subject = "clickListener")
    public void onStartProcessBtnClick(final ClickEvent<JmixButton> event) {
        BackgroundTask<Integer, Void> task = new BlockTask();
        dialogs.createBackgroundTaskDialog(task)
                .withHeader("Locking the window")
                .withText("Please wait!")
                .withTotal(10)
                .withShowProgressInPercentage(true)
                .withCancelAllowed(false)
                .open();
    }

    private class BlockTask extends BackgroundTask<Integer, Void> {

        public BlockTask() {
            super(10, TimeUnit.MINUTES, TaskDetailView.this);
        }

        @Override
        public Void run(TaskLifeCycle<Integer> taskLifeCycle) throws Exception {
            for (int i = 0; i <= 10; i++) {
                Thread.sleep(1000);
                taskLifeCycle.publish(i);
            }
            return null;
        }
    }

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