Hi Marco,
I see a quite simple solution with Wicket 6 for this. I think you just
start with your project (or even this is just a prototype?) so you
better use "the latest and greatest" :-)
What I mean is to use the new AjaxChannel.Type.Active. The active type
prevents a second Ajax call in the same channel while there is a still
running Ajax call in this channel.
The code is as simple as:
@Override
protected void updateAjaxAttributes(AjaxRequestAttributes attrs) {
super.updateAjaxAttributes(attrs);
attrs.setAjaxChannel(new AjaxChannel("modalClose", Type.Active));
}
For more about the goodies in Wicket 6 read:
http://wicketinaction.com/2012/07/wicket-6-javascript-improvements/
In Wicket 1.5 you will have to add some custom JavaScript to prevent
the second request. You can unbind the event, or add a flag for
example.
On Wed, Sep 5, 2012 at 12:04 PM, Marco Di Sabatino Di Diodoro
<[email protected]> wrote:
> Hi all,
>
> I configure into Apache Syncope the possibility to close ModalWindow with ESC
> key press event.
>
> public class CloseOnESCBehavior extends AbstractDefaultAjaxBehavior {
>
> private static final long serialVersionUID = 5826308247642534260L;
> private ModalWindow modalWindow;
>
> public CloseOnESCBehavior(ModalWindow modalWindow) {
> this.modalWindow = modalWindow;
> }
>
> private static final String PRE_JS = "$(document).ready(function() {\n"
> + "$(document).bind('keyup', function(evt) {\n"
> + " if (evt.keyCode == 27){\n";
>
> private static final String POST_JS = "\n evt.preventDefault();\n"
> + "evt.stopImmediatePropagation();\n"
> + " }\n"
> + " });\n"
> + "});";
>
> @Override
> protected void respond(final AjaxRequestTarget target) {
> modalWindow.close(target);
> }
>
> @Override
> protected String findIndicatorId() {
> return null;
> }
>
> @Override
> public void renderHead(final Component component, final IHeaderResponse
> response) {
> response.renderJavaScript(new
> StringBuilder(PRE_JS).append(getCallbackScript())
> .append(POST_JS).toString(),
> "closeModalOnEsc");
> }
>
> In the modal page:
>
> add(new CloseOnESCBehavior(window));
>
> It work correctly with Chrome and Safari. With Firefox, if I press the ESC
> key twice quickly before the window closes the console return an error:
>
> ERROR: Wicket.Ajax.Call.failure: Error while parsing response: Could not find
> root <ajax-response> element
>
> Regards
> Marco
>
>
> --
>
> Dott. Marco Di Sabatino Di Diodoro
> Tel. +39 3939065570
>
> Tirasa S.r.l.
> Viale D'Annunzio 267 - 65127 Pescara
> Tel +39 0859116307 / FAX +39 0859111173
> http://www.tirasa.net
>
> Apache Syncope PPMC Member
> http://people.apache.org/~mdisabatino
>
>
>
>
--
Martin Grigorov
jWeekend
Training, Consulting, Development
http://jWeekend.com
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]