package org.geoserver.web.wicket;
import org.apache.wicket.Session;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.form.AjaxSubmitLink;
import org.apache.wicket.feedback.IFeedbackMessageFilter;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.FormComponent;
import org.geoserver.web.GeoServerBasePage;
/**
* A custom {@link AjaxSubmitLink} that:
* <ul>
* <li>does not trigger form processing, thus is invoked even if the form is not validating</li>
* <li>automatically adds the {@link GeoServerBasePage} feedback panel in the ajax target</li>
* </ul>
* When using it remember that you have to invoke {@link FormComponent#processInput()} on each
* component you need input from as the standard form processing has been skipped
* @author Andrea Aime
*/
@SuppressWarnings("serial")
public abstract class GeoServerAjaxFormLink extends AjaxSubmitLink {
public GeoServerAjaxFormLink(String id) {
super(id);
}
public GeoServerAjaxFormLink(String id, Form form) {
super(id, form);
}
@Override
public boolean getDefaultFormProcessing() {
return false;
}
@Override
protected final void onSubmit(AjaxRequestTarget target, Form form) {
onClick(target, form);
if(getPage() instanceof GeoServerBasePage) {
target.addComponent(((GeoServerBasePage) getPage()).getFeedbackPanel());
}
}
protected abstract void onClick(AjaxRequestTarget target, Form form);
}