/**
*Programme cree par The Clusters
*Classe Statistiques du jeu "Chkoba"
*@author The Clusters
*@version 1.0
**/

package chkoba;

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import chkoba.*;
import java.io.*;
import java.util.Scanner;

/**
*	Classe Statistiques
*/

public class Stat extends JFrame implements ActionListener 
{
	private JPanel pDecorateur, pGeneral, pGauche, pDroitAvecBouton, pDroitSansBouton, pBouton;
	private JButton reinitialiser, quitter;
	private JLabel lPartieJoue, lPartieGagne, lPartiePerdu, lratio, lChkoba, lCarreau, lPlis, lSept, lDecoN, lDecoS, lDecoO, lDecoE, lSeptdeC;
	private JTextField tPartieJoue, tPartieGagne, tPartiePerdu, tratio, tChkoba, tCarreau, tPlis, tSept, tSeptdeC;
	private Index ind;
	private String nbjoue, nbgagne, nbperdu, ratio, chkoba, carreau, plis, sept, septcarreau;

	public Stat(Index i)
	{
		setTitle("Chkoba - Statistiques");
		setSize(620,350);
		setResizable(false);
		setIconImage(Toolkit.getDefaultToolkit().getImage(Stat.class.getResource("./icone.png")));	//permet de changer l'image dans le haut de la frame
		ind = i;
		/* Creation des panels */
		
		pGeneral = new JPanel();
		pGauche = new JPanel();
		pDroitAvecBouton = new JPanel();
		pDroitSansBouton = new JPanel();
		pBouton = new JPanel();
		pDecorateur = new JPanel();
		
		/* Changement d'etat des panels */
		
		pDecorateur.setLayout(new BorderLayout());
		pGeneral.setLayout(new BorderLayout());
		pGauche.setLayout(new GridLayout(4,2));
		pDroitAvecBouton.setLayout(new BorderLayout());
		pDroitSansBouton.setLayout(new GridLayout(5,2));
		pBouton.setLayout(new FlowLayout());
		
		/* Ajout du Panel principal */
		
		add(pDecorateur);
		pDecorateur.add(pGeneral);
		
		/* On s'occupe de la deco */
		
		lDecoN = new JLabel(" ");
		lDecoS = new JLabel(" ");
		lDecoO = new JLabel("       ");
		lDecoE = new JLabel("       ");
		
		pDecorateur.add(lDecoN, "North");
		pDecorateur.add(lDecoS, "South");
		pDecorateur.add(lDecoO, "West");
		pDecorateur.add(lDecoE, "East");
		
		lDecoN.setSize(620,100);
		lDecoS.setSize(620,100);
		lDecoO.setSize(100,300);
		lDecoE.setSize(100,300);
		
		lDecoN.setBackground(Color.LIGHT_GRAY);
		lDecoN.setOpaque(true); // permet de rendre le label opaque et non plus transparent
		lDecoS.setBackground(Color.LIGHT_GRAY);
		lDecoS.setOpaque(true);
		lDecoO.setBackground(Color.LIGHT_GRAY);
		lDecoO.setOpaque(true);
		lDecoE.setBackground(Color.LIGHT_GRAY);
		lDecoE.setOpaque(true);
		
		/* On s'occupe de la partie gauche des stats */
		
		lPartieJoue = new JLabel("Nombre de partie jouee :");
		pGauche.add(lPartieJoue);
		lPartieJoue.setOpaque(true);
		lPartieJoue.setBackground(Color.LIGHT_GRAY);
		tPartieJoue = new JTextField();
		tPartieJoue.setEnabled(false);
		pGauche.add(tPartieJoue);
		
		lPartieGagne = new JLabel("Nombre de partie gagnee :");
		pGauche.add(lPartieGagne);
		lPartieGagne.setOpaque(true);
		lPartieGagne.setBackground(Color.LIGHT_GRAY);
		tPartieGagne = new JTextField();
		tPartieGagne.setEnabled(false);
		pGauche.add(tPartieGagne);
		
		lPartiePerdu = new JLabel("Nombre de partie perdue :");
		pGauche.add(lPartiePerdu);
		lPartiePerdu.setOpaque(true);
		lPartiePerdu.setBackground(Color.LIGHT_GRAY);
		tPartiePerdu = new JTextField();
		tPartiePerdu.setEnabled(false);
		pGauche.add(tPartiePerdu);
		
		lratio = new JLabel("Ratio :");
		pGauche.add(lratio);
		lratio.setOpaque(true);
		lratio.setBackground(Color.LIGHT_GRAY);
		tratio = new JTextField();
		tratio.setEnabled(false);
		pGauche.add(tratio);
		
		/* Ajout du Panel de gauche au centre du panel principal */
		
		pGeneral.add(pGauche);
		pGauche.setBackground(Color.LIGHT_GRAY);
		
		/* On s'occupe de le partie droite des stats */
		
		lChkoba = new JLabel("Point Chkoba :");
		pDroitSansBouton.add(lChkoba);
		lChkoba.setOpaque(true);
		lChkoba.setBackground(Color.LIGHT_GRAY);
		tChkoba = new JTextField();
		tChkoba.setEnabled(false);
		pDroitSansBouton.add(tChkoba);
		
		lCarreau = new JLabel("Point Carreaux :");
		pDroitSansBouton.add(lCarreau);
		lCarreau.setOpaque(true);
		lCarreau.setBackground(Color.LIGHT_GRAY);
		tCarreau = new JTextField();
		tCarreau.setEnabled(false);
		pDroitSansBouton.add(tCarreau);
		
		lPlis = new JLabel("Point Plis :");
		pDroitSansBouton.add(lPlis);
		lPlis.setOpaque(true);
		lPlis.setBackground(Color.LIGHT_GRAY);
		tPlis = new JTextField();
		tPlis.setEnabled(false);
		pDroitSansBouton.add(tPlis);
		
		lSept= new JLabel("Point Sept :");
		pDroitSansBouton.add(lSept);
		lSept.setOpaque(true);
		lSept.setBackground(Color.LIGHT_GRAY);
		tSept = new JTextField();
		tSept.setEnabled(false);
		pDroitSansBouton.add(tSept);
		
		lSeptdeC= new JLabel("Point Sept de carreau :");
		pDroitSansBouton.add(lSeptdeC);
		lSeptdeC.setOpaque(true);
		lSeptdeC.setBackground(Color.LIGHT_GRAY);
		tSeptdeC = new JTextField();
		tSeptdeC.setEnabled(false);
		pDroitSansBouton.add(tSeptdeC);
		
		/* On ajoute les stats de droite au panel regissant la partie droite */
		
		pDroitAvecBouton.add(pDroitSansBouton);
		pDroitSansBouton.setBackground(Color.LIGHT_GRAY);
		
		/* On ajoute les deux boutons au sud du panel regissant la partie droite */
		
		reinitialiser = new JButton("Reinitialiser");
		reinitialiser.addActionListener(this);
		pBouton.add(reinitialiser);
		pBouton.setBackground(Color.LIGHT_GRAY);
		
		quitter = new JButton("Quitter");
		quitter.addActionListener(this);
		pBouton.add(quitter); 
		
		/* On ajoute le panel de bouton au sud du panel de droite */
		
		pDroitAvecBouton.add(pBouton, "South");
		pDroitAvecBouton.setBackground(Color.LIGHT_GRAY);
		
		/* On ajoute le panel de droite au panel principal */
		
		pGeneral.add(pDroitAvecBouton, "East");
		
		/* On va chercher les anciennes statistiques */
		
		this.rechercheStat();
		
		/* On fait en sorte que tout ce qu'on vient de faire soit visible et on adapte la taille de la fenetre */ 

		setVisible(true);
	}
	
	public void rechercheStat()
	{
		// On va aller rechercher de la meme facon que dans Affichage.java la configuration sauvegardee precedemment
		// Ceci au moyen de la lecture dans un fichier, different, appele config.txt sauf que la on va aller chercher plusieurs choses et que ce sont des string pour la plupart
		JOptionPane conf = new JOptionPane();
		try
		{
			
			FileReader fr = new FileReader ("./stat.txt");
			Scanner scan = new Scanner(fr);
			scan.useDelimiter("\t");		// Le délimiteur utilise ici est la tabulation, afin de bien lire les differents noms
			while (scan.hasNext()) 
			{
				nbjoue = scan.next();			// Le premier champ est votre nom
				nbgagne = scan.next();			// Le deuxieme champ est le nom du joueur en face de vous
				nbperdu = scan.next();			// Le troisieme champ est le nom du joueur a votre gauche
				ratio = scan.next();			// Le quatrieme champ est le nom du joueur a votre droite
				chkoba = scan.next();			// Le dernier champ est l'int de la difficulte
				carreau = scan.next();
				plis = scan.next();
				sept = scan.next();
				septcarreau = scan.next();	
				tPartieJoue.setText(nbjoue);				// Ici il met a jour les textfield en fonction de ce qu'il a trouve dans le fichier
				tPartieGagne.setText(nbgagne);				
				tPartiePerdu.setText(nbperdu);				
				tratio.setText(ratio); 
				tChkoba.setText(chkoba); 
				tCarreau.setText(carreau); 
				tPlis.setText(plis); 
				tSept.setText(sept); 
				tSeptdeC.setText(septcarreau); 			
			}
		}
		catch (Exception ex)
		{
			
		}
	}
	
	public void actionPerformed(ActionEvent e)
	{
		if (e.getSource() == quitter)
			setVisible(false);
		else
		{	
			
			JOptionPane conf = new JOptionPane();
			int res = 0;
			res = conf.showConfirmDialog(null,"Reinitiliser les statistiques entrainera la pertes de vos anciennes donnees. Etes vous sur ?","Attention", conf.WARNING_MESSAGE); 			
			if (res == 0)
			{
				tPartieJoue.setText("0"); 
				tPartieGagne.setText("0");
				tPartiePerdu.setText("0");
				tratio.setText("0");
				tChkoba.setText("0");
				tCarreau.setText("0");
				tPlis.setText("0");
				tSept.setText("0");
				tSeptdeC.setText("0");
				
				try
				{
					BufferedWriter save = new BufferedWriter(new FileWriter("stat.txt", false));
					PrintWriter pw = new PrintWriter(save);
					String s="";
						
					s += 0+"\t"+0+"\t"+0+"\t"+0+"\t"+0+"\t"+0+"\t"+0+"\t"+0+"\t"+0+"\t"; 
					pw.write(s);
						
					save.close();
				}
				catch(Exception exc){}
			}
		}
	}
}