Hi Martin,

On Sep 5, 2012, at 12:20 PM, Martin Grigorov wrote:

> 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" :-)

We can not upgrade to Wicket 6 in this moment.

> 
> 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.

I tried to use unbind() and flag but always return me the same error. How can I 
prevent the second request?

Thanks
Marco

> 
> On Wed, Sep 5, 2012 at 12:04 PM, Marco Di Sabatino Di Diodoro
> <marco.disabat...@tirasa.net> 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: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
> 

--

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




Reply via email to