import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.event.*;

public class InventaireJDialog extends JDialog implements KeyListener{ //implements ActionListener,ListSelectionListener{
	
	private int compteurRaccour=1;
	
	
	private Monde monde;
	
	
	
	private JScrollPane scroll;
	
	private JListBackdrop dansEquipJList=new JListBackdrop();
	
	private String objetsSelectedStr=new String();
	
	private Entite objetChoisi=new Entite();
	private Entite objet=new Entite();
	
	private Vector vecteurEquipement=new Vector();
	
	private Vector equipementNoms=new Vector();
	
	private JLabel quitInfo=new JLabel("Raccourci non-assigne ou ESC : quitter");
	
	
	
	Font police;
	Font police2;
	
	
	//TTTTTTTTTTTTTTT
	Classeur classeur=new Classeur();
	//TTTTTTTTTTTTTTT
	
	
	public InventaireJDialog(Monde world,Vector equipement){
		
		police=world.getPolice();
		police2=world.getPolice2();
		
		
		monde=world;
		vecteurEquipement=equipement;
	
	
	
		Container c=getContentPane();
		c.setLayout(null);
		
		
		quitInfo.setFont(police);
		
		scroll = new JScrollPane(dansEquipJList);
		scroll.setBounds(5,5,380,620);
		c.add(scroll);
		
		
		quitInfo.setBounds(10,630,300,20);
		c.add(quitInfo);
		
		dansEquipJList.setCellRenderer(new CustomCellRenderer()); 
		dansEquipJList.addKeyListener(this);
		
		
		
		
		
		
		
	
		//TTTTTTTTTTTTTTT
		classeur.tri("Arme",1,vecteurEquipement);
		classeur.tri("Armure",2,vecteurEquipement);
		classeur.tri("Comestible",3,vecteurEquipement);
		//classeur.tri("Creature",3,vecteurEquipement);
		classeur.tri("Ecrit",4,vecteurEquipement);
		classeur.tri("EcritMagique",5,vecteurEquipement);
		classeur.tri("Outil",6,vecteurEquipement);
		classeur.tri("Divers",7,vecteurEquipement);
		classeur.testTri();
		vecteurEquipement=classeur.retourVectTrie();
		//TTTTTTTTTTTTTTT
		
		
		
		//on lance une enumeration du vecteur equipement pour remplir un vecteur equipementNoms
		enumEquip();
		
		
		if(monde.jeuPan.lang){quitInfo.setText("Another key or ESC : exit");}
		
		setLocation(0,0);
		setSize(400,690);
		show();
		
	}
	
	public void enumEquip(){
		
		//TTTTTTTTTTTTTTTT
		String sepType=new String("");
		String sepType2=new String("");
		Short sepNb=0;
		//TTTTTTTTTTTTTTTT
			
		if(!vecteurEquipement.isEmpty()){
				
			for(Enumeration e = vecteurEquipement.elements();e.hasMoreElements();){
                
 				try{	
 						
 					objet=(Entite) e.nextElement();
 						
 					JPanel jp = new JPanel();
 					
 					
 					///TTTTTTTTTTTTTT
					//System.out.println(classeur.testeurObjet(objet));
					System.out.println(objet.getClass().getName());
					System.out.println(objet.getTypeObjet());
					
					sepType=objet.getClass().getName();
					sepType2=objet.getTypeObjet();
					
					if(sepType.compareTo("Arme")==0 &&
					 sepNb==0){
					 	jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						if(monde.jeuPan.lang){jp.add(new JLabel("WEAPONS"));}
						else{jp.add(new JLabel("ARMES"));}
						//jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
						equipementNoms.addElement(jp);
						sepNb=1;
					}
					if(sepType.compareTo("Armure")==0 &&
					 (sepNb==0||sepNb==1)){
					 	jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						if(monde.jeuPan.lang){jp.add(new JLabel("ARMORS"));}
						else{jp.add(new JLabel("ARMURES"));}	
						//jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
						equipementNoms.addElement(jp);
						sepNb=2;
					}
					if((sepType2.compareTo("Comestible")==0 )&&//||sepType.compareTo("Creature")==0) &&
					 (sepNb==0||sepNb==1||sepNb==2)){
						jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						jp.add(new JLabel("COMESTIBLES"));
						//jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));	
						jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
						equipementNoms.addElement(jp);
						sepNb=3;
					}
					if(sepType.compareTo("Ecrit")==0 &&
					 (sepNb==0||sepNb==1||sepNb==2||sepNb==3)){
					 	jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
					 	if(monde.jeuPan.lang){jp.add(new JLabel("WRITS"));}
						else{jp.add(new JLabel("ECRITS"));}
						//jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
						equipementNoms.addElement(jp);
						sepNb=4;
					}
					if(sepType.compareTo("EcritMagique")==0 &&
					 (sepNb==0||sepNb==1||sepNb==2||sepNb==3||sepNb==4)){
					 	jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						if(monde.jeuPan.lang){jp.add(new JLabel("MAGICAL WRITS"));}
						else{jp.add(new JLabel("ECRITS MAGIQUES"));}		
						//jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
						equipementNoms.addElement(jp);
						sepNb=5;
					}
					if(sepType.compareTo("Outil")==0 &&
					 (sepNb==0||sepNb==1||sepNb==2||sepNb==3||sepNb==4||sepNb==5)){
						jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						if(monde.jeuPan.lang){jp.add(new JLabel("TOOLS"));}
						else{jp.add(new JLabel("OUTILS"));}
						//jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
						equipementNoms.addElement(jp);
						sepNb=6;
					}
					
					if(sepType.compareTo("Outil")!=0 &&
						sepType.compareTo("EcritMagique")!=0&&
						sepType.compareTo("Ecrit")!=0 &&
						sepType2.compareTo("Comestible")!=0&&
						sepType.compareTo("Creature")!=0&&
						sepType.compareTo("Armure")!=0&&
						sepType.compareTo("Arme")!=0&&
					 (sepNb==0||sepNb==1||sepNb==2||sepNb==3||sepNb==4||sepNb==5||sepNb==6)){
						
						jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						if(monde.jeuPan.lang){jp.add(new JLabel("OTHERS"));}
						else{jp.add(new JLabel("DIVERS"));}	
						//jp.add(new JLabel(new ImageIcon("./images/separateurLIST.jpg")));
						jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
						equipementNoms.addElement(jp);
						sepNb=7;
					}
					
					jp = new JPanel();
					//TTTTTTTTTTTTTTT
 					
 					
 					
 					
 					jp.add(new JLabel(new ImageIcon(objet.getTileStr())));
 					
 					
 					if(objet.getAlume()){
    					
    					jp.add(new JLabel(new ImageIcon("./images/special/allume.gif")));
    					
    					
    				}
    				
    				if(objet.getEquiped()){
    					
    					jp.add(new JLabel(new ImageIcon("./images/special/equipe.gif")));
    					
    				}
    				
    				
    				if(monde.jeuPan.lang){
    					JLabel jlab=new JLabel(objet.getNomE());
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					
    				}
    				else{
    					JLabel jlab=new JLabel(objet.getNom());
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					
    				}
    				
    				if(objet.getModele().compareTo("oilflask")==0 || objet.getModele().compareTo("chandelier")==0 || objet.getModele().compareTo("torche")==0 || objet.getModele().compareTo("lanterne")==0){
    					
    					JLabel jlab=new JLabel("("+objet.getHuile()+")");
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					
    					
    				}
    				
    				if(objet.getClass().getName().compareTo("Spell")!=0){
    					JLabel jlab=new JLabel("Wt:"+objet.getPoids());
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					
    					
    					
    					
    				}
    				
    				if(objet.getClass().getName().compareTo("Spell")==0){
    					JLabel jlab=new JLabel("Lvl:"+objet.getNiveau());
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					
    				}
    				
    				if(objet.getClass().getName().compareTo("Spell")!=0){
    					JLabel jlab=new JLabel("Res:"+objet.getResistanceMat());
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					jlab=new JLabel("Str:"+objet.getStructureMat());
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					
    				}
    				
    				
    				if(objet.getCasse()){
    					JLabel jlab=new JLabel("brk");
    					jlab.setFont(police);
    					jp.add(jlab);
    					
    					
    					
    				}
					jp.setLayout(new FlowLayout(FlowLayout.LEFT,5,2));
					equipementNoms.addElement(jp);
				
					
					
					
 					
 					
 				}
 				catch(NoSuchElementException exc){};
 			}
 		}
		
		
		
		
		dansEquipJList.setListData(equipementNoms);
	}
	
	
	
	
	
	/////////////////////////////////////////////
	public void keyPressed(KeyEvent e){
		char lettre=e.getKeyChar();
	
		dispose();
		
		/*
		if (e.getKeyChar() == KeyEvent.VK_ESCAPE){
			dispose();
		}*/
		
		
	}
	
	public void keyReleased(KeyEvent e){}
	
	public void keyTyped(KeyEvent e){}
	
	
}