//
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;
}
}