package Controleurs;
import java.awt.event.*;
import java.util.Vector;
import IHM.IHMjoueur;
import IHM.IHMmonopoly;
import javax.swing.*;
import modele.propriete;
/**
 * Cette classe est l'écouteur d'une combobox affiliée à un joueur. 
 * Elle organise les constructions,destructions, hypothèques.
 * @author Emilie Collasse,Cynthia Fong,Salma Zaghloul
 * @version 1.0
 *
 */
public class EcouteurMenuJoueur implements ActionListener{
	IHMjoueur j;
	IHMmonopoly monop;
	public EcouteurMenuJoueur(IHMjoueur j,IHMmonopoly monop){
		this.j=j;
		this.monop=monop;
	}
	public void actionPerformed(ActionEvent e){
		String choix2="";
		int choixHyp2=0;
		String choix="";
		int choixHyp=0;
		if (((JComboBox)e.getSource()).getSelectedItem().equals("Hypothéquer")){
			if (j.getJoueur().getPossessions().isEmpty())
				JOptionPane.showMessageDialog(null,j.getJoueur().getNom()+", vous ne possédez aucune propriété.\nVous ne pouvez pas hypothéquer.","Erreur",JOptionPane.ERROR_MESSAGE);
			else {
				Vector<String> choixPropHyp=new Vector<String>();
				for (int i=0;i<j.getJoueur().getPossessions().size();i++){
					choixPropHyp.add(i+" - "+(j.getJoueur().getPossessions().get(i)).getNom());
				}
				Object [] choixPossibles=choixPropHyp.toArray();
				choix=(String)JOptionPane.showInputDialog(null,"Quelle propriété voulez-vous hypothéquer ?","",JOptionPane.QUESTION_MESSAGE,null,choixPossibles,choixPossibles[0]);
				choixHyp=Integer.parseInt(choix.substring(0, choix.indexOf(" ")));
				j.getJoueur().hypothequerIHM(j.getJoueur().getPossessions().get(choixHyp));
				j.repaint();
			}
		}
		if (((JComboBox)e.getSource()).getSelectedItem().equals("Lever une hypothèque")){
			if (j.getJoueur().getPossessions().isEmpty())
				JOptionPane.showMessageDialog(null,j.getJoueur().getNom()+", vous ne possédez aucune propriété.\nVous n'avez pas d'hypothèque à lever.","Erreur",JOptionPane.ERROR_MESSAGE);
			else {
				Vector<String> choixPropHyp2=new Vector<String>();
				for (int i=0;i<j.getJoueur().getPossessions().size();i++){
					choixPropHyp2.add(i+" - "+(j.getJoueur().getPossessions().get(i)).getNom());
				}
				Object [] choixPossibles2=choixPropHyp2.toArray();
				choix2=(String)JOptionPane.showInputDialog(null,"Sur quelle propriété voulez-vous lever l'hypothèque ?","",JOptionPane.QUESTION_MESSAGE,null,choixPossibles2,choixPossibles2[0]);
				choixHyp2=Integer.parseInt(choix2.substring(0, choix2.indexOf(" ")));
				j.getJoueur().deshypothequerIHM(j.getJoueur().getPossessions().get(choixHyp2));
				j.repaint();
			}
		}
		if (((JComboBox)e.getSource()).getSelectedItem().equals("Construire")){
			if (j.getJoueur().getPossessions().isEmpty())
				JOptionPane.showMessageDialog(null,j.getJoueur().getNom()+", vous ne possédez aucune propriété.\nVous ne pouvez pas construire.","Erreur",JOptionPane.ERROR_MESSAGE);
			else {
				Vector<String> choixPropHyp2=new Vector<String>();
				for (int i=0;i<j.getJoueur().getPossessions().size();i++){
					choixPropHyp2.add(i+" - "+(j.getJoueur().getPossessions().get(i)).getNom());
				}
				Object [] choixPossibles2=choixPropHyp2.toArray();
				choix2=(String)JOptionPane.showInputDialog(null,"Sur quelle propriété voulez-vous construire ?","",JOptionPane.QUESTION_MESSAGE,null,choixPossibles2,choixPossibles2[0]);
				choixHyp2=Integer.parseInt(choix2.substring(0, choix2.indexOf(" ")));
				if ((""+j.getJoueur().getPossessions().get(choixHyp2).getClass()).equals("class modele.propriete"))
					j.getJoueur().construireIHM((propriete)(j.getJoueur().getPossessions().get(choixHyp2)),monop.getBanque());
				else 
					JOptionPane.showMessageDialog(null, "Cette propriété n'est pas constructible","Erreur",JOptionPane.ERROR_MESSAGE);
				j.repaint();
				monop.getPlateauIHM().repaint();
			}
		}
		if (((JComboBox)e.getSource()).getSelectedItem().equals("Démolir")){
			if (j.getJoueur().getPossessions().isEmpty())
				JOptionPane.showMessageDialog(null,j.getJoueur().getNom()+", vous ne possédez aucune propriété.\nVous ne pouvez pas détruire de constructions.","Erreur",JOptionPane.ERROR_MESSAGE);
			else {
				Vector<String> choixPropHyp2=new Vector<String>();
				for (int i=0;i<j.getJoueur().getPossessions().size();i++){
					choixPropHyp2.add(i+" - "+(j.getJoueur().getPossessions().get(i)).getNom());
				}
				Object [] choixPossibles2=choixPropHyp2.toArray();
				choix2=(String)JOptionPane.showInputDialog(null,"Sur quelle propriété voulez-vous démolir ?","",JOptionPane.QUESTION_MESSAGE,null,choixPossibles2,choixPossibles2[0]);
				choixHyp2=Integer.parseInt(choix2.substring(0, choix2.indexOf(" ")));
				if ((""+j.getJoueur().getPossessions().get(choixHyp2).getClass()).equals("class modele.propriete"))
					j.getJoueur().vendreConstructionBanqueIHM((propriete)(j.getJoueur().getPossessions().get(choixHyp2)),monop.getBanque());
				else 
					JOptionPane.showMessageDialog(null, "Cette propriété n'est pas constructible. Vous ne pouvez pas démolir.","Erreur",JOptionPane.ERROR_MESSAGE);
				j.repaint();
				monop.getPlateauIHM().repaint();
			}
		}
	}
}
