Действия

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

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

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

  • Визуальный компонент, содержащий одно действие, реализует интерфейс HasAction. Например, button.

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

  • Визуальный компонент, содержащий несколько действий, реализует интерфейс HasActions. Это например dataGrid, entityComboBox, entityPicker.

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

  • Сам экран также может содержать действия. Их можно определить в элементе верхнего уровня <actions> XML-дескриптора, или добавить программно используя метод getViewActions.addAction() контроллера экрана.