-
Notifications
You must be signed in to change notification settings - Fork 163
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
23 changed files
with
3,078 additions
and
1 deletion.
There are no files selected for viewing
67 changes: 67 additions & 0 deletions
67
...extensions/src/main/java/de/agilecoders/wicket/extensions/slider/AjaxBootstrapSlider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,67 @@ | ||
package de.agilecoders.wicket.extensions.slider; | ||
|
||
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior; | ||
import org.apache.wicket.ajax.AjaxRequestTarget; | ||
import org.apache.wicket.model.IModel; | ||
import org.apache.wicket.request.cycle.RequestCycle; | ||
|
||
import java.io.Serializable; | ||
import java.util.HashMap; | ||
import java.util.Map; | ||
|
||
/** | ||
* AjaxBootstrapSlider: ajaxified version of Slider. | ||
*/ | ||
public class AjaxBootstrapSlider<T extends ISliderValue, N extends Number> extends BootstrapSlider<T,N> { | ||
|
||
private AbstractDefaultAjaxBehavior behavior; | ||
|
||
public enum SliderEvent { | ||
slide, //This event fires when the slider is dragged | ||
slideStart, //This event fires when dragging starts The new slider value | ||
slideStop, //This event fires when the dragging stops or has been clicked on The new slider value | ||
change | ||
} | ||
|
||
public interface EventHandler<T extends ISliderValue> extends Serializable { | ||
|
||
public void onAjaxEvent(AjaxRequestTarget target, T newValue); | ||
} | ||
|
||
private final Map<SliderEvent, EventHandler> handlers = new HashMap<SliderEvent, EventHandler>(); | ||
|
||
public AjaxBootstrapSlider(String id, IModel<T> model, Class<T> typeClass) { | ||
super(id, model, typeClass); | ||
|
||
behavior = new AbstractDefaultAjaxBehavior() { | ||
@Override | ||
protected void respond(AjaxRequestTarget target) { | ||
SliderEvent event = SliderEvent.valueOf(RequestCycle.get().getRequest().getRequestParameters().getParameterValue("event").toString()); | ||
AjaxBootstrapSlider.EventHandler<T> handler = handlers.get(event); | ||
T value = (T)newInstance().fromString(RequestCycle.get().getRequest().getRequestParameters().getParameterValue("value").toString()); | ||
getModel().setObject(value); | ||
if(handler != null) { | ||
handler.onAjaxEvent(target, value); | ||
} | ||
} | ||
}; | ||
add(behavior); | ||
} | ||
|
||
public AjaxBootstrapSlider addHandler(SliderEvent event, EventHandler<T> handler) { | ||
handlers.put(event, handler); | ||
return this; | ||
} | ||
|
||
@Override | ||
protected void configEvents(StringBuilder builder) { | ||
CharSequence url = behavior.getCallbackUrl(); | ||
for(SliderEvent event: handlers.keySet()) { | ||
builder.append(".on('").append(event.name()).append("',").append("function(value) {\n"); | ||
builder.append("var ep={};\n").append("ep['event']='").append(event.name()).append("';\n"); | ||
builder.append("ep['value']=value['value'];\n"); | ||
builder.append("Wicket.Ajax.get({'u': '").append(url).append("', 'ep': ep").append("});"); | ||
builder.append("\n})"); | ||
} | ||
} | ||
} |
25 changes: 25 additions & 0 deletions
25
...ons/src/main/java/de/agilecoders/wicket/extensions/slider/AjaxNumericBootstrapSlider.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
package de.agilecoders.wicket.extensions.slider; | ||
|
||
import de.agilecoders.wicket.extensions.slider.util.*; | ||
import org.apache.wicket.model.IModel; | ||
|
||
/** | ||
* AjaxNumericBootstrapSlider: version of Ajaxified slider that makes easier to work with numeric values. | ||
*/ | ||
public class AjaxNumericBootstrapSlider<T extends Number> extends AjaxBootstrapSlider<INumericValue<T>, T> { | ||
|
||
public AjaxNumericBootstrapSlider(String id, IModel<T> model) { | ||
super(id, new NumericModel(model), (Class<INumericValue<T>>)getSliderClass(model.getObject().getClass())); | ||
} | ||
|
||
private static Class<? extends INumericValue> getSliderClass(Class<?> typeClass) { | ||
if(Double.class.isAssignableFrom(typeClass)) { | ||
return DoubleValue.class; | ||
} else if(Integer.class.isAssignableFrom(typeClass)) { | ||
return IntegerValue.class; | ||
} else { | ||
return LongValue.class; | ||
} | ||
|
||
} | ||
} |
Oops, something went wrong.