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