//
package widgets; import java.awt.*; import java.util.*; public class Sliders extends BufferedApplet { Slider slider[] = new Slider[0]; boolean changed[] = new boolean[0]; int width, height; int y(int i, int n) { return i * height / n; } boolean more(int i) { return i < slider.length && slider[i] != null; } public void set(int i, double t) { } public void defineSliders(String labels) { width = bounds().width; height = bounds().height; int n; String label[] = new String[100]; StringTokenizer st = new StringTokenizer(labels); for (n = 0 ; st.hasMoreTokens() ; n++) label[n] = st.nextToken(); slider = new Slider[n]; changed = new boolean[n]; for (int i = 0 ; i < n ; i++) { slider[i] = new Slider(0, y(i,n), width, y(i+1,n) - y(i,n)); slider[i].label = label[i]; } damage = true; } public void setValues(String values) { StringTokenizer st = new StringTokenizer(values); for (int i = 0 ; st.hasMoreTokens() && more(i) ; i++) slider[i].setValue(.01 * (new Integer(st.nextToken())).intValue()); } public String getValues() { String values = ""; for (int i = 0 ; more(i) ; i++) { values += (changed[i] ? " +" : " ") + (int)(100 * slider[i].getValue() + .5); changed[i] = false; } return values; } java.applet.Applet outputApplet; public java.applet.Applet getOutputApplet() { if (outputApplet == null) outputApplet = getParameter("output") == null ? this : getAppletContext().getApplet(getParameter("output")); return outputApplet; } public java.applet.Applet applet(String s) { return getAppletContext().getApplet(s); } public void output(int i, double t) { } // this can be overridden public void render(Graphics g) { for (int i = 0 ; more(i) ; i++) { slider[i].render(g); output(i, slider[i].getValue()); } } public boolean mouseDown(Event e, int x, int y) { for (int i = 0 ; more(i) ; i++) if (slider[i].down(x, y)) break; return true; } public boolean mouseDrag(Event e, int x, int y) { for (int i = 0 ; more(i) ; i++) if (slider[i].drag(x, y)) { changed[i] = true; damage = true; break; } return true; } public boolean mouseUp(Event e, int x, int y) { for (int i = 0 ; more(i) ; i++) if (slider[i].up(x, y)) break; return true; } }