package fr.iutfbleau.papillon;

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

/**
 * La classe <code>GestionAjout</code> gère les boutons de la fenêtre
 * d’ajout d’un rappel dans l’application <b>Papillon</b>.
 * <p>
 * Elle contient les boutons <b>Valider</b> et <b>Annuler</b>, et définit
 * le comportement associé à chacun d’eux.
 * </p>
 *
 * @version 1.0
 * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
 */
public class GestionAjout extends ArrayList<JButton> implements ActionListener{

    /** Bouton de validation. */
    private final JButton boutonValider;

    /** Bouton d'annulation. */
    private final JButton boutonAnnuler;

    /** Champ de saisie pour le titre du rappel. */
    private final JTextField champTitre;

    /** Champ de saisie pour le contenu du rappel. */
    private final JTextArea champContenu;

    /** Sélecteur du niveau de priorité. */
    private JComboBox<Integer> rang;

    /** Sélecteur du thème du rappel. */
    private final JComboBox<String> comboTheme;

    /** Référence à la fenêtre principale. */
    private final Main parent;

    /** Référence à la fenêtre d'ajout. */
    private final JFrame f;


    /**
     * Constructeur du gestionnaire de boutons pour la fenêtre d’ajout.
     *
     * @param f la fenêtre d’ajout
     * @param parent la fenêtre principale
     * @param champTitre le champ de texte pour le titre
     * @param champContenu la zone de texte pour le contenu
     * @param rang la liste déroulante de priorité
     * @param comboTheme la liste déroulante du thème
     */
    public GestionAjout(JFrame f, Main parent, JTextField champTitre, JTextArea champContenu, JComboBox<Integer> rang, JComboBox<String> comboTheme){

        this.f = f;
        this.parent = parent;
        this.champTitre = champTitre;
        this.champContenu = champContenu;
        this.rang = rang;
        this.comboTheme = comboTheme;

        boutonValider = new JButton("Valider");
        boutonAnnuler = new JButton("Annuler");
        this.add(boutonValider);
        this.add(boutonAnnuler);
        boutonValider.addActionListener(this);
        boutonAnnuler.addActionListener(this);

    }

    /**
     * Gère les actions effectuées sur les boutons de la fenêtre.
     * <p>
     * Si l’utilisateur clique sur <b>Annuler</b>, la fenêtre d’ajout est fermée
     * et la fenêtre principale est réaffichée.  
     * Si l’utilisateur clique sur <b>Valider</b>, un nouveau rappel est créé
     * et ajouté à la liste principale.
     * </p>
     *
     * @param e l’événement d’action déclenché par un clic sur un bouton
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        Object src = e.getSource();

        if (src == boutonAnnuler) {
            // revenir à la fenêtre principale
            Point pos = f.getLocation();

            parent.setLocation(pos);
            parent.setVisible(true);
            f.dispose();
            return;
        }

        if (src == boutonValider) {
            String titre = champTitre.getText().trim();
            String contenu = champContenu.getText().trim();
            int Nrang = (Integer) rang.getSelectedItem();
            String cTheme = (String)comboTheme.getSelectedItem();


            GestionRappel g = new GestionRappel();

            if (titre.isEmpty()) {
                JOptionPane.showMessageDialog(f, "Veuillez remplir tout le titre.", "Champs manquants", JOptionPane.WARNING_MESSAGE);
                return;
            }else{

            try{
                g.ajouter(titre, contenu, cTheme, Nrang);
            } catch (Exception ex) {
                ex.printStackTrace(); // affiche l'erreur dans le terminal
            }

        }
            
            Main reParent = new Main();
            reParent.setLocation(f.getLocation());
            reParent.setVisible(true);
            f.dispose();
        }
    }
}