package fr.iutfbleau.projetAgile.Puissance4.Controller;

import java.awt.event.MouseEvent;
import javax.swing.event.MouseInputAdapter;
import fr.iutfbleau.projetAgile.Puissance4.Utils.Constants;

/**
 * Classe qui hérite de MouseInputAdapter qui écoute la souris sur le panneau du jeu
 */
public class GrilleMouseListener extends MouseInputAdapter{

    private Puissance4Controller controller;
    /**
     * Constructeur de la classe
     * @param p le controleur du jeu
     */
    public GrilleMouseListener(Puissance4Controller p) {
        this.controller = p;
    }

    /**
     * Si la souris bouge et que l'option de survol est activé, affiche le survol
     * @see fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller#hoverGrille(int)
     */
    @Override
    public void mouseMoved(MouseEvent e) {
        if(Constants.DRAW_POSITION) {
            this.controller.hoverGrille(e.getX());
        }
            
    }
    
    /**
     * Si la bouton gauche de la souris est cliqué vérifie si on peut placer un pion dans la grille
     * @see fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller#verifyColumn(int)
     */
    @Override
    public void mousePressed(MouseEvent e) {
        if(e.getButton() == MouseEvent.BUTTON1) {
            this.controller.verifyColumn(e.getX());
            this.mouseMoved(e);
        }
    }

    /**
     * Si la souris sort du "cadre" de la grille, efface le survol
     * @see fr.iutfbleau.projetAgile.Puissance4.Controller.Puissance4Controller#hoverGrille(int)
     */
    @Override
    public void mouseExited(MouseEvent e) {
        this.controller.hoverGrille(-1);
    }

}
