import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseWheelEvent;

import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.border.Border;

public class GUI extends JFrame implements ActionListener{
	private static final long serialVersionUID = 1L;
	Sac sac;
	JButton ajouter;
  JButton affranchir;
  JButton quitButton;
  JCheckBox urgent;
  JLabel valueLabel;
  JComboBox<String> scrollBox;
  JTextField volumeColis; 
  JTextField volumeCourant;
  JTextArea outview;
  public GUI(int size) {
  	sac= new Sac(size);
    setSize(700,150);
    setTitle("Counter Programm");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setLayout(new GridLayout(1,2));
    //dispose();
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new GridLayout(1,3));
    ajouter = new JButton("ajouter");
    affranchir = new JButton("affranchir");
    quitButton = new JButton("quitter");
    ajouter.addActionListener(this);
    affranchir.addActionListener(this);
    quitButton.addActionListener(this);
    buttonPanel.add(ajouter);
    buttonPanel.add(affranchir);
    buttonPanel.add(quitButton);
    
    JPanel valuePanel = new JPanel();
    valuePanel.setLayout(new FlowLayout());
    valuePanel.add(new JLabel("capacité sac :"));
    valueLabel= new JLabel(sac.getVolMax()+"");
    valuePanel.add(valueLabel);
    valuePanel.add(new JLabel(", volume courant:"));
    volumeCourant= new JTextField((String) ""+sac.getVolume());
    volumeCourant.setEnabled(false);
    volumeCourant.setPreferredSize(new Dimension(50, 20));
    valuePanel.add(volumeCourant);
    
    JPanel inPanel = new JPanel();
    inPanel.setLayout(new FlowLayout());
    inPanel.add(new JLabel("volume colis :"));
    volumeColis= new JTextField("volume");
    volumeColis.setEnabled(false);
    volumeColis.setPreferredSize(new Dimension(50, 20));
    inPanel.add(volumeColis);
    urgent = new JCheckBox("urgent");
    //urgent.setEnabled(false);
    inPanel.add(urgent);
    
    scrollBox = new JComboBox<String>();
    scrollBox.addItem("Lettre");
    scrollBox.addItem("Colis");
    scrollBox.addActionListener(this);
    
    JPanel leftPanel = new JPanel();
    leftPanel.setLayout(new GridLayout(4,1));
    leftPanel.add(scrollBox);
    leftPanel.add(valuePanel);
    leftPanel.add(inPanel);
    leftPanel.add(buttonPanel);
    add(leftPanel);
    
    outview= new JTextArea("Contenu du sac\n");
    outview.setEditable(false);
    JScrollPane scrollPane = new JScrollPane(outview, JScrollPane.VERTICAL_SCROLLBAR_ALWAYS, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
    add(scrollPane);
    
    setVisible(true);
  }
  public void actionPerformed(ActionEvent e) {
    if (e.getSource().equals(quitButton))
    	System.exit(0);
    else if (e.getSource().equals(affranchir)){	
    	outview.append("afranchir : "+sac.affranchir()+"\n");
    }
    else if (e.getSource().equals(ajouter)){
    	if(scrollBox.getSelectedItem()== "Lettre"){
    		try {
    			Lettre tmp= new Lettre(urgent.isSelected());
					sac.ajouter(tmp);
					outview.append(tmp.toString()+"\n");
				} catch (SacPleinException e1) {
					pop("Sac plein", sac.getVolume(), sac.getVolMax());
					outview.append("Sac plein\n");
				}
    	}
    	else {
    		try {
    			Colis tmp= new Colis(Integer.parseInt(volumeColis.getText()));
    			sac.ajouter(tmp);
    			outview.append(tmp.toString()+"\n");
				} catch (SacPleinException e1) {
					outview.append("Erreur Sac plein\n");
					pop("Sac plein", sac.getVolume(), sac.getVolMax());
				} catch (NumberFormatException e1){
					outview.append("Erreur Champs invalide\n");
				}
    	}
    }
    else if (e.getSource().equals(scrollBox)){
    	if(scrollBox.getSelectedItem()== "Lettre"){
    		urgent.setEnabled(true);
    		volumeColis.setEnabled(false);
    	}
    	else {
    		urgent.setEnabled(false);
    		volumeColis.setEnabled(true);
    	}
    }
  }
  public void pop(String sms, double val, double max){
  	JOptionPane.showMessageDialog(this, "current is "+val+", max is "+max ,sms,JOptionPane.ERROR_MESSAGE);
   }
}

