All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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