package view.gammeOperatoire;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.BoxLayout;

import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.ListSelectionModel;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;

import model.gammeOperatoire.Activite;
import model.gammeOperatoire.GammeOperatoire;

/**
 * Permet de visualiser en IHM et modifier les arguments d'une gamme operatoire
 * @author Magic Penguins
 *@see ViewCommande
 */
public class ViewGOP {

	/**
	 * Remplie le {@link JPanel} container avec tout les arguments de la gamme operatoire g
	 * @param g
	 * gamme operatoire a afficher
	 * @param container
	 * cible ou afficher
	 */
	public static void ViewGamme(GammeOperatoire g, JPanel container) {

		container.removeAll();
		container.setLayout(new GridLayout(1,3));

		//Declaration de la JList
		DefaultListModel modelGOP = new DefaultListModel();
		for(Activite a : g.getGamme()) {modelGOP.addElement(a);}

		JList GOP = new JList(modelGOP);
		GOP.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
		JScrollPane scrollGOP = new JScrollPane(GOP);


		//creation des boutons		
		JButton ActiviteUp = new JButton("Monter");
		JButton ActiviteDown = new JButton("Descendre");
		JButton ActiviteDel = new JButton("Supprimer");
		JButton ActiviteNew = new JButton("Nouveau...");


		ActiviteUp.setMinimumSize(ActiviteDown.getPreferredSize());
		ActiviteUp.setMaximumSize(ActiviteDown.getPreferredSize());

		ActiviteDel.setMinimumSize(ActiviteDown.getPreferredSize());
		ActiviteDel.setMaximumSize(ActiviteDown.getPreferredSize());

		ActiviteNew.setMinimumSize(ActiviteDown.getPreferredSize());
		ActiviteNew.setMaximumSize(ActiviteDown.getPreferredSize());

		//creation du panel pour les 3 bouttons
		JPanel buttonPanel = new JPanel();
		buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.PAGE_AXIS));
		buttonPanel.add(ActiviteUp);
		buttonPanel.add(ActiviteDown);
		buttonPanel.add(new JLabel(" "));
		buttonPanel.add(ActiviteDel);
		buttonPanel.add(ActiviteNew);

		//creation du panel d'options
		JPanel options = new JPanel();


		//actionListener des bouttons
		final EventBouttons eb = new EventBouttons(g, GOP, options, container, modelGOP);
		ActionListener Blistener = new ActionListener() {

			@Override
			public void actionPerformed(ActionEvent e) {
				eb.action(e);

			}
		};
		ListSelectionListener listListener = new ListSelectionListener() {

			@Override
			public void valueChanged(ListSelectionEvent e) {
				eb.action(e);

			}
		};
		GOP.addListSelectionListener(listListener);
		ActiviteUp.addActionListener(Blistener);
		ActiviteDown.addActionListener(Blistener);
		ActiviteNew.addActionListener(Blistener);
		ActiviteDel.addActionListener(Blistener);

		//gestion du layout
		container.add(scrollGOP);
		container.add(buttonPanel);
		container.add(options);


		GOP.setSelectedIndex(0);
		container.updateUI();
		container.setVisible(true);
	}
}
