@Override
	public void drawTool(Graphics g, int mouseX, int mouseY){
		Graphics2D g2 = (Graphics2D) g;
		g2.setStroke(new BasicStroke(2));
		Canvas c = MainWindow.MAIN_WINDOW.getCanvas();
		Point prev;
		switch(state){
		case START:
			break;
		case CONFIRM:
			g.setColor(Color.ORANGE);
			
			if (boxMode.isSelected()){
				g.drawRect(c.getScaledCoord(rect.x + 0.5), c.getScaledCoord(rect.y + 0.5), 
						c.getScaledCoord(rect.width), c.getScaledCoord(rect.height));
				g.fillOval(c.getScaledCoord(rect.x), 
						c.getScaledCoord(rect.y), c.getScaledCoord(1), c.getScaledCoord(1));
				g.fillOval(c.getScaledCoord(rect.x + rect.width), 
						c.getScaledCoord(rect.y), c.getScaledCoord(1), c.getScaledCoord(1));
				g.fillOval(c.getScaledCoord(rect.x), 
						c.getScaledCoord(rect.y + rect.height), c.getScaledCoord(1), c.getScaledCoord(1));
				g.fillOval(c.getScaledCoord(rect.x + rect.width), 
						c.getScaledCoord(rect.y + rect.height), c.getScaledCoord(1), c.getScaledCoord(1));
			} else {
				prev = pts.getLast();
				for (Point pt : pts){
					g.drawLine(c.getScaledCoord(pt.x + 0.5), c.getScaledCoord(pt.y + 0.5), 
							c.getScaledCoord(prev.x + 0.5), c.getScaledCoord(prev.y + 0.5));
					g.fillOval(c.getScaledCoord(pt.x), c.getScaledCoord(pt.y), c.getScaledCoord(1), c.getScaledCoord(1));
					prev = pt;
				}
			}
			break;
		case BUILDING:
			g.setColor(Color.ORANGE);
			
			if (boxMode.isSelected()){
				g.fillOval(c.getScaledCoord(rect.x), c.getScaledCoord(rect.y), c.getScaledCoord(1), c.getScaledCoord(1));
				g.drawRect(c.getScaledCoord(rect.x + 0.5), c.getScaledCoord(rect.y + 0.5), 
						c.getScaledCoord(mouseX - rect.x), c.getScaledCoord(mouseY - rect.y));
			} else {
				g.drawLine(c.getScaledCoord(pts.getLast().x + 0.5), c.getScaledCoord(pts.getLast().y + 0.5), 
						c.getScaledCoord(mouseX + 0.5), c.getScaledCoord(mouseY + 0.5));
				prev = null;
				for (Point pt : pts){
					if (prev != null){
						g.drawLine(c.getScaledCoord(pt.x + 0.5), c.getScaledCoord(pt.y + 0.5), 
								c.getScaledCoord(prev.x + 0.5), c.getScaledCoord(prev.y + 0.5));
					}
					g.fillOval(c.getScaledCoord(pt.x), c.getScaledCoord(pt.y), c.getScaledCoord(1), c.getScaledCoord(1));
					prev = pt;
				}
				g.fillOval(c.getScaledCoord(pts.getFirst().x), c.getScaledCoord(pts.getFirst().y), 
						c.getScaledCoord(1), c.getScaledCoord(1));
			}
			break;
		}
	}