/* sliders (scrollbars) */

import java.awt.*;

public class RGB extends java.applet.Applet implements Runnable{

 Thread runner;

Canvas can_r = new Canvas();
Canvas can_g = new Canvas();
Canvas can_b = new Canvas();
Label sr = new Label("Red", Label.CENTER);
Label sg = new Label("Green", Label.CENTER);
Label sb = new Label("Blue", Label.CENTER);

Scrollbar r=new Scrollbar(Scrollbar.VERTICAL,127,1,0,255);
Scrollbar g=new Scrollbar(Scrollbar.VERTICAL,127,1,0,255);
Scrollbar b=new Scrollbar(Scrollbar.VERTICAL,127,1,0,255);

public void init() {
    setLayout(new GridLayout(2,3,0,0));
    add(r);  add(g);  add(b);	
    add(can_r); add(can_g);  add(can_b);    
  }

public void start() {
    if (runner == null) {
      runner = new Thread(this);
      runner.start();
      }
  }

public void stop() {
    if (runner != null) {
      runner.stop();
      runner = null;
      }
    }
public void run() {
    pause(0);
}

public Insets insets() {
    return new Insets(0,0,0,0);
  }
public void paint(Graphics cube) {

can_r.setBackground(new Color(r.getValue(),0,0));
can_g.setBackground(new Color(0,g.getValue(),0));
can_b.setBackground(new Color(0,0,b.getValue()));
r.setBackground(new Color(r.getValue(),0,0));
g.setBackground(new Color(0,g.getValue(),0));
b.setBackground(new Color(0,0,b.getValue()));
setBackground(new Color(r.getValue(),g.getValue(),b.getValue()));
}

void pause(int time) {
    try { Thread.sleep(time); }
    catch (InterruptedException e) { }
  }

public boolean handleEvent(Event evt,Object arg) {
	
    if (evt.target instanceof Scrollbar) {
       int dir = ((Scrollbar)evt.target).getOrientation();
       int value=((Scrollbar)evt.target).getValue();
       String what_bar=(String)arg;
       if (dir==1) 
          { //vertical
	  if (what_bar.equals("SliderR"))
             sr.setText(String.valueOf(value));
	   else
	  if (what_bar.equals("SliderG"))
	     sg.setText(String.valueOf(value));
 	  else
	     sb.setText(String.valueOf(value));
	}
	pause(0);
       	repaint();
	return true;
    } 	else
	return false;
  }
}
