import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

import javax.swing.JApplet;
import javax.swing.JFrame;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;

public class SpApp extends JApplet {

	private static Spirale sp;

	public void init() {
		System.out.println("Initialisiere Applet...");

		_init(getContentPane());

		System.out.println("Initialisierung beendet.");
	}

	private static void _init(Container c) {
		sp = new Spirale();
		c.setLayout(new BorderLayout());
		c.add(sp, BorderLayout.CENTER);

		JSlider js = new JSlider(1, 365);
		js.setToolTipText("Cycle Lenght");
		js.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent e) {
				JSlider s = (JSlider) e.getSource();
				sp.setPeriode(s.getValue());
			}
		});
		js.setSnapToTicks(false);
		js.setPaintLabels(true);
		js.setPaintTicks(true);
		js.setMinorTickSpacing(5);
		js.setValue(28);

		c.add(js, BorderLayout.NORTH);

		js = new JSlider(0, 100);
		js.setToolTipText("Radius Offset");
		js.addChangeListener(new ChangeListener() {
			public void stateChanged(ChangeEvent e) {
				JSlider s = (JSlider) e.getSource();
				sp.setOffset(s.getValue() / 100d);
			}
		});
		js.setSnapToTicks(true);
		js.setPaintLabels(true);
		js.setPaintTicks(true);
		js.setMinorTickSpacing(1);
		js.setValue(10);

		c.add(js, BorderLayout.SOUTH);

	}

	public static void main(String args[]) {

		Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
		JFrame frame = new JFrame("Spiral Display");
		frame.addWindowListener(new WindowAdapter() {
			public void windowClosing(WindowEvent e) {
				System.exit(0);
			}
		});

		_init(frame.getContentPane());

		int WIDTH = (int) (d.width * 0.75);
		int HEIGHT = (int) (d.height * 0.75);
		frame.setLocation(d.width / 2 - WIDTH / 2, d.height / 2 - HEIGHT / 2);
		frame.setSize(WIDTH, HEIGHT);
		frame.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));

		frame.pack();
		frame.setVisible(true);
	}
}
