import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
/**
 * Projet: PaintRevolution
 * <p>Title:UnCarre.java </p>
 * <p>Description:
 * Classe qui incréer objet auditeur qui permet de tracer à main levée dans
 * la zone de dessin grâce à la souris 
 * </p>
 * <p>Copyright: Copyright (c) 2005</p>
 * <p>Societe: IUT NANCY CHARLEMAGNE II</p>
 * @author VIGNERON GEOFFROY && GANGANELLI DORIAN
 * @version 3.0
 */
public class TraceurForme implements MouseListener,MouseMotionListener {

  /**
   * Dernière abscisse de la souris qui a été mémorisée
   */
  private int lastX;
  /**
   * Dernière ordonnée  de la souris qui a été mémorisée
   */
  private int lastY;
  /**
   * Environnement graphique associé à cet objet
   */
  private Graphics graph;

  /**
   * Constructeur qui instancie l'objet permettant de dessiner avec la souris
   * @param g Environnement graphique associé
   */
  public TraceurForme (Graphics g) {
    graph=g;
  }

  public void mouseReleased(MouseEvent e){ }
  public void mouseEntered (MouseEvent e){ }
  public void mouseClicked (MouseEvent e){ }
  public void mouseExited  (MouseEvent e){ }
  public void mouseMoved   (MouseEvent e){ }

 

  /**
   * Méthode qui traduit l'action de la souris se déplaçant le bouton enfoncé
   * en dessinant des points suivant le mouvement
   * @param e Evenement généré par la souris
   */
  public void  mouseDragged (MouseEvent e){
    if (SwingUtilities.isLeftMouseButton (e)){
      graph.drawLine(lastX,lastY,e.getX(),e.getY());
      lastX=e.getX();
      lastY=e.getY();
    }
  }

  /**
   * Méthode qui traduit l'action de la souris pendant le tracé à main levée en
   * mémorisant les points cliqués s'il s'agit du bouton gauche, et qui efface
   * le dessin qu'il s'agit du bouton droit.
   * @param e Evenement généré par la souris
   */
  public void mousePressed (MouseEvent e){
    if (SwingUtilities.isLeftMouseButton(e)) {
      this.lastX = e.getX();
      this.lastY = e.getY();
    }
    if(SwingUtilities.isRightMouseButton(e))
      ( (JComponent)e.getSource() ).repaint();

  }
}