// (c) Academic Java. All rights reserved.
// See http://academicjava.com/animations/conditions.html for conditions of use

package animations;

import java.awt.*;
import java.awt.geom.Arc2D;
import javax.swing.*;
import org.academicjava.animation.*;

public class VWCanvas extends ACanvas {

	private int size;

	public VWCanvas(Color c, int width, int height) {
		super(c, width, height);
		size=width;
	}

	public void draw(final int canvasAnimationTime) {
		Thread drawer = new Thread() {

			@Override
			public void run() {
				// there are 10 animops...
				setAnimationTime(canvasAnimationTime/10);
				Color lg = Color.lightGray, black = Color.black;
				int r = size / 4, th = r / 8;

				ACircle c0 = new ACircle(black, r);
				add(c0);
				c0.draw();

				ACircle c1 = new ACircle(lg, r - th);
				add(c1);
				c1.draw();

				ACircle c2 = new ACircle(black, r - 2 * th);
				add(c2);
				c2.draw();

				ABox b0 = new ABox(lg, th, 2 * (r - 2 * th));
				add(b0);
				b0.draw();
				b0.rotate(-20);

				ABox b1 = new ABox(lg, th, 2 * (r - 2 * th));
				add(b1);
				b1.draw();
				b1.rotate(20);

				int ch = 2 * (r - 3 * th / 2);

				AArc a0 = new AArc(lg, size / 2, size / 2, ch, ch, 200, 90, Arc2D.CHORD);
				a0.setFill(false);
				a0.setLineWidth(th);
				add(a0);
				a0.draw();

				AArc a1 = new AArc(lg, size / 2, size / 2, ch, ch, 160, -90, Arc2D.CHORD);
				a1.setFill(false);
				a1.setLineWidth(th);
				add(a1);
				a1.draw();

				ABox b = new ABox(black, 2 * th, th / 2);
				add(b);
				b.draw();
			}
		};
		drawer.start();
	}

	public static void main(String[] args) {
		VWCanvas canvas = new VWCanvas(Color.black, 250, 250);
		JFrame frame = new JFrame("VW");
		Container cp = frame.getContentPane();
		cp.add(canvas, BorderLayout.CENTER);
		frame.setResizable(false);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.pack();
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);

		canvas.draw(3000);
	}
}