Действия
Action
– это интерфейс, который абстрагирует действие (другими словами, некоторую функцию) от визуального компонента. Это особенно полезно, когда одно и то же действие может быть вызвано из разных визуальных компонентов (например, из контекстного меню кнопки и таблицы). Action
также определяет некоторые общие свойства, такие как заголовок, сочетания клавиш, признаки доступности и видимости и т.д.
Действия могут быть объявлены декларативно, либо программно путем наследования от класса BaseAction. Также фреймворком предоставляется набор стандартных действий для таблиц и компонентов выбора.
Визуальные компоненты, связанные с действием, могут быть двух типов:
-
Визуальный компонент, содержащий одно действие, реализует интерфейс
ActionOwner
. Это Button и LinkButton.Связь компонента с действием осуществляется путем вызова метода
ActionOwner.setAction()
. -
Визуальный компонент, содержащий несколько действий, реализует интерфейс
ActionsHolder
. ЭтоWindow
,Fragment
,DataGrid
,Table
и ее наследники,Tree
, PopupButton, EntityPicker, EntityComboBox.Действия добавляются компоненту вызовом метода
ActionsHolder.addAction()
. Реализация этого метода в компоненте проверяет, нет ли уже в нем действия с таким же идентификатором. Если есть, то имеющееся действие будет заменено на новое переданное. Поэтому можно, например, декларировать стандартное действие в дескрипторе экрана, а затем в контроллере создать новое с переопределенными методами и добавить компоненту.