import java.awt.*;
import java.applet.Applet;
import java.util.Random;

public class StereoPanel extends Applet implements Runnable
{
    Thread workThread;
    StereoLights l1;
    StereoLights l2;
    StereoLights l3;
    StereoLights l4;
    StereoLights l5;
    StereoLights v;
    private Random r;
    private int level;
    private int volume;
    private int startPoint;
    Graphics g;

    public void stop()
    {
        if (workThread != null)
            workThread.stop();
    }

    public StereoPanel()
    {
        volume = 10;
        startPoint = 5;
    }

    public void redraw()
    {
        level = rand(volume + 10);
        l1.draw(g, level);
        level = rand(volume + 10);
        l2.draw(g, level);
        level = rand(volume + 10);
        l3.draw(g, level);
        level = rand(volume + 10);
        l4.draw(g, level);
        level = rand(volume + 10);
        l5.draw(g, level);
        v.draw(g, volume);
    }

    public void paint(Graphics g)
    {
        l1.refresh(g);
        l2.refresh(g);
        l3.refresh(g);
        l4.refresh(g);
        l5.refresh(g);
        v.refresh(g);
        g.setColor(new Color(200, 255, 200));
        g.drawString("Vol", 151, 125);
        g.drawRect(5, 5, 175, 125);
    }

    int rand(int i)
    {
        return Math.abs(r.nextInt() % i);
    }

    public void start()
    {
        workThread = new Thread(this);
        workThread.start();
    }

    public boolean mouseDown(Event event, int i, int j)
    {
        startPoint = j;
        return true;
    }

    public void run()
    {
        while (workThread != null)
        {
            redraw();
            try
            {
                Thread.sleep(100);
            }
            catch (InterruptedException e)
            {
            }
        }
    }

    public void init()
    {
        r = new Random();
        l1 = new StereoLights();
        l1.setPosition(15, 10);
        l1.setSize(20, 100, 20);
        l2 = new StereoLights();
        l2.setPosition(36, 10);
        l2.setSize(20, 100, 20);
        l3 = new StereoLights();
        l3.setPosition(57, 10);
        l3.setSize(20, 100, 20);
        l4 = new StereoLights();
        l4.setPosition(78, 10);
        l4.setSize(20, 100, 20);
        l5 = new StereoLights();
        l5.setPosition(99, 10);
        l5.setSize(20, 100, 20);
        v = new StereoLights();
        v.setPosition(150, 10);
        v.setSize(20, 100, 20);
        v.setColors(Color.white, Color.cyan, Color.blue);
        setBackground(Color.black);
        if (g == null)
            g = getGraphics();
    }

    public boolean mouseDrag(Event event, int i, int j)
    {
        if (j > startPoint)
            volume = Math.abs(volume += -1);
        else
            volume++;
        if (volume > 30)
            volume += -1;
        return true;
    }
}
