package view.vueRapportArriveeDepart;

import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.sql.Date;
import java.util.Calendar;

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

import language.Francais;
import language.Language;
import view.Formulaire;
import view.tool.dateField.DateField;
import view.tool.jEasyTable.JEasyScrollTable;

public class VueRapportArriveeDepart extends Formulaire{

	/**
	 * 
	 */
	private static final long serialVersionUID = -5442481785096204306L;

	private JPanel panelSearchFields,
				   panelSearchGrid;
	
	private JEasyScrollTable table;
	
	private GridBagConstraints constraint;
	
	private JLabel labelDate;
	
	private DateField dateInput;
	
	private JComboBox<String> comboBoxInOut;
	
	private Language lang;
	
	public VueRapportArriveeDepart(Language lang) throws Exception
	{
		super();
		initVariable(lang);
		initComponents();
		initListener();
		setMnemonic();
	}
	
	/**
	* @throws Exception 
	* 
	*/
	private void initVariable(Language lang) throws Exception
	{
		this.lang = lang;
		
		panelSearchFields     = new JPanel(new FlowLayout(FlowLayout.LEFT));
		panelSearchGrid       = new JPanel(new GridBagLayout());
		
		constraint = new GridBagConstraints();
		table  = new JEasyScrollTable(lang.getRapportArrivDepartColumn());
		
		labelDate 		  = new JLabel(lang.getRapportArrivDepartDate().replaceAll("%", ""));
		
		dateInput 		  = DateField.fromCalendar(Calendar.getInstance());
		
		comboBoxInOut     = new JComboBox<String>();
		comboBoxInOut.addItem(lang.getRapportArrivDepartCheckin());
		comboBoxInOut.addItem(lang.getRapportArrivDepartCheckout());
	}
	
	/**
	* 
	*/
	private void initComponents()
	{	
		panelSearchFields.add(comboBoxInOut);
		panelSearchFields.add(labelDate);
		panelSearchFields.add(dateInput);
		
		constraint.fill = GridBagConstraints.BOTH;
		constraint.anchor  = GridBagConstraints.NORTH;
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx = 0;
		constraint.gridy = 0;
		panelSearchGrid.add(table,constraint);
		
//		panelButtons.add(buttonImprimer);
		
		constraint.fill    = GridBagConstraints.HORIZONTAL;
		constraint.anchor  = GridBagConstraints.NORTHWEST;
		constraint.insets  = new Insets(10, 3, 10, 3);
		constraint.weightx = 1.0;
		constraint.weighty = 0;
		constraint.gridx   = 0;
		constraint.gridy   = 0;
		add(panelSearchFields,constraint);
		
		constraint.fill    = GridBagConstraints.BOTH;
		constraint.anchor  = GridBagConstraints.NORTH;
		constraint.insets  = new Insets(10, 3, 10, 3);
		constraint.weightx = 1.0;
		constraint.weighty = 1.0;
		constraint.gridx   = 0;
		constraint.gridy   = 1;
		add(panelSearchGrid,constraint);
		
		constraint.fill = GridBagConstraints.NONE;
		constraint.anchor = GridBagConstraints.SOUTHEAST;
		constraint.insets  = new Insets(10, 3, 10, 3);
		constraint.weightx = 1.0;
		constraint.weighty = 0.0;
		constraint.gridx = 0;
		constraint.gridy = 2;
//		add(panelButtons,constraint);
	}
	
	/**
	* 
	*/
	private void initListener()
	{		
//		buttonImprimer.addActionListener(this);
	}
	
	/**
	* 
	*/	
	private void setMnemonic()
	{
		labelDate.setDisplayedMnemonic(lang.getRapportArrivDepartDate().charAt(lang.getRapportArrivDepartDate().indexOf('%')+1));
		labelDate.setLabelFor(dateInput);
		
//		buttonImprimer.setMnemonic(lang.getRapportArrivDepartImprimer().charAt(lang.getRapportArrivDepartImprimer().indexOf('%')+1));
	}

	public void addRow(int numeroChambre,
			           String reste,
			           String supplement) throws Exception{
		table.addRow(new JLabel[]{
				new JLabel(""+numeroChambre),
				new JLabel(reste),
				new JLabel(supplement),
		});
	}
	
	/**
	* 
	*/
	public void tableClear()
	{
		table.clear();
	}
	
	public String getSelectedInOut() {
		return comboBoxInOut.getSelectedItem().toString();
	}
	
	public String getDate()
	{
		return dateInput.getDate().toString();
	}
	
	public void addInOutToCombobox(String selection) {
		comboBoxInOut.addItem(selection);
	}
	
	public void setDate(Date date)
	{
		dateInput.setDate(date);
	}

	/**
	 * @param args
	 * @throws Exception 
	 */
	public static void main(String[] args) throws Exception {
		JFrame a = new JFrame("window");
		JLabel[][] labels = {};
		
		VueRapportArriveeDepart test = new VueRapportArriveeDepart(Francais.getInstance());
		//test.setContent(labels);
		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);
	}

}
