3.5.5.2.2. Стандартные действия поля выбора
В платформе определен набор стандартных действий для компонентов выбора PickerField, LookupPickerField и SearchPickerField.
Пример использования стандартных действий в компоненте выбора:
<pickerField id="userPickerField" dataContainer="employeeDc" property="user">
    <actions>
        <action id="lookup" type="picker_lookup"/>
        <action id="open" type="picker_open"/>
        <action id="clear" type="picker_clear"/>
    </actions>
</pickerField> 
  Стандартные действия для компонентов выбора включают в себя следующие типы:
-  
picker_lookup- действие, определяемое классомcom.haulmont.cuba.gui.actions.picker.LookupAction. It is designed to select an entity instance from a lookup screen and set it to the picker field. Предназначено для выбора экземпляра сущности в отдельном экране выбора и установки его в качестве значения компонента. -  
picker_open- действие, определяемое классомcom.haulmont.cuba.gui.actions.picker.OpenAction. Предназначено для открытия экрана редактирования экземпляра сущности, являющегося текущим значением компонента. -  
picker_clear- действие, определяемое классомcom.haulmont.cuba.gui.actions.picker.ClearAction. Предназначено для очистки (то есть установки вnull) текущего значения компонента. 
Для основных параметров стандартных действий определены значения по умолчанию: заголовки, значки, горячие клавиши, а также стандартное поведение при вызове действия. Вы можете передать свои собственные значения основных параметров декларативно в XML так же, как и для любого другого действия. Например, можно установить для действия другой значок:
<action id="open" type="picker_open" icon="USER"/> 
  Для того чтобы изменить стандартное поведение действия, необходимо подписаться на событие ActionPerformedEvent для этого действия в контроллере экрана. Код стандартного действия не будет выполняться, если для него определён альтернативный action listener. По сути, обработчик события ActionPerformedEvent переопределяет стандартное поведение действия.
В следующем примере мы переопределяем стандартное поведение действия picker_lookup, чтобы выбирать экземпляр сущности User в конкретном экране, открываемом в режиме модального диалога:
public class CustomerBrowse extends StandardLookup<Customer> {
    @Inject
    private ScreenBuilders screenBuilders;
    @Inject
    private PickerField<User> userPickerField;
    @Subscribe("userPickerField.lookup")
    protected void onUserPickerFieldLookupActionPerformed(Action.ActionPerformedEvent event) {
        screenBuilders.lookup(User.class, this)
                .withField(userPickerField)
                .withScreenClass(UserBrowser.class) // specific lookup screen
                .withLaunchMode(OpenMode.DIALOG)    // open as modal dialog
                .build()
                .show();
    } 
  Более подробно о переопределении действий см. в описании бина ScreenBuilders.