CreateAction в LookupPickerField

Добрый день.

Часто необходимо создать новый экземпляр сущности, если его нет при выборе из lookupPickerField. Было бы удобно, если бы это можно было сделать сразу из lookupPickerField, а не открывать browse экран и из него создавать, а потом выбирать.

Добрый день!

Вы можете добавить в LookupPIckerField произвольные действия, например:

Произвольные действия в XML-дескрипторе

<pickerField datasource="carDs" property="colour">
    <actions>
        <action id="lookup"/>
        <action id="show" icon="PICKERFIELD_OPEN"
                invoke="showColour" caption=""/>
    </actions>
</pickerField>

Метод showColour, определенный в атрибуте invoke должен быть реализован в контроллере экрана.

Программно задать произвольное действие можно следующим образом:

@Inject
protected PickerField colourField;

@Override
public void init(Map<String, Object> params) {
    colourField.addAction(new AbstractAction("show") {
        @Override
        public void actionPerform(Component component) {
            showColour(colourField.getValue());
        }

        @Override
        public String getCaption() {
            return "";
        }

        @Override
        public String getIcon() {
            return "icons/show.png";
        }
    });
}

Live Demo

3 симпатии

Добрый день, Глеб!

Спасибо! Не знал про эту возможность.