org.wicketstuff.jquery.ui.slider.Slider Maven / Gradle / Ivy
package org.wicketstuff.jquery.ui.slider;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.markup.repeater.RepeatingView;
/**
 * An integration of JQuery UI Slider widget (http://docs.jquery.com/UI/Slider/slider)
 * 
 * @author Martin Grigorov 
 */
public abstract class Slider extends Panel
{
	private static final long serialVersionUID = 1L;
	private final SliderOptions sliderOptions;
	public Slider(final String wid, final SliderOptions sliderOptions,
		final SliderHandleOptions... sliderHandlesOptions)
	{
		super(wid);
		setOutputMarkupId(true);
		this.sliderOptions = sliderOptions;
		this.sliderOptions.setHandles(sliderHandlesOptions);
		final RepeatingView sliderHandles = new RepeatingView("sliderHandles");
		sliderHandles.setRenderBodyOnly(true);
		add(sliderHandles);
		if (sliderHandlesOptions != null && sliderHandlesOptions.length > 0)
		{
			for (int i = 0; i < sliderHandlesOptions.length; i++)
			{
				final SliderHandleOptions sliderHandleSettings = sliderHandlesOptions[i];
				final SliderHandle sliderHandle = new SliderHandle(sliderHandles.newChildId(),
					sliderHandleSettings);
				sliderHandles.add(sliderHandle);
			}
		}
		else
		{
			final SliderHandle sliderHandle = new SliderHandle("handle");
			sliderHandles.add(sliderHandle);
		}
		add(new SliderBehavior());
	}
	public SliderOptions getOptions()
	{
		return sliderOptions != null ? sliderOptions : new SliderOptions();
	}
	/**
	 * A callback method which will be called when any of the handles change its value
	 * 
	 * @param target
	 *            the current request target
	 * @param handleId
	 *            the HTML id of the handle that triggered this event
	 * @param newValue
	 *            the value of this handle
	 */
	public abstract void onChange(final AjaxRequestTarget target, final String handleId,
		final int newValue);
}
     © 2015 - 2025 Weber Informatics LLC | Privacy Policy