OptionDialogFacet

Фасет OptionDialogFacet позволяет предварительно настраивать диалоговое окно опций. Декларативное определение диалогового окна заменяет существующий метод Dialogs.createOptionDialog().

XML-имя компонента: optionDialog.

Атрибуты

OptionDialogFacet определяется в элементе facets XML-дескриптора экрана и имеет следующие атрибуты:

Действия

Чтобы добавить кнопки для пользовательского отклика, используйте элемент actions XML-дескриптора экрана. Элементы action должны быть размещены внутри него. Например:

<optionDialog id="optionDialog">
    <actions>
        <action id="ok"
                caption="OK"
                icon="CHECK"
                primary="true"/>
        <action id="cancel"
                caption="Cancel"
                icon="BAN"
                description="The changes will not be saved"/>
    </actions>
</optionDialog>

Для настройки action существуют следующие атрибуты:

  • description - задает текст, который будет отображаться при наведении курсора на соответствующую button.

  • icon - задает значок для соответствующей button.

  • primary - определяет, будет ли соостветсвующая кнопка выделена и подсвечена как главная. Значение по умолчанию – false.

Чтобы реализовать собственную логику для action, используйте слушатель DialogActionPerformedEvent:

@Autowired
protected Notifications notifications;

@Install(to = "optionDialog.ok", subject = "actionHandler")
protected void onDialogOkAction(ActionsAwareDialogFacet.DialogActionPerformedEvent<OptionDialogFacet> event) {
    String actionId = event.getDialogAction().getId();
    notifications.create(Notifications.NotificationType.TRAY)
            .withCaption("Dialog action performed: " + actionId)
            .show();
}

Код внутри этого слушателя будет выполнен, когда пользователь нажмет кнопку с id="ok" в диалоговом окне опций.

Пример использования

<window xmlns="http://jmix.io/schema/ui/window"
        caption="msg://optionDialogFacetScreen.caption">
    <facets>
        <optionDialog id="optionDialog"
                      caption="Option Dialog"
                      message="Message"
                      onButton="optionDialogBtn"> (1)
            <actions>
                <action id="ok"
                        caption="OK"
                        icon="CHECK"
                        primary="true"/> (2)
                <action id="cancel"
                        caption="Cancel"
                        icon="BAN"
                        description="The changes will not be saved"/> (3)
            </actions>
        </optionDialog>
    </facets>
    <layout>
        <button id="optionDialogBtn"
                caption="Show OptionDialog"/> (4)
    </layout>
</window>
1 Определение OptionDialogFacet внутри элемента facets.
2 Добавляет первое action и устанавливает для атрибута primary значение true.
3 Добавляет второе action и определяет для него атрибут description.
4 Определение button, которая откроет диалоговое окно опций.

Все XML-атрибуты

Вы можете просматривать и редактировать применимые к фасету атрибуты с помощью панели инспектора Jmix UI в дизайнере экранов Studio.