/* (c) 2014 - 2016 Open Source Geospatial Foundation - all rights reserved * (c) 2001 - 2013 OpenPlans * This code is licensed under the GPL 2.0 license, available at the root * application directory. */ package org.geoserver.importer.web; import org.apache.wicket.Component; import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.ajax.AjaxEventBehavior; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.OnDomReadyHeaderItem; import org.apache.wicket.markup.html.form.Radio; import org.apache.wicket.markup.html.form.RadioGroup; import org.apache.wicket.model.IModel; import org.apache.wicket.util.string.AppendingStringBuffer; public abstract class AjaxRadio<T> extends Radio<T> { private static final long serialVersionUID = 1L; public abstract void onAjaxEvent(AjaxRequestTarget target); public AjaxRadio(String id, IModel<T> model) { super(id, model); addAjaxBehavior(); setOutputMarkupId(true); } private void addAjaxBehavior() { add(new AjaxEventBehavior("click") { private static final long serialVersionUID = 1L; protected void onEvent(final AjaxRequestTarget target) { RadioGroup<T> radioGroup = getEnclosingRadioGroup(); radioGroup.processInput(); onAjaxEvent(target); } }); } private RadioGroup<T> getEnclosingRadioGroup() { RadioGroup<T> group = (RadioGroup<T>) findParent(RadioGroup.class); if (group == null) { throw new WicketRuntimeException( "Radio component [" + getPath() + "] cannot find its parent RadioGroup. All Radio components must be a child of or below in the hierarchy of a RadioGroup component."); } return group; } }