ProgressBar

ProgressBar демонстрирует статус выполнения процесса. Прогресс может быть определенным или неопределенным. Используйте ProgressBar, чтобы показать текущий процесс, для завершения которого требуется заметное время.

progress bar background task

XML-имя компонента: progressBar.

Определенный процесс

В приведенном ниже примере будет использоваться механизм фоновых задач.

Смоделируем ситуацию, в которой можно отслеживать текущую стадию процесса:

<progressBar id="progressBar" width="100%" />
@Autowired
protected ProgressBar progressBar;
@Autowired
protected BackgroundWorker backgroundWorker;

private static final int ITERATIONS = 6;

@Subscribe
protected void onInit(InitEvent event) {
    BackgroundTask<Integer, Void> task = new BackgroundTask<Integer, Void>(100) {
        @Override
        public Void run(TaskLifeCycle<Integer> taskLifeCycle) throws Exception {
            for (int i = 1; i <= ITERATIONS; i++) {
                TimeUnit.SECONDS.sleep(1); (1)
                taskLifeCycle.publish(i);
            }
            return null;
        }

        @Override
        public void progress(List<Integer> changes) {
            double lastValue = changes.get(changes.size() - 1);
            progressBar.setValue(lastValue / ITERATIONS); (2)
        }
    };

    BackgroundTaskHandler taskHandler = backgroundWorker.handle(task);
    taskHandler.execute();
}
1 Некая задача, требующая времени для выполнения
2 Здесь устанавливается значение компонента, которым должно быть число типа double от 0.0 до 1.0.

Неопределенный процесс

Если выполняемый процесс не может передавать информацию о прогрессе, то с помощью атрибута indeterminate можно задать отображение неопределенного состояния индикатора. Если значение атрибута равно true, то индикатор отображает неопределенное состояние. По умолчанию false.

Например:

<progressBar indeterminate="true" width="200px"/>
progress bar indeterminate

Стили

Чтобы изменить форму индикатора на точку, перемещающуюся по полосе, вместо растущей полосы, используйте атрибут stylename со значением point:

progress bar point

По умолчанию неопределенный индикатор представляет собой горизонтальную полосу. Чтобы отобразить ProgressBar в виде крутящегося колесика, установите для атрибута stylename значение indeterminate-circle.

progress bar circle

События и слушатели

Чтобы сгенерировать заглушку слушателя в Jmix Studio, выберите компонент в XML-дескрипторе экрана или на панели иерархии Jmix UI и используйте вкладку Handlers на панели инспектора Jmix UI.

В качестве альтернативы вы можете воспользоваться кнопкой Generate Handler на верхней панели контроллера экрана.

ValueChangeEvent

ValueChangeEvent<Double> отправляется при изменении значений компонента и имеет следующие методы:

  • getValue() - возвращает число между 0.0 и 1.0, соответствующее текущему статусу прогресса, где 1.0 означает выполненный процесс, а 0.0 – не начатый.

  • getPrevValue() - возвращает такие же значения, но соответствующие статусу процесса на предыдущем этапе.

Для программной регистрации слушателя события используйте метод компонента addValueChangeListener().

ContextHelpIconClickEvent

Программное использование: вызовите метод компонента setContextHelpIconClickHandler().

Все XML-атрибуты

Просматривать и редактировать атрибуты, применимые к компоненту, можно с помощью панели инспектора Jmix UI в конструкторе экранов Studio.