import java.applet.Applet;
import java.awt.*;

public class Ekman extends Applet implements Runnable {
	Thread		thread;
	int		sleepMilliSeconds = 100;
	VColumn		vc;

	public void init() {
		vc = new VColumn();
		add(new Button("config"));
		add(new Button("clear"));
		add(new Button("impulse"));
		add(new Checkbox("indicial"));
		add(new Checkbox("rotate", null, true));
		add(new Checkbox("stress"));
		add(new Button("90"));
		add(new Button("30"));
		add(new Button("2"));
		if (parent != null)
			add(new Button("kill"));
	}

	public boolean action(Event evt, Object arg) {
		if (evt.target instanceof Button)
			return actionButton(arg.toString());
		if (evt.target instanceof Checkbox)
			return actionCheckbox(evt, arg.toString());
		return false;
	}

	public boolean actionCheckbox(Event evt, String arg) {
		String label = ((Checkbox)(evt.target)).getLabel();
		if (label.equals("indicial")) {
			vc.indicial(Boolean.valueOf(arg).booleanValue());
		} else if (label.equals("rotate")) {
			vc.rotateView(Boolean.valueOf(arg).booleanValue());
		} else if (label.equals("stress")) {
			vc.stressForcing(Boolean.valueOf(arg).booleanValue());
		}
		return false;
	}

	public boolean actionButton(String arg) {
		//System.out.println("#Button[" + arg + "]");
		if (arg.equals("config")) {
			vc.reconfig();
		} else if (arg.equals("impulse")) {
			vc.impulse();
		} else if (arg.equals("clear")) {
			vc.clear();
		} else if (arg.equals("kill")) {
			kill();
		} else if (arg.equals("90") || arg.equals("30") || arg.equals("2")) {
			vc.setElevation(Double.valueOf(arg).doubleValue());
		} else {
			return false;
		}
		return true;
	}

	public void start() {
		if (thread == null) {
			thread = new Thread(this);
			thread.start();
		}
	}

	public void run() {
		while (true) {
			repaint();
			try { thread.sleep(sleepMilliSeconds); }
			catch (InterruptedException e) { }
		}
	}

	public void paint(Graphics g) { vc.paint(g); }

	public void stop() {
		if (thread != null) {
			thread.stop();
			thread = null;
		}
	}

	public String getAppletInfo() {
		return "Ekman.java by TOYODA Eizi, 1998";
	}

	static Frame	parent;
	static Ekman	e;

	public static void main(String args[]) {
		parent = new Frame("Ekman.java");
		e = new Ekman();
		e.init();
		e.start();
		parent.add("Center", e);
		parent.resize(300, 300);
		parent.show();
	}

	public static void kill() {
		e.stop();
		e.destroy();
		parent.dispose();
		parent = null;
		System.exit(0);
		System.err.println(
		"Please press Ctrl-C to kill the Java interpreter."
		+ " This is a bug.");
	}
}
