//Tom Monin et Clément Martins
// observateurChoix V1
//Class pour la selection du nombre de collone et ligne et de Mine a la souris
//ainsi que pour le choix du premier menu
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;

public class observateurChoix implements MouseListener{
	//le composant qui est observer ainsi que le premier (pour les ligne de choix du 2ème menu)
	private paintChoix pinceau, premier;
	//le texte des ligne et collonne
	private JLabel texte;
	//le plateau
	private plateau plat;
	//constructeur
	private boolean fonction; // attribut utiliser que pour le logo
	//@params (le composant, le premier composant de la ligne, le texte, le plateau)
	public observateurChoix(paintChoix pinceau0, paintChoix premier0, JLabel texte0, plateau plat0){
		this.pinceau=pinceau0;
		this.premier=premier0;
		this.texte=texte0;
		this.plat=plat0;
		this.fonction=false;
	}
	public void setFonction(boolean fonction0){
		this.fonction=fonction0;
	}
	@Override
	public void mouseClicked(MouseEvent evenement){
		//on connaîtra la fonction desirer par le composant grâce a sa fonction
		//et donc réagir en conséquence
		//si la fonction est hors 8 et 10
		//c'est alors que l'observateur est destiner au deuxième menu
		if(this.pinceau.getFonction()==1 || this.pinceau.getFonction()==2){
			//on remet tous en false a partir du premier composant
			this.premier.setClique(false);
			//on les remet en true a partir de celui qui est cliquer
			this.pinceau.setClique(true);
			//si la fonction est de 1 (pour les ligne)
			if(this.pinceau.getFonction()==1){
				//nous repositionons le nombre de ligne en foction de la position du composant
				this.texte.setText("<=== Ligne: "+String.valueOf(this.pinceau.getN()));
				//nous precisions au plateau le nombre de ligne selectionner
				this.plat.setLigne(this.pinceau.getN());
			}
			//si la fonction est de 2 (pour les collonnes)
			if(this.pinceau.getFonction()==2){
				//nous repositionons le nombre de collonne en fonction de la position du composant
				this.texte.setText("Collonne: "+String.valueOf(this.pinceau.getN()+" ===>"));
				//nous precisions au plateau le nombre de collonne selectionner
				this.plat.setCollonne(this.pinceau.getN());
			}
		// pour les autres fonction (premier menu)
		}else{
			//fonction 9 (pour nouvelle partie)
			if(this.pinceau.getFonction()==9){
      			this.plat.menuChoixLCB();
    		}
			//fonction 10 (pour reprendre une partie)
    		if(this.pinceau.getFonction()==10){
      			try{
      			  FileInputStream fichier = new FileInputStream("./sauvegarde.data");
      			  this.plat.reprendrePartie(fichier);
      			}catch(FileNotFoundException e1){
      			  JOptionPane.showMessageDialog(this.plat.getFenetre(), "sauvegarde introuvable");
      			}
    		}
			//fonction 8 (pour quitter la partie)
    		if(this.pinceau.getFonction()==8){
      			this.plat.getFenetre().dispose();
    		}
		}
	}
	@Override          // un bouton cliqué
	public void mouseEntered(MouseEvent evenement){
		//on precise au composant que ont est en train de le survoler
		this.pinceau.selectionner(true);
	}
	@Override          // debut du survol
	public void mouseExited(MouseEvent evenement){
		//on precise au composant que on ne le survol plus
		this.pinceau.selectionner(false);
	}
	@Override          // fin du survol
	public void mousePressed(MouseEvent evenement){

	}
	@Override          // un bouton appuyé
	public void mouseReleased(MouseEvent evenement){

	}

}