timer

Фасет timer предназначен для запуска кода UI через указанные интервалы времени.

Действие таймера инициируется из браузера как запрос пользователя, и его обработчик может обновлять компоненты UI. Таймер прекращает работу, когда экран, для которого он был создан, закрывается.

Основное использование

Добавьте timer в элемент facets XML-дескриптора экрана:

<facets>
    <timer id="timer" delay="3000" autostart="true" repeating="true"/>
</facets>

Создайте обработчик TimerActionEvent:

@Autowired
private Notifications notifications;

@Subscribe("timer")
public void onTimerTimerAction(final Timer.TimerActionEvent event) {
    notifications.show("Timer action");
}

Обработчик будет вызываться каждые 3 секунды после открытия экрана.

Атрибуты

timer определяется в элементе facets XML-дескриптора экрана и имеет следующие атрибуты:

delay

Обязательный атрибут. Определяет интервал срабатывания таймера в миллисекундах.

autostart

Необязательный атрибут. Значение по умолчанию — false, что означает, что таймер начнет работу только при вызове его метода start(). Если установлено значение true, таймер запускается сразу после открытия экрана.

repeating

Необязательный атрибут. Если атрибут установлен в true, таймер работает циклически с равными интервалами, определенными в атрибуте delay. В противном случае таймер выполняется только один раз по истечении таймаута, указанного в атрибуте delay, после запуска таймера.

Обработчики

Чтобы сгенерировать заглушку обработчика в Jmix Studio, используйте вкладку Handlers панели инспектора Jmix UI, или команду Generate Handler, доступную на верхней панели контроллера экрана и через меню CodeGenerate (Alt+Insert / Cmd+N).

TimerActionEvent

TimerActionEvent срабатывает после прохождения указанного времени в атрибуте delay с момента запуска таймера. Если атрибут repeating установлен в true, это событие отправляется периодически до тех пор, пока таймер не будет остановлен.

Чтобы зарегистрировать обработчик программно, используйте метод addTimerActionListener() фасета.

TimerStopEvent

TimerStopEvent отправляется, когда таймер останавливается вызовом метода stop() фасета.

Чтобы зарегистрировать обработчик программно, используйте метод addTimerStopListener() фасета.