package de.flower.common.ui.ajax;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.IAjaxCallDecorator;
/**
* Prevents double clicking of ajax links.
*
* Taken from Apache Wicket Cookbook, page 165.
*
*/
public class PreventDoubleClickAjaxCallDecorator implements IAjaxCallDecorator {
private static final String DATA_WICKET_BLOCKED = "data-wicket-blocked";
private static final String LATCH = "var locked=this.hasAttribute('" + DATA_WICKET_BLOCKED + "');"
+ "if (locked) { return false; } "
+ "this.setAttribute('" + DATA_WICKET_BLOCKED + "','locked');";
private static final String RESET = "this.removeAttribute('" + DATA_WICKET_BLOCKED + "');";
@Override
public CharSequence decorateScript(final Component component, final CharSequence script) {
return LATCH + script;
}
@Override
public CharSequence decorateOnSuccessScript(final Component component, final CharSequence script) {
return RESET + script;
}
@Override
public CharSequence decorateOnFailureScript(final Component component, final CharSequence script) {
return RESET + script;
}
}