I am not sure how to wait for the result of the confirm dialog. But
the code below may solve your problem "hide the dialog when the user
clicks yes". Do let me know if I have missed something:
public void showDialog() {
final LayoutDialog dialog = new LayoutDialog(new
LayoutDialogConfig(), null,
null, null, null, null);
dialog.setSize("400", "400");
dialog.addButton("hahaha");
dialog.show();
dialog.addDialogListener(new DialogListenerAdapter() {
// boolean result = false; // not needed
final LayoutDialog innerRef = dialog;
public boolean doBeforeHide(LayoutDialog dialog) {
if (true) // form.isDirty()
{
MessageBox.confirm("Close?", "Unsaved changes. Close really?",
new MessageBox.ConfirmCallback() {
public void execute(String btnID) {
if (btnID.equalsIgnoreCase("yes")) {
innerRef.purgeListeners();
innerRef.hide();
}
}
});
// return result;
return false;
}
else
return true;
}
});