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]