package view;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Vector;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.MutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;

import controller.GestionArticle;

import model.article.Article;
import model.article.Nomenclature;

public class ActionsClickDroit implements ActionListener {

	Article art;
	TreeNode t1;
	//TreeNode t2;
	Arbre arbre;
	int type;
	//JDialog popup; 




	public ActionsClickDroit(Article art, TreeNode t1, Arbre arbre, int type) {
		this.art=art;
		this.t1=t1;
		//this.t2=t2;
		this.arbre=arbre;
		this.type=type;
	}

	public void actionPerformed(ActionEvent arg0) {

		//System.out.println("jo");
		

		if(type == 0){
			JMenuItem i = (JMenuItem)arg0.getSource();
			if(i.getText().equals("Supprimer")){
				TreePath path = arbre.getJTree().getSelectionPath();
				if ((path == null) || (path.getPathCount() <= 1)) {

					return;
				}
				else {
					RetourneArticleParent(t1).supprimerNomenclature(art.getReference());
					((DefaultTreeModel) arbre.getJTree().getModel()).removeNodeFromParent((MutableTreeNode)t1);
				}


				//arbre.setJTree(new JTree(GestionArticle.listeArticles.get(indice).convertirArbre()));
				//arbre.getJTree().repaint();
				//IHM.f.pack();
				//GestionArticle.actualiserArticleNomenclature(RetourneArticleParent(t1));
				//System.out.println(GestionArticle.getArticle(((Nomenclature)((DefaultMutableTreeNode)t1.getParent()).getUserObject()).getArticle().getReference()).afficherNomenclature());

				IHM.f.pack();
			}



			else if(i.getText().equals("Ajouter")){
				
				System.out.println("intzz");

				final JDialog popup = new JDialog(IHM.f, "Ajouter", true);
				//final JFrame popup = new JFrame("Ajouter");


				popup.setSize(500,200);
				popup.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);

				popup.setTitle("Ajouter un objet dans la nomenclature");
				JPanel p = new JPanel();
				p.setLayout(new GridLayout(4,1));
				p.setBackground(Color.WHITE);
				JLabel l = new JLabel("Vous allez ajouter un article à la nomenclature, unnnnnbelievable !!");
				//l.setVisible(true);
				p.add(l);
				JPanel p1 = new JPanel();
				p1.setBackground(Color.WHITE);
				//p1.setLayout(new GridLayout(1,2));
				JLabel jl = new JLabel("Quantité voulue : ");
				final JTextField t = new JTextField();
				t.setPreferredSize(new Dimension(40,20));
				t.setForeground(Color.BLUE);
				p1.add(jl);
				p1.add(t);
				p.add(p1);
				JButton AjouterArticle = new JButton("Ajouter l'article");

				Vector<String> interdis = GestionArticle.trouverNoeudsPeres((DefaultMutableTreeNode)t1);

				System.out.println(interdis);
				boolean a = false;

				popup.add(p);
				final JComboBox list = new JComboBox();
				//int tmp=0;
				for (int tmp=0; tmp<GestionArticle.listeArticles.size(); tmp++){
					//int tmp2 = 0;
					if(!interdis.isEmpty()){
						for(int tmp2=0; tmp2<interdis.size(); tmp2++){
							if(GestionArticle.listeArticles.get(tmp).getReference().equals(interdis.get(tmp2))) a = true;
							System.out.println(a);
							tmp2++;
						}
					}
					if(!a) list.addItem(GestionArticle.listeArticles.get(tmp));
					
					//tmp++;
				}
				p.add(new JScrollPane(list));
				p.add(AjouterArticle);
				AjouterArticle.addActionListener(new ActionsClickDroit(art, t1, arbre, 1));
				
				AjouterArticle.addActionListener(new ActionListener() {

					@Override
					public void actionPerformed(ActionEvent arg1) {
						try {

							int index = list.getSelectedIndex();
							//nodeAajouter = GestionArticle.listeArticles.get(index).getNomenclature()
							DefaultTreeModel model = (DefaultTreeModel) arbre.getJTree().getModel();
							model.insertNodeInto(new DefaultMutableTreeNode(new Nomenclature(GestionArticle.listeArticles.get(index),Integer.parseInt(t.getText()))), ((DefaultMutableTreeNode)t1), 0);
							//((DefaultMutableTreeNode) t1).add(new DefaultMutableTreeNode(new Nomenclature(GestionArticle.listeArticles.get(index),Integer.parseInt(t.getText()))));
							GestionArticle.listeArticles.get(index).ajouterNomenclature(GestionArticle.listeArticles.get(index).getReference(),Integer.parseInt(t.getText()));
							
							//((Nomenclature)(((DefaultMutableTreeNode)t1).getUserObject())).getArticle()
							//insertNodeInto(nodeAajouter, t1, 0);
							//((Nomenclature)node.getUserObject()).setQuantite(Integer.parseInt(t.getText()));
							arbre.getJTree().updateUI();
							popup.setVisible(false);
						} catch (NumberFormatException nbe) {
							t.setForeground(Color.RED);
						}
					}
				});
				popup.setVisible(true);
		}
		
			

			//p.add(new GridLayout(1,2));

			

			//System.out.println("action clique droit");

		}

		IHM.f.pack();


	}

	public static Article RetourneArticleParent(TreeNode t){
		return ((Nomenclature)((DefaultMutableTreeNode)t.getParent()).getUserObject()).getArticle();
	}


}
