//TrianguloHandler.java

import java.awt.event.*;
import java.awt.*;
/**Clase que maneja la excepcion creada por la creacion de un triangulo.
 * @author Luis Espinoza Severino.
 */
class TrianguloHandler implements ActionListener
{
//atributos
   private EditorPanel panel;
   private Triangulo triangulo;
   private int trietapa;
   private Point a;
/**Constructor de clase.
 * @param panel -
 */
   public TrianguloHandler(EditorPanel panel)
     {
	this.panel = panel;
	trietapa = 1;
     }
/**codigo que se ejecuta cuando se genera la excepcion para la creacion.
 * @param e -
 */
   public void actionPerformed(ActionEvent e)
     {
	panel.changeMouseListener(new MouseHandler());
	panel.changeMouseMotionListener(new MouseMotionHandler());
	trietapa = 1;
	panel.nomanipular();
     }
   /**Clase interna que maneja las excepciones por acciones del mouse.
    * @author Luis Espinoza Severino.
    */
   class MouseHandler extends MouseAdapter
	{
	   public void mousePressed(MouseEvent e)
	     {
		if(trietapa == 1)
		  {
		     a = e.getPoint();
		     triangulo = new Triangulo(a,a,a);
		     triangulo.setA(a);
		     panel.incorpore(triangulo);
		     trietapa = 2;
		     panel.repaint();
		     System.out.println("Triangulo creado...a seteado");
		  }
		
		
	     }
	   
	   public void mouseReleased(MouseEvent event)
	     {
		trietapa = 3;
		System.out.println("B seteado etapa 3");
	     }
	   
	   public void mouseClicked(MouseEvent event)
	     {
		if (trietapa == 3)
		  {
		     trietapa = 1;
		     System.out.println("c seteado ...volviendo a etapa 1");
		     
		  }
	     }
	}
/**Clase que maneja las excepciones por movimiento del mouse.
 * @author Luis Espinoza S.
 */
   class MouseMotionHandler extends MouseMotionAdapter
     {
	public void mouseDragged(MouseEvent e)
	  {	
	     if (trietapa == 2)
	       {
		  Point p = e.getPoint();
		  triangulo.setB(p);
		  panel.repaint();
		  System.out.println("Seteando B en etapa 2");			
	       }
	     
	  }
	
	
	public void mouseMoved(MouseEvent e)
	  {
	     if (trietapa == 3)
	       {
		  Point p = e.getPoint();
		  triangulo.setC(p);
		  panel.repaint();
		  System.out.println("Seteando C..etapa3");
		  
	       }
	  }	
     }
}					
