package view.vueRapportFermeture;

import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.math.BigDecimal;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

import language.Francais;
import language.Language;
import view.Formulaire;
import view.tool.jEasyTable.JEasyScrollTable;
import controler.Message;

public class VueRapportFermeture extends Formulaire{
	/**
	 * 
	 */
	private static final long serialVersionUID = 4949578874743133015L;

	private JPanel panelSearchGrid;
	
	private JEasyScrollTable tableFacture,
							 tableFermeture,
							 tableSommaire;
	
	private GridBagConstraints constraint;
	
	private JLabel labelFactureFermes,
						labelSommaire,
						labelTotal;
	
	private Language lang;
	
	private int currentFermetureId;
	
	public VueRapportFermeture(Language lang, Message messageDataChanged) throws Exception
	{
		super(messageDataChanged);
		initVariable(lang);
		initComponents();
		initListener();
		setMnemonic();
	}
	
	/**
	* @throws Exception 
	* 
	*/
	private void initVariable(Language lang) throws Exception
	{
		this.lang = lang;
		panelSearchGrid       = new JPanel(new GridBagLayout());
		
		constraint = new GridBagConstraints();
		
		tableFacture  = new JEasyScrollTable(lang.getRapportFermetureColumn1());
		tableFermeture  = new JEasyScrollTable(lang.getRapportFermetureColumn2());
		tableSommaire  = new JEasyScrollTable(lang.getRapportFermetureColumn3());
		
		labelFactureFermes   = new JLabel(lang.getRapportFermetureFactureFermees());
		labelSommaire        = new JLabel(lang.getRapportFermetureSommaire());
		labelTotal		     = new JLabel(lang.getRapportFermetureTotal());
		
		tableFacture.setSelectable(1000);
		tableFermeture.setSelectable(JEasyScrollTable.SINGLE_SELECTION);
		
		currentFermetureId = 0;
	}
	
	/**
	* 
	*/
	private void initComponents()
	{	
		constraint.fill = GridBagConstraints.BOTH;
		constraint.insets  = new Insets(0, 5, 5, 5);
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx = 0;
		constraint.gridy = 1;
		panelSearchGrid.add(tableFacture, constraint);	
		
		constraint.fill = GridBagConstraints.HORIZONTAL;
		constraint.weightx = 1.0;
		constraint.weighty = 0;
		constraint.gridx = 1;
		constraint.gridy = 0;
		panelSearchGrid.add(labelFactureFermes, constraint);
		
		constraint.fill = GridBagConstraints.BOTH;
		constraint.insets  = new Insets(0, 5, 5, 5);
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx = 1;
		constraint.gridy = 1;
		panelSearchGrid.add(tableFermeture, constraint);
		
		constraint.fill = GridBagConstraints.HORIZONTAL;
		constraint.insets  = new Insets(0, 5, 5, 5);
		constraint.weightx = 1.0;
		constraint.weighty = 0;
		constraint.gridx = 2;
		constraint.gridy = 0;
		panelSearchGrid.add(labelSommaire, constraint);
		
		constraint.fill = GridBagConstraints.BOTH;
		constraint.insets  = new Insets(0, 5, 5, 5);
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx = 2;
		constraint.gridy = 1;
		panelSearchGrid.add(tableSommaire, constraint);
		
		constraint.fill = GridBagConstraints.HORIZONTAL;
		constraint.weightx = 1.0;
		constraint.weighty = 0;
		constraint.gridx = 2;
		constraint.gridy = 2;
		panelSearchGrid.add(labelTotal, constraint);
		
		constraint.fill    = GridBagConstraints.BOTH;
		constraint.anchor  = GridBagConstraints.NORTH;
		constraint.insets  = new Insets(0, 0, 0, 0);
		constraint.weightx = 1.0;
		constraint.weighty = 1;
		constraint.gridx   = 0;
		constraint.gridy   = 0;
		add(panelSearchGrid,constraint);
	}
	
	/**
	* 
	*/
	private void initListener()
	{		
//		buttonImprimer.addActionListener(this);
//		buttonAnnuler.addActionListener(this);
//		buttonFermer.addActionListener(this);
//		buttonSelectionner.addActionListener(this);
	}
	
	/**
	* 
	*/	
	private void setMnemonic()
	{
//		buttonAnnuler.setMnemonic(lang.getRapportFermetureAnnuler().charAt(lang.getRapportFermetureAnnuler().indexOf('%')+1));
//		buttonFermer.setMnemonic(lang.getRapportFermetureFermer().charAt(lang.getRapportFermetureFermer().indexOf('%')+1));
//		buttonSelectionner.setMnemonic(lang.getRapportFermetureSelection().charAt(lang.getRapportFermetureSelection().indexOf('%')+1));
//		buttonImprimer.setMnemonic(lang.getRapportFermetureImprimer().charAt(lang.getRapportFermetureImprimer().indexOf('%')+1));
	}
	
	/**
	* 
	* @param content
	 * @throws Exception 
	*/
	public void addFacture(String numeroFacture, String date, String solde, String paiement) throws Exception
	{
		tableFacture.addRow(new JLabel[]{
				new JLabel(numeroFacture),
				new JLabel(date),
				new JLabel(solde),
				new JLabel(paiement)
		});
	}
	
//	public List<Integer> getSelectedFacture(){
//		return tableFacture.getSelectedRowIndex();
//	}
	
	/**
	* 
	* @param content
	 * @throws Exception 
	*/
	public void addFermeture(int numero, String montant, String date) throws Exception
	{
		tableFermeture.addRow(new JLabel[]{
				new JLabel(""+numero),
				new JLabel(montant),
				new JLabel(date)
		});
	}
	
	public int getSelectedFermeture(){
		if (tableFermeture.getSelectedRow().length==0)
			return 0;
		return Integer.valueOf(((JLabel)tableFermeture.getSelectedRow()[0][0]).getText());
		//return tableFermeture.getSelectedRowIndex();
	}
	
	public void clearFacture(){
		tableFacture.clear();
	}
	
	public void clearSommaire(){
		tableSommaire.clear();
	}
	
	/**
	* 
	* @param content
	 * @throws Exception 
	*/
	public void addSommaire(String methode, String montant) throws Exception
	{
		tableSommaire.addRow(new JLabel[]{
				new JLabel(methode),
				new JLabel(montant)
		});
	}
	
	public void clear(){
		tableFermeture.clear();
		tableFacture.clear();
		tableSommaire.clear();
	}
	
	public void setTotal(Double tot)
	{
		labelTotal.setText("Total : " + tot + "$");
	}
	
	
	public int getCurrentFermetureId() {
		return currentFermetureId;
	}

	public void setCurrentFermetureId(int currentFermetureId) {
		this.currentFermetureId = currentFermetureId;
	}

	/**
	* @param args
	* @throws Exception 
	*/
	public static void main(String[] args) throws Exception {
		JFrame a = new JFrame("window");
		JLabel[][] labels = {{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}
							,{new JLabel("0"),new JLabel("1")}},
				   labels2 = {{new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")},
							  {new JLabel("0"),new JLabel("1"), new JLabel("2")}},
				   labels3 = {{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}
							 ,{new JLabel("0"),new JLabel("1")}};
		
		VueRapportFermeture test = new VueRapportFermeture(Francais.getInstance(),null);
		//test.addFactureNonFerme(labels);
		//test.addFactureFerme(labels2);
		//test.addFermeture(labels3);
		test.setTotal(12.35);
		a.setLayout(new GridBagLayout());
		
		GridBagConstraints contraint = new GridBagConstraints();
		contraint.fill = GridBagConstraints.BOTH;
		contraint.weightx = 1.0;
		contraint.weighty = 1.0;
		contraint.gridx = 0;
		contraint.gridy = 0;
		
		a.add(test,contraint);
		a.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		a.pack();
		a.setVisible(true);
	}
}
