// CS 134 program to draw a warning sign
// Third (& best) attempt - uses constants!

import objectdraw.*;
import java.awt.*;

public class NoClicking3 extends WindowController
{
	// specifications that control sign's shape
	
	// coordinates of sign's corner
	private static final int SIGN_LEFT = 200;
	private static final int SIGN_TOP = 70;
	
	// dimensions of sign
	private static final int SIGN_SIZE = 100;
	
	//  space from circle to sign edge
	private static final int CIRCLE_INSET = 7;
	
	// Dimensions for "CLICKING"
	private static final int MESS_WIDTH = 40;
	private static final int MESS_HEIGHT = 10;
	
	// Dimensions for pole
	private static final int POLE_WIDTH = 5;
	private static final int POLE_HEIGHT = 150;
	
	// Coordinates and dimensions derived from specifications
	
	// Coordinates and dimensions of circle
	private static final int CIRCLE_LEFT = SIGN_LEFT + CIRCLE_INSET;
	private static final int CIRCLE_TOP = SIGN_TOP + CIRCLE_INSET;
	private static final int CIRCLE_SIZE = SIGN_SIZE - 2*CIRCLE_INSET;
	
	// Coordinates for "CLICKING"
	private static final int MESS_X = SIGN_LEFT + (SIGN_SIZE-MESS_WIDTH)/2;
	private static final int MESS_Y = SIGN_TOP + SIGN_SIZE/2 - MESS_HEIGHT/2;
	
	// inset to ends of diagonal
	private static final int LINE_INSET =  SIGN_SIZE/2 - 5*(SIGN_SIZE/2 - CIRCLE_INSET)/7;
	
	// Coordinates for diagonal
	private static final int LINE_X1 = SIGN_LEFT + LINE_INSET;
	private static final int LINE_Y1 = SIGN_TOP + LINE_INSET;
	private static final int LINE_X2 = SIGN_LEFT + SIGN_SIZE - LINE_INSET;
	private static final int LINE_Y2 = SIGN_TOP + SIGN_SIZE - LINE_INSET;
	
	// Coordinates for the pole
	private static final int POLE_TOP = SIGN_TOP + SIGN_SIZE;
	private static final int POLE_LEFT = SIGN_LEFT + SIGN_SIZE/2 - POLE_WIDTH/2;
	
	public void begin()
	{	
		//	Instructions to construct the sign
		
		new FramedRect( SIGN_LEFT, SIGN_TOP,
						SIGN_SIZE, SIGN_SIZE, canvas);
		new FramedOval( CIRCLE_LEFT, CIRCLE_TOP, 
						CIRCLE_SIZE, CIRCLE_SIZE, canvas);
						
		new Text( "CLICKING", MESS_X, MESS_Y, canvas);
		
		new Line(LINE_X1, LINE_Y1, LINE_X2, LINE_Y2, canvas);
		
		new FilledRect(POLE_LEFT, POLE_TOP, POLE_WIDTH, POLE_HEIGHT, canvas);
	}

}