Skip to content

Latest commit

 

History

History
85 lines (64 loc) · 6.49 KB

File metadata and controls

85 lines (64 loc) · 6.49 KB
LookupAction

LookupAction - действие поля выбора сущности, предназначенное для установки экземпляра сущности в поле из экрана выбора.

Действие реализовано классом com.haulmont.cuba.gui.actions.picker.LookupAction и объявляется в XML с помощью атрибута type="picker_lookup". Общие свойства действий можно конфигурировать с помощью атрибутов элемента action, подробнее см. раздел [declarative_actions]. Ниже рассматриваются параметры, специфичные для класса LookupAction.

Следующие параметры можно установить и в XML и в Java:

  • openMode - режим открытия экрана выбора, задаваемый значением перечисления OpenMode: NEW_TAB, DIALOG, и т.д. По умолчанию экран открывается в режиме THIS_TAB.

  • screenId - строковый идентификатор экрана выбора. По умолчанию используется экран, аннотированный @PrimaryLookupScreen, или имеющий идентификатор вида <entity_name>.lookup или <entity_name>.browse, например demo_Customer.browse.

  • screenClass - класс Java экрана выбора. Данный параметр имеет более высокий приоритет, чем screenId.

Например, если необходимо открыть определенный экран выбора в режиме диалога, действие можно сконфигурировать в XML следующим образом:

link:../../../../../../source/gui/std_actions/lookup/01.xml[role=include]

В качестве альтернативы, действие можно инжектировать в контроллер экрана и сконфигурировать, используя сеттеры:

link:../../../../../../source/gui/std_actions/lookup/02.java[role=include]

Далее рассматриваются параметры, которые можно сконфигурировать только программно в Java. Для генерации корректно аннотированных методов для этих параметров используйте закладку Handlers окна инструментов Component Inspector в Studio.

  • screenOptionsSupplier - обработчик, возвращающий объект ScreenOptions для передачи в открываемый экран выбора. Например:

    link:../../../../../../source/gui/std_actions/add/03.java[role=include]

    Возвращаемый объект ScreenOptions будет доступен в InitEvent открываемого экрана.

  • screenConfigurer - обработчик, принимающий экран выбора для его конфигурирования перед открытием. Например:

    link:../../../../../../source/gui/std_actions/add/04.java[role=include]

    Конфигуратор экрана вступает в действие, когда экран уже инициализирован, но еще не показан, то есть после InitEvent и AfterInitEvent, и до BeforeShowEvent.

  • selectValidator - обработчик, вызываемый когда пользователь нажимает Select в экране выбора. Он принимает объект, содержащий коллекцию выбранных сущностей. Первый элемент коллекции будет установлен в поле. Данный обработчик можно использовать для проверки выбора по каким-либо критериям. Обработчик должен вернуть true для того, чтобы процесс был продолжен и экран выбора закрылся. Например:

    link:../../../../../../source/gui/std_actions/lookup/05.java[role=include]
  • transformation - обработчик, вызываемый после того, как сущности выбраны и провалидированы в экране выбора. Он принимает коллекцию выбранных сущностей и может быть использован для того, чтобы преобразовать содержимое коллекции перед установкой сущности в поле. Например:

    link:../../../../../../source/gui/std_actions/lookup/06.java[role=include]
  • afterCloseHandler - обработчик, вызываемый после закрытия экрана выбора. Принимает AfterCloseEvent. Например:

    link:../../../../../../source/gui/std_actions/lookup/08.java[role=include]

Для того, чтобы произвести какие-либо проверки, или взаимодействовать с пользователем перед выполнением действия, необходимо подписаться на событие ActionPerformedEvent действия и в нужный момент вызвать метод execute(). Действие будет вызвано со всеми параметрами, которые были для него заданы. В примере ниже перед выполнением действия отображается диалог подтверждения:

link:../../../../../../source/gui/std_actions/lookup/09.java[role=include]

Можно также подписаться на ActionPerformedEvent, и вместо вызова метода execute() действия, использовать для открытия экрана выбора ScreenBuilders API напрямую. По сути, в этом случае все специфичные параметры действия игнорируются, и действуют только общие параметры: caption, icon, и т.д. Например:

link:../../../../../../source/gui/std_actions/lookup/10.java[role=include]