Hi Tomas,
        The right way to do this would be as follows:
- For your OK and Cancel buttons, attach a ButtonPressListener, and in that 
code do this:
    @Override
    public void buttonPressed(Button button) {
        if (button == okButton) {
            dialog.close(true);
        }
        else if (button == cancelButton) {
            dialog.close(false);
        }
    }
- Then implement a DialogStateListener (or extend DialogStateListener.Adapter) 
and connect it to your dialog.  In this listener do the following:
    @Override
    public Vote previewDialogClose(Dialog dialog, boolean result) {
        // Closing on Escape or "Cancel" is always okay
        if (!result)
            return Vote.APPROVE;
        // If fields don't look right, deny the close
        if (!verifyFields())
            return Vote.DENY;
        // Everything is kosher then approve the close
        return Vote.APPROVE;
    }

~Roger Whitcomb

On 9/25/11 11:53 AM, Tomas Stenlund wrote:
Hi,

I'm after a design/code pattern for handling ENTER and ESC for dialogs (modal) as well as PushButtons performing the same function. When I press ENTER or ESC the dialog is closed and I can find out in the DialogStateListener which one was pressed (true,false) which I guess is the default behaviour of pivot. I use this to see if I should "commit" or "rollback" the changes in the dialog or not ( I use Cayenne ORM). I also have pushbuttons in the dialog that will yield the same functionality, i.e. close the dialog and send a true/false result. In this way I handle both ENTER, ESC and the pusbuttons the same way without having to listen to any keystrokes etc.

Now to my question, I was thinking of vetoing the close if the values in controls in the dialog are not correct. But I cannot determine if it is ENTER, ESCAPE or the pushbuttons that caused the "close" in the "veto" method in the listener. I need to know that because if Cancel-pushbutton or ESC was pressed I will never veto the close.

Hmm i'm a little unstructured here, but how do you go about doing this i.e. handling the keyboard ENTER, ESC as well as pushbuttons that does the same functionality ? Am I going about this in the wrong way, i.e. how to handle ENTER, ESC to make them perform the same

Thanks for any help,

Tomas



Reply via email to