SWT keybinding ESC bzw. [x] bei Shell (modal)

wm

Mitglied
Ich habe ein Shell als modalen Dialog wie folgt:

Java:
Shell dialog = new Shell(activeShell, SWT.DIALOG_TRIM | SWT.RESIZE | SWT.APPLICATION_MODAL);

In dem Dialog wird ein Formular angezeigt. Habe einen Abbrechen-Button eingebaut. Bevor ich bei Betätigung des Abbrechen-Button den dialog.dispose(), mache ich eine Verifizierung über das Formular und es wird nochmals gefragt, ob fortgefahren werden soll, da die gemachten Eingaben verloren gehen.

Wenn ich aber die Taste ESC oder [x] betätige, wird das dialog-Fenster geschlossen ohne vorher die nötige Verifizierung von Benutzereingaben, es soll aber so wie beim Betätigen des Abbrechen-Button voher eine Verifizierung durchgeführt werden, wobei der Benutzer sich entscheiden darf, dann das Schließen des Dialogfensters zu verhindern.

Wie kann ich das am besten berwerkstelligen?
 
Für ESC, jetzt nur noch [x]
Java:
...
dialog.addListener(SWT.Traverse, new Listener() {

       public void handleEvent(Event event) {

              switch (event.detail) {
                case SWT.TRAVERSE_ESCAPE:
                     MyMethodValidate();
                     event.detail = SWT.TRAVERSE_NONE;
                     event.doit = false;
                     break;
              }
       }
});
...
 
und das [x] 😉

Java:
        dialog2.addListener(SWT.Close, new Listener() {

            public void handleEvent(Event e) {

                MessageBox dialog = new MessageBox(dialog2, SWT.OK | SWT.CANCEL | SWT.ICON_QUESTION);
                dialog.setText("Question");
                dialog.setMessage("Exit?");
                if (e.type == SWT.Close) {
                    e.doit = false;
                }
                if (dialog.open() != SWT.OK) {
                    return;
                }
                dialog2.dispose();
            }
        });
 

Zurück
Oben