You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@pivot.apache.org by Tomas Stenlund <to...@telia.com> on 2011/09/25 20:53:25 UTC
Handling dialog ENTER & ESC
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
Re: Handling dialog ENTER & ESC
Posted by Tomas Stenlund <to...@telia.com>.
Thanks,
that was exactly what I was trying to do but failed in the
previewDialogClose. But now I see why ! I misread the signature of the
previewDialogClose, i.e. that it had the same parameter as the
dialogClosed and therefore misread the boolean as "modal" instead of
"result". I was trying to do a getResult() on the dialog in
previewDialogClose but that values is always false, regardless of the
result.
Now it works like a charm.
Cheers,
Tomas
On 09/26/2011 05:46 AM, Roger and Beth Whitcomb wrote:
> 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
>>
>>
>>
>
Re: Handling dialog ENTER & ESC
Posted by Roger and Beth Whitcomb <Ro...@rbwhitcomb.com>.
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
>
>
>