/*
 * Created on Apr 21, 2003
 *
 * To change this generated comment go to 
 * Window>Preferences>Java>Code Generation>Code Template
 */
package jdraw.figures;

import java.awt.*;
import java.awt.event.*;

import jdraw.framework.*;

/**
 * @author Christoph
 */
public class LineEndHandle implements Handle {
	private static final int WIDTH  = 6;
	private static final int HEIGHT = 6;
	
	private final Line owner;

	private Point begin;
	/**
	 * 
	 */
	public LineEndHandle(Line owner) {
		this.owner = owner;
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#getOwner()
	 */
	public Figure getOwner() {
		return owner;
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#getBounds()
	 */
	public java.awt.Rectangle getBounds() {
		Point b = owner.getEnd();
		return new java.awt.Rectangle(b.x-WIDTH/2, b.y-HEIGHT/2, WIDTH, HEIGHT);
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#draw(java.awt.Graphics)
	 */
	public void draw(Graphics g) {
		Color tmp = g.getColor();
		Point b = owner.getEnd();
		g.setColor(Color.WHITE);
		g.fillRect(b.x-WIDTH/2, b.y-HEIGHT/2, WIDTH, HEIGHT);
		g.setColor(Color.BLACK);
		g.drawRect(b.x-WIDTH/2, b.y-HEIGHT/2, WIDTH, HEIGHT);
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#getCursor()
	 */
	public Cursor getCursor() {
		return Cursor.getPredefinedCursor(Cursor.MOVE_CURSOR);
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#contains(int, int)
	 */
	public boolean contains(int x, int y) {
		return getBounds().contains(x, y);
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#startInteraction(int, int, java.awt.event.MouseEvent, jdraw.framework.DrawView)
	 */
	public void startInteraction(int x, int y, MouseEvent e, DrawView v) {
		begin = owner.getBegin();
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#dragInteraction(int, int, java.awt.event.MouseEvent, jdraw.framework.DrawView)
	 */
	public void dragInteraction(int x, int y, MouseEvent e, DrawView v) {
		owner.setBounds(begin, e.getPoint());
	}

	/* (non-Javadoc)
	 * @see jdraw.framework.Handle#stopInteraction(int, int, java.awt.event.MouseEvent, jdraw.framework.DrawView)
	 */
	public void stopInteraction(int x, int y, MouseEvent e, DrawView v) {	}

}
