package org.nocket.component.button; 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.IModel; /** * This button overlays the form with a semi-transparent area, to indicate that * there is an ongoing action an to avoid multiple submissions in the form. * * Warning: you will override mostly onSubmit() and onError(). If you do so, you * have to call the super methods implemented here, else the indicator area will * not close on action callback. * * @author blaz02 */ public abstract class DMDFormOverlayAjaxButton extends AjaxButton { private static final long serialVersionUID = 1L; public DMDFormOverlayAjaxButton(final String id) { this(id, null, null); } public DMDFormOverlayAjaxButton(final String id, final IModel<String> model) { this(id, model, null); } public DMDFormOverlayAjaxButton(final String id, final Form<?> form) { this(id, null, form); } public DMDFormOverlayAjaxButton(final String id, final IModel<String> model, final Form<?> form) { super(id, model, form); add(new DMDOnClickIndicatorAttributeModifier(this)); add(new DefaultButtonBehavior()); } @Override protected void onSubmit(AjaxRequestTarget target, Form<?> form) { target.appendJavaScript(DMDOnClickIndicatorAttributeModifier.getBlockerRemoveScript()); super.onSubmit(target, form); } @Override protected void onError(AjaxRequestTarget target, Form<?> form) { target.appendJavaScript(DMDOnClickIndicatorAttributeModifier.getBlockerRemoveScript()); super.onError(target, form); } }