Действия

Action – это интерфейс, который абстрагирует действие (другими словами, некоторую функцию) от визуального компонента. Это особенно полезно, когда одно и то же действие может быть вызвано из разных визуальных компонентов (например, из контекстного меню кнопки и таблицы). Action также определяет некоторые общие свойства, такие как заголовок, сочетания клавиш, признаки доступности и видимости и т.д.

Действия могут быть объявлены декларативно, либо программно путем наследования от класса BaseAction. Также фреймворком предоставляется набор стандартных действий для таблиц и компонентов выбора.

Визуальные компоненты, связанные с действием, могут быть двух типов:

  • Визуальный компонент, содержащий одно действие, реализует интерфейс ActionOwner. Это Button и LinkButton.

    Связь компонента с действием осуществляется путем вызова метода ActionOwner.setAction().

  • Визуальный компонент, содержащий несколько действий, реализует интерфейс ActionsHolder. Это Window, Fragment, DataGrid, Table и ее наследники, Tree, PopupButton, EntityPicker, EntityComboBox.

    Действия добавляются компоненту вызовом метода ActionsHolder.addAction(). Реализация этого метода в компоненте проверяет, нет ли уже в нем действия с таким же идентификатором. Если есть, то имеющееся действие будет заменено на новое переданное. Поэтому можно, например, декларировать стандартное действие в дескрипторе экрана, а затем в контроллере создать новое с переопределенными методами и добавить компоненту.