/*
* Copyright (c) 2014 tabletoptool.com team.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
* rptools.com team - initial implementation
* tabletoptool.com team - further development
*/
package com.t3.client.tool.drawing;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.event.MouseMotionListener;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import com.t3.model.drawing.Drawable;
import com.t3.model.drawing.LineSegment;
import com.t3.model.drawing.Pen;
import com.t3.model.drawing.ShapeDrawable;
import com.t3.util.guidreference.ZoneReference;
/**
* Tool for drawing freehand lines.
*/
public class PolygonTool extends LineTool implements MouseMotionListener {
private static final long serialVersionUID = 3258132466219627316L;
public PolygonTool() {
try {
setIcon(new ImageIcon(ImageIO.read(getClass().getClassLoader().getResourceAsStream("com/t3/client/image/tool/draw-blue-strtlines.png"))));
} catch (IOException ioe) {
ioe.printStackTrace();
}
}
@Override
public String getTooltip() {
return "tool.poly.tooltip";
}
@Override
public String getInstructions() {
return "tool.poly.instructions";
}
@Override
protected void completeDrawable(ZoneReference zone, Pen pen, Drawable drawable) {
LineSegment line = (LineSegment) drawable;
super.completeDrawable(zone, pen, new ShapeDrawable(getPolygon(line)));
}
@Override
protected Polygon getPolygon(LineSegment line) {
Polygon polygon = new Polygon();
for (Point point : line.getPoints()) {
polygon.addPoint(point.x, point.y);
}
return polygon;
}
}