package vue;

import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import controleur.Cheval;
import modele.ModeleCheval;

public class FormChevaux extends JPanel implements ActionListener 
{
	private static final long serialVersionUID = -2223951904837426516L;
	String[] formState = { "VISUALISER", "AJOUTER", "SUPPRIMER" };
	String id, nom, sexe, robe, type, race, proprietaire, age, imagecheval = "";
	int selection;
	private JComboBox<String> choiceForm = new JComboBox<>(formState);
	private JLabel txtId = new JLabel();
	private JTextField txtNom = new JTextField("");
	private ButtonGroup groupSexe = new ButtonGroup();
	private JRadioButton txtSexeF = new JRadioButton("Femelle");
	private JRadioButton txtSexeH = new JRadioButton("Mâle");
	private JTextField txtRobe = new JTextField();
	private JTextField txtType = new JTextField("");
	private JTextField txtRace = new JTextField("");
	private JTextField txtProprietaire = new JTextField("");
	private JTextField txtAge = new JTextField("");
	//IMG Cheval
	private JButton btAnnuler = new JButton("Annuler");
	private JButton btAjouter = new JButton("Editer");
	public FormChevaux()
	{
		//Configuration des composants
		JLabel lbVide1 = new JLabel("");JLabel lbVide2 = new JLabel("");
		this.setBounds(50, 80, 650, 250);this.setLayout(new GridLayout(0, 2));this.setBackground(new Color(222,220,203));
		JLabel lbId = new JLabel(" ID :");lbId.setFont(new Font(lbId.getText(), Font.CENTER_BASELINE, 18));
		JLabel lbNom = new JLabel(" Nom :");lbNom.setFont(new Font(lbNom.getText(), Font.CENTER_BASELINE, 18));
		JLabel lbSexe = new JLabel(" Sexe :");lbSexe.setFont(new Font(lbSexe.getText(), Font.CENTER_BASELINE, 18));
		txtSexeF.setMnemonic(KeyEvent.VK_B);txtSexeH.setMnemonic(KeyEvent.VK_B);
		txtSexeF.setActionCommand("FEMELLE");txtSexeH.setActionCommand("MALE");txtSexeF.setSelected(true);
		JLabel lbRobe = new JLabel(" Robe :");lbRobe.setFont(new Font(lbRobe.getText(), Font.CENTER_BASELINE, 18));
		JLabel lbType = new JLabel(" Type :");lbType.setFont(new Font(lbType.getText(), Font.CENTER_BASELINE, 18));
		JLabel lbRace = new JLabel(" Race :");lbRace.setFont(new Font(lbRace.getText(), Font.CENTER_BASELINE, 18));
		JLabel lbProprietaire = new JLabel(" Proprietaire :");lbProprietaire.setFont(new Font(lbProprietaire.getText(), Font.CENTER_BASELINE, 18));
		JLabel lbAge = new JLabel(" Âge :");lbAge.setFont(new Font(lbAge.getText(), Font.CENTER_BASELINE, 18));
		choiceForm.setSelectedIndex(0);choiceForm.addActionListener(this);
		//IMG Cheval
		this.btAnnuler.setIcon(new ImageIcon(new ImageIcon("src/images/choix1.png").getImage().getScaledInstance(15, 15, Image.SCALE_DEFAULT)));this.btAnnuler.addActionListener(this);
		this.btAjouter.setIcon(new ImageIcon(new ImageIcon("src/images/choix2.png").getImage().getScaledInstance(15, 15, Image.SCALE_DEFAULT)));this.btAjouter.addActionListener(this);
		// Affichage des composants
		this.add(lbId); this.add(this.txtId);
		this.add(lbNom); this.add(this.txtNom);
		this.add(lbSexe); this.add(this.txtSexeF);
		this.add(lbVide1); this.add(this.txtSexeH);
		groupSexe.add(txtSexeF); groupSexe.add(txtSexeH);
		this.add(lbRobe); this.add(this.txtRobe);
		this.add(lbType); this.add(this.txtType);
		this.add(lbRace); this.add(this.txtRace);
		this.add(lbProprietaire); this.add(this.txtProprietaire);
		this.add(lbAge); this.add(this.txtAge);
		this.add(this.choiceForm); this.add(lbVide2);
		this.add(this.btAnnuler); this.add(this.btAjouter);
	}
	@Override
	public void actionPerformed(ActionEvent e) {
		// TODO Stub de la méthode généré automatiquement
		if(e.getSource()==this.btAnnuler){
			this.txtId.setText("");
			this.txtNom.setText("");this.txtNom.setBackground(Color.WHITE);
			this.txtSexeF.setSelected(true);
			this.txtRobe.setText("");this.txtRobe.setBackground(Color.WHITE);
			this.txtType.setText("");this.txtType.setBackground(Color.WHITE);
			this.txtRace.setText("");this.txtRace.setBackground(Color.WHITE);
			this.txtProprietaire.setText("");this.txtProprietaire.setBackground(Color.WHITE);
			this.txtAge.setText("");this.txtAge.setBackground(Color.WHITE);	
			//IMG Cheval
		}
		else if (e.getSource()==this.btAjouter) {
			int selection = choiceForm.getSelectedIndex();
			switch(selection) {
			case 0: //VISUALISE
			{
				Cheval unCheval = ModeleCheval.selectWhere(txtNom.getText());
				if(unCheval == null) {
					this.txtNom.setBackground(Color.RED);
					JOptionPane.showMessageDialog(this, "Veuillez vérifier le nom du cheval !");
				}
				else {
					this.txtNom.setBackground(Color.WHITE);	
					this.txtId.setText(String.valueOf(unCheval.getId()));
					this.txtNom.setText(unCheval.getNom());
					this.txtSexeF.setSelected(true);//A VERIFIER
					this.txtRobe.setText(String.valueOf(unCheval.getRobe()));
					this.txtType.setText(unCheval.getType());
					this.txtRace.setText(unCheval.getRace());
					this.txtProprietaire.setText(unCheval.getProprietaire());
					this.txtAge.setText(String.valueOf(unCheval.getAge()));
					//image
					JOptionPane.showMessageDialog(this, "Visualisation reussie");
				}
			}
			break;
			case 1://AJOUTER
				try{
					this.txtNom.getText();
					if((txtNom.getText().equals(""))||(txtRobe.getText().equals(""))||(txtType.getText().equals(""))||(txtRace.getText().equals(""))||(txtProprietaire.getText().equals(""))||(txtAge.getText().equals(""))) 
					{
						JOptionPane.showMessageDialog(this, "Veuillez saisir toutes les valeurs dans les champs vide");
						this.txtNom.setBackground(Color.RED);
						this.txtRobe.setBackground(Color.RED);
						this.txtType.setBackground(Color.RED);
						this.txtRace.setBackground(Color.RED);
						this.txtProprietaire.setBackground(Color.RED);
						this.txtAge.setBackground(Color.RED);
					}
					else {
						this.txtNom.setBackground(Color.WHITE);	
						Cheval unCheval = new Cheval(txtNom.getText(), txtSexeF.getText(), txtRobe.getText(), txtType.getText(), txtRace.getText(), txtProprietaire.getText(), Integer.parseInt(txtAge.getText()));
						ModeleCheval.insert(unCheval);
						JOptionPane.showMessageDialog(this, "Insertion reussie");
						this.txtNom.setText("");
						this.txtSexeF.setSelected(true);
						this.txtRobe.setText("");
						this.txtType.setText("");
						this.txtRace.setText("");
						this.txtProprietaire.setText("");
						this.txtAge.setText("");
					}
					this.setVisible(true); // fin d'enregistrement
				}
				catch (NumberFormatException exp)
				{
					JOptionPane.showMessageDialog(this,"Erreur dans la saisie");
				}
			break;
				case 2://DELETE
					try {
						if(txtNom.getText().equals("")) {
							this.txtNom.setBackground(Color.RED);
							JOptionPane.showMessageDialog(this, "Veuillez saisir des valeurs dans les champs vide");
						}
						else {
							this.txtNom.setBackground(Color.WHITE);
							ModeleCheval.delete(txtNom.getText());
							JOptionPane.showMessageDialog(this, "Suppression reussie");
							this.txtNom.setText("");
						}
						this.setVisible(true);// fin d'enregistrement
					}
					catch (NumberFormatException exp) {
						this.txtNom.setBackground(Color.RED);
						JOptionPane.showMessageDialog(this,"Erreur dans la saisie");
					}
				break;
			}
		}
	}
	class StateListener implements ActionListener {
		public void actionPerformed(ActionEvent e) {
			System.out.println("source : " + ((JRadioButton)e.getSource()).getText() + " - état : " + ((JRadioButton)e.getSource()).isSelected());
		}
	}
}