package me.treisska.msnisdead;

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.ListSelectionModel;

public class Interface  extends JFrame implements ActionListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JButton quit;
	private JButton add;
	private JButton send;
	private JTextArea text;
	private JTextArea history;
	private DefaultListModel contactList;
	private BorderLayout gaucheLayout;
	private JPanel gauche;
	private JPanel droite;
	private JPanel basdroite;
	private BorderLayout basdroiteLayout;
	private BorderLayout droiteLayout;
	private JList contactListUI;
	@SuppressWarnings("unused")
	private JOptionPane jpop;

	public Interface(){
		droiteLayout = new BorderLayout();
		gaucheLayout = new BorderLayout();
		basdroiteLayout = new BorderLayout();
		gauche = new JPanel();
		droite = new JPanel();
		basdroite = new JPanel();
		quit = new JButton("Quitter");
		add = new JButton("Ajouter");
		send = new JButton("Envoyer");
		contactList = new DefaultListModel();
		contactListUI = new JList(contactList);
		
		
		quit.addActionListener(this);
		send.addActionListener(this);
		add.addActionListener(this);

		contactListUI.setCellRenderer(new ContactListRenderer());
		contactListUI.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		contactList.addElement(new Contact("JPF"));
		contactList.addElement(new Contact("Stefan"));
		contactList.addElement(new Contact("Booba"));
		contactList.addElement(new Contact("La Fouine"));


		text = new JTextArea("Moi aussi j'adore <3");
		text.setSize(500, 100);

		history = new JTextArea(" JPF : Oh oui j'aime le Prolog !");
		history.setEditable(false);
		history.setSize(500, 500);

		this.setSize(400, 400);
		this.setLayout(new BorderLayout());


		basdroite.setLayout(basdroiteLayout);
		droite.setLayout(droiteLayout);
		gauche.setLayout(gaucheLayout);

		basdroite.add(quit, BorderLayout.NORTH);
		basdroite.add(add, BorderLayout.CENTER);
		basdroite.add(send, BorderLayout.SOUTH);

		droite.add(basdroite, BorderLayout.SOUTH);
		droite.add(contactListUI, BorderLayout.NORTH);

		gauche.add(history, BorderLayout.NORTH);
		gauche.add(text, BorderLayout.SOUTH);


		this.getContentPane().add(gauche, BorderLayout.WEST);
		this.getContentPane().add(droite, BorderLayout.EAST);

		this.setTitle("MSN is dead");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setVisible(true);
	}

	@Override
	public void actionPerformed (ActionEvent e){
		if (e.getSource()  == quit){
			System.exit(0);
		}

		else if (e.getSource() == add){
			jpop = new JOptionPane();
			String nom = JOptionPane.showInputDialog(null, "Nom du contact a ajouter", "MSN is dead",
					JOptionPane.QUESTION_MESSAGE);
			if (nom != null){
				contactList.addElement(new Contact (nom));
			}
		}

		else if (e.getSource() == send){
			try{
				history.append("\n @ " + contactListUI.getSelectedValue().toString() + ": " + text.getText());
				
				// Ajouter a l'historique du contact
				//Pas moins d'acceder a l'objet de type Contact depuis la liste sans l'enlever 
				Contact tmp = (Contact) contactListUI.getSelectedValue();
				int[] tmp2 = contactListUI.getSelectedIndices();
				contactList.removeElementAt(tmp2[0]);
				tmp.addHistory(text.getText());
				contactList.add(tmp2[0], tmp);
				
				text.setText("");
			}
			catch (java.lang.NullPointerException e1){
				jpop = new JOptionPane();
				JOptionPane.showMessageDialog(this, "Sélectionner un contact avant d'envoyer un message !",
						"Erreur", JOptionPane.ERROR_MESSAGE);
		}
	}

}

}
