LookupPickerField и диалоговое окно

Если рассматривать пример Клиент/Заказ (Customer/Order) из “Руководства по разработке приложений”, то при заполнении заказа (Order) можно указать клиента (Customer) выбрав его из списка, который открывается в поле Customer через LookupPickerField.Этот список открывается в отдельном окне во весь экран. Можно ли сделать так, чтобы он открывался в диалоговом окне?

https://doc.cuba-platform.com/manual-7.0-ru/img/quick_start/order_edit.png

В конструкторе экрана посмотрите закладку Properties у LookupPickerField.
Там есть Actions Edit
image
Далее для действия lookup выбираете тип открытия окна
image

Какая версия студии и платформы?
У меня в студии (не самая последняя, 9-я какая-то) нет таких параметров.
2019-07-05%2013%2012%2048
При добавлении этого свойства руками в XML, оно не работает, игнорируется.

`<pickerField id="customerField" property="customer" >
     <actions>
         <action id="lookup" type="picker_lookup" openType="DIALOG"/>
         <action id="clear" type="picker_clear"/>
     </actions>

`

Посмотрите описан ли этот режим в контроллере открываемого экрана.

    <dialogMode height="600"
                width="800"/>

Или в аннотации к классу контроллера, если платформа 7.

Спасибо.
Аннотация @DialogMode(forceDialog = true) работает.
В XML все теги <dialogMode> игнорируются. Версия платформы 7.0.7.

это, вроде, заставит открываться в диалогом окне даже при открытии из списка… посмотрите другие параметры аннотации.

1 симпатия

Что делать есть в приложении надо иметь окно Browse как стандартное для просмотра значений, так и открываемое в диалоговом режиме для выбора значения при заполнении формы? Как я уже отмечал ранее <dialogMode height="600" width="800"/> и <action id="lookup" type="picker_lookup" openType="DIALOG"/>
в XML не работают (платформа 7.0.8). Работает только @DialogMode(forceDialog = true) в классе, но это не позволяет использовать один класс для двух разных вариантов. Можно было бы сделать два класса, каждый со своим XML - один с аннотаций, другой - без. Но как указать какой вариант экрана использовать в pickerField я не нашел. Есть ли выход в такой ситуации?

Цитата
Есть ли выход в такой ситуации?

Конечно есть, и он описан в документации.

Переопределите стандартное действие picker_lookup на вызывающем экране и вызывайте экран выбора в режиме диалога там, где это нужно в UI.
Приметно так:

@Subscribe("myPickerField.lookup")
    protected void onMyPickerFieldLookupActionPerformed(Action.ActionPerformedEvent event) {
        screenBuilders.lookup(MyEntity.class, this)
                .withField(myPickerField)
                .withScreenClass(MyEntityBrowser.class) // Класс контроллера экрана для lookup
                .withLaunchMode(OpenMode.DIALOG)    // Нужный вам режим открытия экрана
                .build()
                .show();
    }
2 симпатии