package fr.iutfbleau.papillon;

import javax.swing.*;
import java.awt.*;


/**
 * La classe <code>FenetreAjout</code> permet d’afficher une fenêtre
 * dédiée à l’ajout d’un nouveau rappel dans l’application <b>Papillon</b>.
 * <p>
 * Elle contient les champs nécessaires à la saisie du titre, du contenu,
 * de la priorité et du thème du rappel.
 * </p>
 *
 * @version 1.0
 * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
 */
public class FenetreAjout extends JFrame {

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

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

    /** Liste de niveaux de priorité disponibles. */
    private Integer[] nombres = {1, 2, 3, 4, 5};

    /** Sélecteur du niveau de priorité. */
    private JComboBox<Integer> rang = new JComboBox<>(nombres);

    /** Liste des noms de thèmes disponibles. */
    private final String[] nomsCouleurs = {"Bleu", "Rouge", "Vert", "Jaune", "Rose"};
    
    /** Sélecteur du thème du rappel. */
    private final JComboBox<String> comboTheme = new JComboBox<>(nomsCouleurs);

    /** Gestionnaire des boutons d'ajout. */
    private GestionAjout listBtnAjout;

    /**
     * Constructeur de la fenêtre d’ajout.
     *
     * @param parent la fenêtre principale de l’application <b>Papillon</b>
     */
    public FenetreAjout(Main parent) {
        super("Ajouter un rappel");
        ImageIcon logo = new ImageIcon("logo.png");
        setIconImage(logo.getImage());

        setSize(350, 250);
        setAlwaysOnTop(true);
        setResizable(false);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        // Layout principal
        setLayout(new BorderLayout(10, 10));
        JPanel centre = new JPanel(new GridBagLayout());
        GridBagConstraints c = new GridBagConstraints();
        c.insets = new Insets(4, 4, 4, 4);
        c.fill = GridBagConstraints.HORIZONTAL;
        add(centre, BorderLayout.CENTER);

        // Titre
        JLabel lblTitre = new JLabel("Titre :");
        champTitre = new JTextField(50);
        champTitre.setDocument(new LimiteContenu(50));
        c.gridx = 0; 
        c.gridy = 1; 
        c.weightx = 0;
        centre.add(lblTitre, c);
        c.gridx = 1; 
        c.gridy = 1; 
        c.weightx = 1;
        centre.add(champTitre, c);

        // Contenu
        JLabel lblContenu = new JLabel("Contenu :");
        champContenu = new JTextArea(4, 20);
        champContenu.setDocument(new LimiteContenu(200));
        champContenu.setLineWrap(true); // active le retour à la ligne
        champContenu.setWrapStyleWord(true); // évite de couper un mot en plein milieu
        JScrollPane scroll = new JScrollPane(champContenu,
        JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED,
        JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);

        c.gridx = 0; 
        c.gridy = 2;
        c.weightx = 0;
        c.fill = GridBagConstraints.BOTH;
        centre.add(lblContenu, c);
        c.gridx = 1; 
        c.gridy = 2; 
        c.weightx = 1.0; 
        c.weighty = 1.0;  
        centre.add(scroll, c);

        // Rang
        JLabel lblrang = new JLabel("Rang :");
        c.gridx = 0; 
        c.gridy = 3; 
        c.weightx = 0; 
        c.weighty = 0.0;
        centre.add(lblrang, c);
        c.gridx = 1; 
        c.gridy = 3; 
        c.weightx = 1;
        centre.add(rang, c); 

        // Theme
        c.gridx = 0; 
        c.gridy = 4; 
        c.weightx = 0;
        centre.add(new JLabel("Theme :"), c);

        // liste déroulante de couleurs
        c.gridx = 1; 
        c.gridy = 4; 
        c.weightx = 1;
        comboTheme.setRenderer(new CouleurList());
        comboTheme.setSelectedItem("Bleu"); // valeur par défaut
        centre.add(comboTheme, c);


        // Bas : boutons
        JPanel bas = new JPanel(new FlowLayout(FlowLayout.RIGHT, 10, 10));

        listBtnAjout = new GestionAjout(this,parent,champTitre,champContenu,rang,comboTheme);
        bas.add(listBtnAjout.get(0));
        bas.add(listBtnAjout.get(1));
        add(bas, BorderLayout.SOUTH);
    }


}
