/* CSCI 15A- 5 Assignment 4
 * 
 * Drawing Applet
 *
 * Author: Alex Chan November 4, 1998
 */

import java.applet.*;
import java.awt.*;
import java.awt.event.*;

public class Drawing extends Applet 
					 implements ItemListener, MouseListener {

int mX, mY, mX1, mY1;
int Shape = 1;
Color C = Color.blue;
boolean fill = false;

CheckboxGroup shapes = new CheckboxGroup(),
			  colors = new CheckboxGroup(),
			  modes = new CheckboxGroup();
Checkbox rectangleCheck = new Checkbox("Rectangle", shapes, true),
		 circleCheck = new Checkbox("Circle", shapes, false),
		 lineCheck = new Checkbox("Line", shapes, false),
		 blueCheck = new Checkbox("Blue", colors, true),
		 redCheck = new Checkbox("Red", colors, false),
		 yellowCheck = new Checkbox("Yellow", colors, false),
		 hollowCheck = new Checkbox("Hollow", modes, true),
		 fillCheck = new Checkbox("Fill", modes, false);

Graphics g = getGraphics();

public void init() {
	
	add(rectangleCheck);
	add(circleCheck);
	add(lineCheck);
	add(blueCheck);
	add(redCheck);
	add(yellowCheck);
	add(hollowCheck);
	add(fillCheck);

	rectangleCheck.addItemListener(this);
	circleCheck.addItemListener(this);
	lineCheck.addItemListener(this);
	blueCheck.addItemListener(this);
	redCheck.addItemListener(this);
	yellowCheck.addItemListener(this);
	hollowCheck.addItemListener(this);
	fillCheck.addItemListener(this);

	addMouseListener(this);
}

public void itemStateChanged(ItemEvent e){

	if (shapes.getSelectedCheckbox() == rectangleCheck)
		Shape = 1;
	if (shapes.getSelectedCheckbox() == circleCheck)
		Shape = 2;
	if (shapes.getSelectedCheckbox() == lineCheck)
		Shape = 3;
	
	if (colors.getSelectedCheckbox() == blueCheck)
		C = Color.blue;
	if (colors.getSelectedCheckbox() == redCheck)
		C = Color.red;
	if (colors.getSelectedCheckbox() == yellowCheck)
		C = Color.yellow;

	if (modes.getSelectedCheckbox() == hollowCheck)
		fill = false;
	if (modes.getSelectedCheckbox() == fillCheck)
		fill = true;
}

  // Handle mouse clicked.
public void mouseClicked(MouseEvent me) {
}

  // Handle mouse entered.
public void mouseEntered (MouseEvent me) {
}

  // Handle mouse exited.
public void mouseExited (MouseEvent me) {
}

  // Handle button pressed.
public void mousePressed (MouseEvent me) {
    // save coordinates
    mX = me.getX();
    mY = me.getY();
}

  // Handle button released.
public void mouseReleased (MouseEvent me) {
    // save coordinates
    Graphics g = getGraphics();
    mX1 = me.getX();
    mY1 = me.getY();
		
	Rshape r = new Rshape();
	Cshape c = new Cshape();
	Lshape l = new Lshape();

	switch (Shape) {
		case 1: r.Rshape(mX, mY, mX1, mY1, C, fill, g); break;
		case 2: c.Cshape(mX, mY, mX1, mY1, C, fill, g); break;
		case 3: l.Lshape(mX, mY, mX1, mY1, C, g); break;
	}
}

public void update (Graphics g) {
	paint(g);
}
		
}
	
