import java.awt.event.*;
import java.awt.*;

/**
 * Clase EliminarHandler
 * @author Patricio A. Castillo Pizarro - Eric C. Maldonado Olguin
 * @version 1.1 - May 18th, 2007
 */
class EliminarHandler implements ActionListener
{
    private EditorPanel panel;
    private Forma forma;
    
    /**
     * Constructor.
     * @param p Panel en que se efectua la eliminacion de una forma.
     */
    public EliminarHandler(EditorPanel p)
    {
        panel = p;
    }
    
    /**
     * Implementa los listeners necesarios para eliminar la forma del circuito.
     * @param e Parametro que indica el estado del evento
     */
    public void actionPerformed(ActionEvent e)
    {
        panel.changeMouseListener(new MouseHandler());
        panel.changeMouseMotionListener(new MouseMotionHandler());
        panel.manipulating();
    }
    
    /**
     * Clase interna que contiene los metodos de MouseListener
     */
    class MouseHandler extends MouseAdapter
    {
        /**
         * Metodo que define las acciones a realizar cuando se hace un click con el mouse.
         * La forma seleccionada es removida del circuito.
         * @param event Parametro que indica la accion realizada por el mouse
         */
        public void mouseClicked(MouseEvent event)
        {
                Point punto = event.getPoint();
                forma = (Forma)panel.find(punto);
                if(forma != null)
                {
                    panel.remueva (forma);
                }
        }
    }
    
    /**
     * Clase interna que contiene los metodos de MouseMotionListener
     */
    class MouseMotionHandler extends MouseMotionAdapter
    {
        /**
         * Metodo que define las acciones a realizar cuando se mueve el mouse.
         * Entrega la posicion del mouse a medida que se mueve en el circuito.
         * @param event Parametro que indica la accion realizada por el mouse
         */
        public void mouseMoved(MouseEvent event)
        {
            Point p = event.getPoint();
            forma = (Forma)panel.find(p);
        }
    }
}
//Fin clase EliminarHandler
