Ptidej-v5.2-master/PADL Serialiser DB4O Tests/rsc/JHotDraw v5.1/src/CH/ifa/draw/figures/ScribbleTool.java
/*
 * @(#)ScribbleTool.java 5.1
 *
 */

package CH.ifa.draw.figures;

import java.awt.event.MouseEvent;

import CH.ifa.draw.framework.DrawingView;
import CH.ifa.draw.standard.AbstractTool;

/**
 * Tool to scribble a PolyLineFigure
 * @see PolyLineFigure
 */
public class ScribbleTool extends AbstractTool {

	private PolyLineFigure  fScribble;
	private int             fLastX, fLastY;

	public ScribbleTool(DrawingView view) {
		super(view);
	}

	public void activate() {
		super.activate();
		fScribble = null;
	}

	public void deactivate() {
		super.deactivate();
		if (fScribble != null) {
			if (fScribble.size().width < 4 || fScribble.size().height < 4)
				drawing().remove(fScribble);
		}
	}

	private void point(int x, int y) {
		if (fScribble == null) {
			fScribble = new PolyLineFigure(x, y);
			view().add(fScribble);
		} else if (fLastX != x || fLastY != y)
			fScribble.addPoint(x, y);

		fLastX = x;
		fLastY = y;
	}

	public void mouseDown(MouseEvent e, int x, int y) {
		if (e.getClickCount() >= 2) {
			fScribble = null;
			editor().toolDone();
		}
		else {
			// use original event coordinates to avoid
			// supress that the scribble is constrained to
			// the grid
			point(e.getX(), e.getY());
		}
	}

	public void mouseDrag(MouseEvent e, int x, int y) {
		if (fScribble != null)
			point(e.getX(), e.getY());
	}
}
