4 import javax.swing.SwingConstants;
6 import jsjava.awt.Dimension;
7 import jsjava.beans.PropertyChangeEvent;
8 import jsjava.beans.PropertyChangeListener;
9 import jsjavax.swing.JSlider;
10 import jsjavax.swing.event.ChangeEvent;
11 import jsjavax.swing.event.ChangeListener;
12 import swingjs.J2SRequireImport;
13 import swingjs.JSToolkit;
14 import swingjs.api.DOMNode;
16 @J2SRequireImport(swingjs.jquery.JQueryUI.class)
17 public class JSSliderUI extends JSComponentUI implements PropertyChangeListener, ChangeListener {
19 private JSlider jSlider;
20 private int min, max, val;
21 private String orientation;
23 protected DOMNode jqSlider;
24 private int z0 = Integer.MIN_VALUE;
32 JSToolkit.getJavaResource("swingjs/jquery/jquery-ui-slider.css");
33 JSToolkit.getJavaResource("swingjs/jquery/jquery-ui-slider.js");
36 public DOMNode getDOMObject() {
37 JSlider js = jSlider = (JSlider) c;
38 boolean isNew = (domNode == null);
40 domNode = wrap("div", id + "_wrap", jqSlider = DOMNode.createElement("div", id));
41 DOMNode.setAttr(domNode, "className", "swingjs");
42 orientation = (js.getOrientation() == SwingConstants.VERTICAL ? "vertical" : "horizontal");
43 min = js.getMinimum();
44 max = js.getMaximum();
52 me.$(me.jqSlider).slider({
53 orientation: me.orientation,
58 change: function( event, handle ) {
59 me.jqueryCallback(event, handle);
61 slide: function( event, handle ) {
62 me.jqueryCallback(event, handle);
78 private void setZ(boolean isNew) {
79 int z = JSToolkit.getZIndex(this, null);
83 System.out.println("JSSliderUI setting z to " + z);
84 DOMNode sliderTrack = null;
85 DOMNode sliderHandle = null;
89 * sliderTrack = this.domNode.firstChild;
90 * sliderHandle = sliderTrack.firstChild;
91 * sliderTrack.style["z-index"] = z++;
92 * sliderHandle.style["z-index"] = z++;
95 // mark the handle and track with the "swingjs-ui" class
96 // so as to ignore all mouse/touch events from Jmol._jsSetMouse();
98 $(sliderHandle).addClass("swingjs-ui");
99 $(sliderTrack).addClass("swingjs-ui");
104 * called from JavaScript via the hook added in getDOMObject
109 public void jqueryCallback(Object event, DOMNode ui) {
121 jSlider.setValue(val = value);
124 protected Dimension setHTMLSize(DOMNode obj, boolean addCSS) {
125 return (orientation == "horizontal" ? new Dimension(100, 20) : new Dimension(20, 100));
129 protected void installJSUI() {
130 jSlider.addChangeListener(this);
131 jSlider.addPropertyChangeListener(this);
135 protected void uninstallJSUI() {
136 jSlider.removeChangeListener(this);
137 jSlider.removePropertyChangeListener(this);
141 public void propertyChange(PropertyChangeEvent e) {
142 String prop = e.getPropertyName();
143 System.out.println(id + " propertyChange " + prop);
144 if (prop == "ancestor")
149 public void stateChanged(ChangeEvent e) {
152 if ((v = jSlider.getMinimum()) != min)
153 setSliderAttr("min", min = v);
154 if ((v = jSlider.getMaximum()) != max)
155 setSliderAttr("max", max = v);
156 if ((v = jSlider.getValue()) != val)
157 setSliderAttr("value", val = v);
161 private void setSliderAttr(String key, int val) {
162 System.out.println(id + " setting " + key + " = " + val);
168 * this.$(this.jqSlider).slider(a);