package sushi.application.components.form; import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.Model; /** * This button provides an ajax behavior to block the UI while processing a request. * The {@link BlockingAjaxButton} must be placed in a {@link BlockingForm}. */ public class BlockingAjaxButton extends AjaxButton { private static final long serialVersionUID = 1L; public BlockingAjaxButton(String id, Form<?> form) { super(id, form); addOnClickBehavior(); } public BlockingAjaxButton(String id, Model<String> model) { super(id, model); addOnClickBehavior(); } private void addOnClickBehavior(){ add(new AjaxEventBehavior("onclick") { private static final long serialVersionUID = 1L; @Override protected void onEvent(AjaxRequestTarget target) { target.appendJavaScript("$.blockUI();"); } }); } @Override public void onSubmit(AjaxRequestTarget target, Form<?> form) { super.onSubmit(target, form); target.appendJavaScript("$.unblockUI();"); } }