3.5.4.6. OptionDialogFacet
OptionDialogFacet
– это фасет, который обеспечивает возможность предварительной настройки Option Dialog. Декларативное описание диалога выбора заменяет существующий метод Dialogs.createOptionDialog()
. OptionDialogFacet
определяется в элементе facets
XML-дескриптора экрана.
XML-имя компонента: optionDialog
.
Пример использования:
<facets>
<optionDialog id="optionDialog"
caption="msg://optionDialogCaption"
message="msg://optionDialogMsg"
onAction="dialogAction">
<actions>
<action id="ok"
caption="msg://optDialogOk"
icon="CHECK"
primary="true"/>
<action id="cancel"
caption="msg://optDialogCancel"
icon="BAN"/>
</actions>
</optionDialog>
</facets>
Экран, настроенный с помощью OptionDialogFacet
, может быть показан явно с помощью метода show()
:
@Inject
protected OptionDialogFacet optionDialog;
@Subscribe("showDialog")
public void onShowDialogClick(Button.ClickEvent event) {
optionDialog.show();
}
Кроме того, фасет может быть подписан на действие (см. атрибут onAction) или кнопку (см. атрибут onButton) по идентификатору.
Диалог выбора содержит элемент actions
, который представляет собой список диалоговых действий.
Чтобы реализовать кастомную логику для диалогового действия, нужно создать соответствующий метод-обработчик в контроллере:
@Inject
protected OptionDialogFacet optionDialog;
@Inject
protected Notifications notifications;
@Install(to = "optionDialog.ok", subject = "actionHandler") (1)
protected void onDialogOkAction(DialogActionPerformedEvent<OptionDialogFacet> event) {
String actionId = event.getDialogAction().getId();
notifications.create(Notifications.NotificationType.TRAY)
.withCaption("Dialog action performed: " + actionId)
.show();
}
@Install(to = "optionDialog.cancel", subject = "actionHandler") (2)
protected void onDialogCancelAction(DialogActionPerformedEvent<OptionDialogFacet> event) {
String actionId = event.getDialogAction().getId();
notifications.create(Notifications.NotificationType.TRAY)
.withCaption("Dialog action performed: " + actionId)
.show();
}
1 | - обработчик, вызываемый при нажатии на кнопку OK в диалоге выбора. |
2 | - обработчик, вызываемый при нажатии на кнопку Cancel в диалоге выбора. |