package plot;

import java.awt.*;
import java.io.PrintStream;

class DrawPanel extends Panel {
	Panel bp;
	public DrawCanvas canvas;
	// Panel cp;
	Canvas cp;
	final static int Newpath=0,
			Move=1,  
			Line=2, 
			Curve=3, 
			Stroke=4, 
			Fill=5, 
			Close=6,
			Delete=7,
			Adjust=8,
			Grid=9,
			Print=10; 
	String buttonString[] = {"new",
				"move", 
				"line",
				"curve", 
				"stroke", 
				"fill", 
				"close",
				"delete",
				"    adjust    ",
				"grid",
				"print" 
				};
	int buttonNo = buttonString.length;	 
	Button button[] = new Button[buttonNo];
	OutputReader out;
	public DrawPanel(int w, int h, OutputReader out) {
		this.out = out;
		Font f = new Font("Helvetica", Font.BOLD, 14);
		setFont(f);
		resize(w, h);
		setLayout(new BorderLayout(0, 0));
		canvas = new DrawCanvas(w, h);
		add("Center", canvas);
		bp = new Panel();
		
		bp.setLayout(new GridLayout(buttonNo+1, 1));
		// bp.add(new Panel());
		cp = new ColourCanvas(canvas);		
		bp.add(cp);
		for (int i=0;i<buttonNo;i++) {
			button[i] = new Button(buttonString[i]);
			bp.add(button[i]);
		}
		// bp.add(new Panel());
		// bp.add(new Panel());
		add("East", bp);
	}
	
	int active = Move;
	
	public boolean handleEvent(Event evt) {
		if (evt.id == Event.ACTION_EVENT) {
			button[active].setBackground(Color.lightGray);
			if (evt.target == button[Newpath]) { 
				active = Move;
				canvas.newpath();
			} else 
			if (evt.target == button[Move]) { 
				active = Move;
				canvas.move();
			} else 
			if (evt.target == button[Line]) {
				active = Line;
				canvas.line();
			} else 
			if (evt.target == button[Curve]) {
				active = Curve;
				canvas.curve();
			} else 
			if (evt.target == button[Stroke]) {
				active = Stroke;
				canvas.stroke();
			} else 
			if (evt.target == button[Fill]) {
				active = Fill;
				canvas.fill();
			} else 
			if (evt.target == button[Close]) {
				active = Close;
				canvas.close();
			} else		
			if (evt.target == button[Delete]) {
				active = Delete;
				canvas.delete();
			} else
			if (evt.target == button[Grid]) {
				active = Grid;
				canvas.grid();
			} else
			if (evt.target == button[Print]) {
				active = Print;
				String output = canvas.toPS();
				out.read(output);
			} else
			if (evt.target == button[Adjust]) {
				active = Adjust;
				canvas.adjust();
			} 
			button[active].setBackground(Color.pink);
		} else if (evt.id != Event.LOST_FOCUS 
				&& evt.id != Event.GOT_FOCUS
				&& evt.id != Event.MOUSE_MOVE
				&& evt.id != Event.MOUSE_ENTER
				&& evt.id != Event.MOUSE_EXIT ) {
			// System.out.println(rpn.EventDisplay.toString(evt));
		}
		return(true);
	}
}
