3.5.4.6. OptionDialogFacet
用 OptionDialogFacet facet 可以预配置 选项对话框。用声明式的方法定义选项对话框,而可以替代 Dialogs.createOptionDialog() 方法。OptionDialogFacet 用界面 xml 描述的 facets 元素定义。
组件的 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();
}
optionDialog 带 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 按钮时调用的处理器。 |