package javaforce.webui;
/** Slider
*
* Requires IE10+
*
* @author pquiring
*/
public class Slider extends Component {
public static final int VERTICAL = 1;
public static final int HORIZONTAL = 2;
private int dir, min, max, step, pos;
public Slider(int dir, int min, int max, int step) {
this.dir = dir;
this.min = min;
this.max = max;
this.step = step;
addAttr("min", Integer.toString(min));
addAttr("max", Integer.toString(max));
addAttr("step", Integer.toString(step));
int delta = max - min;
setWidth((delta + 32) + "px");
setHeight("32px");
switch (dir) {
case VERTICAL:
setClass("vslider");
this.setStyle("margin-top", delta + "px");
break;
case HORIZONTAL:
setClass("hslider");
break;
}
addEvent("onchange", "onSliderMove(event, this);");
}
public void setPos(int pos) {
if (pos < min) pos = min;
if (pos > max) pos = max;
this.pos = pos;
sendEvent("setpos", new String[] {"pos=" + pos});
}
public int getPos() {
return pos;
}
public String html() {
StringBuilder sb = new StringBuilder();
sb.append("<div class=cslider"); //slider container
int delta = max - min;
delta += 32;
switch (dir) {
case VERTICAL:
sb.append(" style='width:32px; height:" + delta + "px;'");
break;
case HORIZONTAL:
break;
}
sb.append(">");
sb.append("<input type='range'" + getAttrs() + ">");
sb.append("</div>");
return sb.toString();
}
public void onChanged(String args[]) {
int idx = args[0].indexOf("=");
pos = Integer.valueOf(args[0].substring(idx+1));
}
}