Действия
Action
– это интерфейс, который абстрагирует действие (другими словами, некоторую функцию) от визуального компонента. Такая абстракция полезна, когда одно и то же действие может быть вызвано из разных визуальных компонентов (например, кнопкой и из контекстного меню таблицы). Action
также определяет некоторые общие свойства, такие как заголовок, сочетания клавиш, признаки доступности и видимости, и т.д.
Действия могут быть объявлены декларативно в XML-дескрипторе экрана, либо программно путем наследования от класса BaseAction
. Также фреймворком предоставляется набор стандартных действий для экранов, таблиц и компонентов выбора.
Визуальные компоненты, связанные с действием, могут быть двух типов:
-
Визуальный компонент, содержащий одно действие, реализует интерфейс
HasAction
. Например, button.Связь компонента с действием осуществляется путем вызова метода
HasAction.setAction()
. -
Визуальный компонент, содержащий несколько действий, реализует интерфейс
HasActions
. Это например dataGrid, entityComboBox, entityPicker.Действия добавляются компоненту вызовом метода
HasActions.addAction()
. Реализация этого метода в компоненте проверяет, нет ли уже в нем действия с таким же идентификатором. Если есть, то имеющееся действие будет заменено на новое переданное. Поэтому можно, например, декларировать стандартное действие в дескрипторе экрана, а затем в контроллере создать новое с переопределенными методами и добавить компоненту. -
Сам экран также может содержать действия. Их можно определить в элементе верхнего уровня
<actions>
XML-дескриптора, или добавить программно используя методgetViewActions.addAction()
контроллера экрана.