@Override
	public void load() {

		int toolBarX = 0;
		int toolBarY = 0;
		int toolBarColumns = 2;
		int buttonSize = 48;

		loadingPhrase = "Loading Panel...";

		panel = new Panel(toolBarX,toolBarY,startScreenX,h);
		add(panel);

		RadioGroup toolbarGroup = new RadioGroup();

		loadingPhrase = "Loading Tools...";

		freeMark = new RadioButton(toolBarX,toolBarY,buttonSize,buttonSize);
		freeMark.setCenterLabel(new ImageLabel("freemark.png"));
		freeMark.setAlt("Free Form Select");
		toolbarGroup.add(freeMark);
		freeMark.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.FREE_MARK));
		add(freeMark);

		rectangularMark = new RadioButton(toolBarX+buttonSize+1,toolBarY,buttonSize,buttonSize);
		rectangularMark.setCenterLabel(new ImageLabel("rectmark.png"));
		toolbarGroup.add(rectangularMark);
		rectangularMark.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.RECTANGULAR_MARK));
		add(rectangularMark);

		eraser = new RadioButton(toolBarX,toolBarY+buttonSize*1+1,buttonSize,buttonSize);
		//From http://findicons.com/icon/441226/eraser?id=449660
		eraser.setCenterLabel(new ImageLabel("eraser.png"));
		eraser.setAlt("Eraser/Color Eraser");
		eraser.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.ERASER));
		toolbarGroup.add(eraser);
		add(eraser);

		paintCan = new RadioButton(toolBarX+buttonSize+1,toolBarY+buttonSize*1+1,buttonSize,buttonSize);
		//http://www.softicons.com/free-icons/toolbar-icons/some-icons-by-scardi-shek/paint-icon
		paintCan.setCenterLabel(new ImageLabel("paint.png"));
		paintCan.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.PAINT_CAN));
		toolbarGroup.add(paintCan);
		add(paintCan);


		dropper = new RadioButton(toolBarX,toolBarY+buttonSize*2+2,buttonSize,buttonSize);
		//http://findicons.com/icon/238374/color_picker?id=238374
		dropper.setCenterLabel(new ImageLabel("dropper.png"));
		dropper.setAlt("Pick Color");
		dropper.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.DROPPER));
		toolbarGroup.add(dropper);
		add(dropper);

		magnify = new RadioButton(toolBarX+buttonSize+1,toolBarY+buttonSize*2+2,buttonSize,buttonSize);
		//http://findicons.com/icon/219105/find?id=356081
		magnify.setCenterLabel(new ImageLabel("magnify.png"));
		magnify.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.ZOOM));
		toolbarGroup.add(magnify);
		add(magnify);


		pencil = new RadioButton(toolBarX,toolBarY+buttonSize*3+3,buttonSize,buttonSize);
		//http://findicons.com/icon/226814/pencil?width=32
		pencil.setCenterLabel(new ImageLabel("pencil.png"));
		pencil.setAlt("Pencil");
		pencil.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.PENCIL));
		toolbarGroup.add(pencil);
		add(pencil);

		brush = new RadioButton(toolBarX+buttonSize+1,toolBarY+buttonSize*3+3,buttonSize,buttonSize);
		//http://findicons.com/icon/237997/paintbrush?width=32
		brush.setCenterLabel(new ImageLabel("paintbrush.png"));
		brush.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.PAINT_BRUSH));
		toolbarGroup.add(brush);
		add(brush);

		airBrush = new RadioButton(toolBarX,toolBarY+buttonSize*4+4,buttonSize,buttonSize);
		//http://www.keywordpictures.com/abuse/spray%20can%20icon/
		airBrush.setCenterLabel(new ImageLabel("spray_can.png"));
		airBrush.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.SPRAY));
		toolbarGroup.add(airBrush);
		add(airBrush);

		text = new RadioButton(toolBarX+buttonSize+1,toolBarY+buttonSize*4+4,buttonSize,buttonSize);
		text.setCenterLabel(new ImageLabel("text.png"));
		text.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.TEXT));
		toolbarGroup.add(text);
		add(text);

		line = new RadioButton(toolBarX,toolBarY+buttonSize*5+5,buttonSize,buttonSize);
		line.setCenterLabel(new ImageLabel("line.png"));
		line.setAlt("Line");
		line.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setLineMode"));
		toolbarGroup.add(line);
		add(line);

		curve = new RadioButton(toolBarX+buttonSize+1,toolBarY+buttonSize*5+5,buttonSize,buttonSize);
		curve.setCenterLabel(new ImageLabel("curve.png"));
		curve.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.DRAW_CURVE));
		toolbarGroup.add(curve);
		add(curve);

		rect = new RadioButton(toolBarX,toolBarY+buttonSize*6+6,buttonSize,buttonSize);
		rect.setCenterLabel(new ImageLabel("rect.png"));
		rect.setAlt("Rectangle");
		rect.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setRectMode"));
		toolbarGroup.add(rect);
		add(rect);

		//TODO Rect Options
		RadioGroup rectGroup = new RadioGroup();

		drawRectButton = new RadioButton(toolBarX, 400, buttonSize*2, buttonSize);
		drawRectButton.setCenterLabel(new ImageLabel("rect.png"));
		drawRectButton.setAlt("Draw Rectangle");
		drawRectButton.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setModeDraw"));
		rectGroup.add(drawRectButton);
		drawRectButton.setChecked(true);
		drawRectButton.setVisible(false);
		add(drawRectButton);

		fillRectButton = new RadioButton(toolBarX, 400+buttonSize+2, buttonSize*2, buttonSize);
		fillRectButton.setCenterLabel(new ImageLabel("rectfilled.png"));
		fillRectButton.setAlt("Fill Rectangle");
		fillRectButton.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setModeFill"));
		rectGroup.add(fillRectButton);
		fillRectButton.setVisible(false);
		add(fillRectButton);

		poly = new RadioButton(toolBarX+buttonSize+1,toolBarY+buttonSize*6+6,buttonSize,buttonSize);
		poly.setCenterLabel(new ImageLabel("poly.png"));
		poly.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setMode", PaintMode.DRAW_POLY));
		toolbarGroup.add(poly);
		add(poly);

		oval = new RadioButton(toolBarX,toolBarY+buttonSize*7+7,buttonSize,buttonSize);
		oval.setCenterLabel(new ImageLabel("oval.png"));
		oval.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setOvalMode"));
		toolbarGroup.add(oval);
		add(oval);

		//TODO Oval Options
		RadioGroup ovalGroup = new RadioGroup();

		drawOvalButton = new RadioButton(toolBarX, 400, buttonSize*2, buttonSize);
		drawOvalButton.setCenterLabel(new ImageLabel("oval.png"));
		drawOvalButton.setAlt("Draw Rectangle");
		drawOvalButton.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setModeDraw"));
		ovalGroup.add(drawOvalButton);
		drawOvalButton.setChecked(true);
		drawOvalButton.setVisible(false);
		add(drawOvalButton);

		fillOvalButton = new RadioButton(toolBarX, 400+buttonSize+2, buttonSize*2, buttonSize);
		fillOvalButton.setCenterLabel(new ImageLabel("ovalfilled.png"));
		fillOvalButton.setAlt("Fill Rectangle");
		fillOvalButton.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setModeFill"));
		ovalGroup.add(fillOvalButton);
		fillOvalButton.setVisible(false);
		add(fillOvalButton);

		round = new RadioButton(toolBarX+buttonSize+1,toolBarY+buttonSize*7+7,buttonSize,buttonSize);
		round.setCenterLabel(new ImageLabel("round.png"));
		round.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setRoundMode"));
		toolbarGroup.add(round);
		add(round);

		//TODO Round Options
		RadioGroup roundGroup = new RadioGroup();

		drawRoundButton = new RadioButton(toolBarX, 400, buttonSize*2, buttonSize);
		drawRoundButton.setCenterLabel(new ImageLabel("round.png"));
		drawRoundButton.setAlt("Draw Rectangle");
		drawRoundButton.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setModeDraw"));
		roundGroup.add(drawRoundButton);
		drawRoundButton.setChecked(true);
		drawRoundButton.setVisible(false);
		add(drawRoundButton);

		fillRoundButton = new RadioButton(toolBarX, 400+buttonSize+2, buttonSize*2, buttonSize);
		fillRoundButton.setCenterLabel(new ImageLabel("roundfilled.png"));
		fillRoundButton.setAlt("Fill Rectangle");
		fillRoundButton.addAction(GUIEvent.MOUSE_LEFT_BUTTON_UP, new Action(this, "setModeFill"));
		roundGroup.add(fillRoundButton);
		fillRoundButton.setVisible(false);
		add(fillRoundButton);

		loading = 70;

		loadingPhrase = "Loading Colors...";

		loadInterface(buttonSize);		

		loading = 90;

		loadingPhrase = "Loading Screen...";

		createScreen();

		//Load Tools
		lineTool = new LineTool();
		
		rectTool = new RectTool(drawRectButton, fillRectButton);
		
		ovalTool = new OvalTool(drawOvalButton, fillOvalButton);
		
		roundRectTool = new RoundRectTool(drawRoundButton, fillRoundButton);

		tool = rectTool;
		
		setMode(PaintMode.RECTANGULAR_MARK);
		rectangularMark.mark();

		loading = 100;

	}