import javax.swing.*;

import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.Dimension;
import java.awt.event.*;


public class App extends JFrame{

	private static final long serialVersionUID = 4971947031002705958L;
	PanneauListeContact panneauListeContacts;
	JButton boutonQuitter;
	JButton boutonEnvoyer;
	JButton boutonAjouter;
	JScrollPane scroll;
	JScrollPane scroll2;
	JTextArea TA;
	JTextArea TA2;
	
	public App() {
		setLayout(new BorderLayout());

		//On crée la JListe
		panneauListeContacts = new PanneauListeContact();
		
		//On crée des panel pour organiser le placement des objets
		this.setSize(520, 350);
		JPanel panneauBoutons;
		panneauBoutons = new JPanel();
		panneauBoutons.setLayout(new GridLayout(3,1));
		
		JPanel panneauDroite = new JPanel();
		panneauDroite.setLayout(new GridLayout(2,1));
		panneauDroite.add(panneauListeContacts);
		panneauDroite.add(panneauBoutons);
		this.add(panneauDroite,BorderLayout.EAST);
		
		JPanel quitter = new JPanel();
		JPanel envoyer = new JPanel();
		JPanel ajouter = new JPanel();
		
		//On crée les boutons
		boutonQuitter = new JButton("Quitter");
		boutonEnvoyer = new JButton("Envoyer");
		boutonAjouter = new JButton("Ajouter");
		quitter.add(boutonQuitter);
		envoyer.add(boutonEnvoyer);
		ajouter.add(boutonAjouter);
		panneauBoutons.add(quitter);
		panneauBoutons.add(ajouter);
		panneauBoutons.add(envoyer);
		
		//On crée les zones de text
		JPanel panneauGauche = new JPanel();
		panneauGauche.setPreferredSize(new Dimension(400,500));
		TA = new JTextArea();
   		scroll = new JScrollPane(TA);
        scroll.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scroll.setPreferredSize(new Dimension(400,200));
   		TA.setEditable(false);
   		TA2 = new JTextArea();
   		scroll2 = new JScrollPane(TA2);
        scroll2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS);
        scroll2.setPreferredSize(new Dimension(400,100));
   		TA2.setEditable(true);
   		panneauGauche.add(scroll);
		panneauGauche.add(scroll2);
		this.add(panneauGauche,BorderLayout.WEST);
		this.add(panneauDroite,BorderLayout.EAST);
		
		JPanel tampon = new JPanel();
		tampon.setPreferredSize(new Dimension(1,50));

		// Gestion des événements
		
		boutonEnvoyer.addActionListener(new EcouteurBoutonEnvoyer(TA,TA2,panneauListeContacts));
		boutonQuitter.addActionListener(new ListenerQuitter());
		boutonAjouter.addActionListener(new EcouteurBoutonAjouter(panneauListeContacts));
		/*
		
		
		*/
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

		// Assemblage et affichage
		//pack();
		setVisible(true);
	}
	
	
	@SuppressWarnings("unused")
	public static void main(String[] args) {
		App ihm;
		ihm = new App();
		
	}
	
	//Ce qu'il se passe si le bouton envoyer est cliqué
	class EcouteurBoutonEnvoyer implements ActionListener {
		private JTextArea TA;
		private JTextArea TA2;
		private PanneauListeContact panneauListeContacts;
		
		public EcouteurBoutonEnvoyer(JTextArea TA,JTextArea TA2,PanneauListeContact panneauListeContacts) {
			this.TA = TA;
			this.TA2 = TA2;
			this.panneauListeContacts = panneauListeContacts;
		}

		public void actionPerformed(ActionEvent e) {
			try {
				TA.append("J'ai ecrit à " + panneauListeContacts.getSelectedContact().getPseudo() + ":   " + TA2.getText()+ "\n");
			}catch(NullPointerException ex){ //On vérifie qu'un contact est séléctionné
				JOptionPane.showMessageDialog(TA, "Veuillez séléctionner une personne");
			}
		}
	}
	
	//ce qu'il se passe si le bouton ajouter est séléctionné
	class EcouteurBoutonAjouter implements ActionListener {
		private PanneauListeContact panneauListeContacts;
		
		public EcouteurBoutonAjouter(PanneauListeContact panneauListeContacts) {
			this.panneauListeContacts = panneauListeContacts;
		}

		@SuppressWarnings("deprecation")
		public void actionPerformed(ActionEvent e) {
				Ajouter ajout = new Ajouter(panneauListeContacts);
				ajout.show();
			
		}
	}
	
	//ce qu'il se passe si le bouton quitter est séléctionné
	class ListenerQuitter implements ActionListener 
	{ public void actionPerformed(ActionEvent e) 
	  { System.exit(0); // arrêter la machine java 
	  } 
	} 
}



