From 5b71dc555362e454b419751331b52009476dea69 Mon Sep 17 00:00:00 2001 From: Jenson VAL Date: Thu, 23 Oct 2025 09:00:30 +0200 Subject: [PATCH] implementation des theme --- src/fr/iutfbleau/papillon/FenetreModif.java | 288 ++++++++++---------- 1 file changed, 148 insertions(+), 140 deletions(-) diff --git a/src/fr/iutfbleau/papillon/FenetreModif.java b/src/fr/iutfbleau/papillon/FenetreModif.java index d4558b1..bfc8773 100644 --- a/src/fr/iutfbleau/papillon/FenetreModif.java +++ b/src/fr/iutfbleau/papillon/FenetreModif.java @@ -1,140 +1,148 @@ -import javax.swing.*; -import java.awt.*; -import java.awt.event.*; - -public class FenetreModif extends JFrame implements ActionListener { - - private final Main parent; // fenêtre principal (peut être null si tu veux) - private final Rappel rappel; // rappel à modifier (peut être null si tu veux) - private GestionRappel ges = new GestionRappel(); - - private final JTextField champTitre; - private final JTextArea champContenu; - private Integer[] nombres = {1, 2, 3, 4, 5}; - private JComboBox rang = new JComboBox<>(nombres); - private final JTextField theme; - private final JButton boutonValider; - private final JButton boutonAnnuler; - - /** - * @param parent la fenêtre principale (utilisée pour revenir au même endroit) - * @param rappel le rappel à modifier (peut être null si tu veux juste récupérer des valeurs) - * @param titre titre initial à afficher (utilisé si rappel==null ou si tu préfères passer la valeur) - * @param contenu contenu initial à afficher (idem) - */ - public FenetreModif(Main parent, Rappel rappel, String titre, String contenu) { - super("Modifier un rappel"); - this.parent = parent; - this.rappel = rappel; - - setSize(350, 250); - setResizable(false); - setLocation(parent.getLocation()); // même position que Main - setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - - // ------ UI ------ - 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; - - // Titre - JLabel lblTitre = new JLabel("Titre :"); - champTitre = new JTextField(20); - c.gridx = 0; c.gridy = 0; c.weightx = 0; - centre.add(lblTitre, c); - c.gridx = 1; c.gridy = 0; c.weightx = 1; - centre.add(champTitre, c); - - // Contenu - JLabel lblContenu = new JLabel("Contenu :"); - champContenu = new JTextArea(4, 20); - champContenu.setLineWrap(true); // active le retour à la ligne - champContenu.setWrapStyleWord(true); // évite de couper un mot en plein milieu - JScrollPane scroll = new JScrollPane(champContenu); - - c.gridx = 0; c.gridy = 1; c.weightx = 0; - centre.add(lblContenu, c); - c.fill = GridBagConstraints.BOTH; - c.gridx = 1; c.gridy = 1; c.weightx = 1; c.weighty = 1.0; - centre.add(scroll, c); - - // rang - c.fill = GridBagConstraints.HORIZONTAL; - rang.setSelectedIndex(rappel.getRang()-1); - JLabel lblRang = new JLabel("Rang :"); - c.gridx = 0; c.gridy = 2; c.weightx = 0; - centre.add(lblRang, c); - c.gridx = 1; c.gridy = 2; c.weightx = 1; - centre.add(rang, c); - - // theme - JLabel lblTheme = new JLabel("Theme"); - theme = new JTextField(20); - c.gridx = 0; c.gridy = 3; c.weightx = 0; - centre.add(lblTheme, c); - c.gridx = 1; c.gridy = 3; c.weightx = 1; - centre.add(theme, c); - - add(centre, BorderLayout.CENTER); - - // Bas : boutons - JPanel bas = new JPanel(new FlowLayout(FlowLayout.RIGHT)); - boutonValider = new JButton("Valider"); - boutonAnnuler = new JButton("Annuler"); - boutonValider.addActionListener(this); - boutonAnnuler.addActionListener(this); - bas.add(boutonValider); - bas.add(boutonAnnuler); - add(bas, BorderLayout.SOUTH); - - champTitre.setText(rappel.getTitre()); - champContenu.setText(rappel.getContenu()); - - } - - - @Override - public void actionPerformed(ActionEvent e) { - Object src = e.getSource(); - - if (src == boutonAnnuler) { - - parent.setLocation(this.getLocation()); - parent.setVisible(true); - this.dispose(); - return; - } - - if (src == boutonValider) { - String t = champTitre.getText().trim(); - String c = champContenu.getText().trim(); - int r = (Integer) rang.getSelectedItem(); - - if (t.isEmpty() || c.isEmpty()) { - JOptionPane.showMessageDialog(this, "Veuillez remplir les deux champs.", "Champs manquants", JOptionPane.WARNING_MESSAGE); - return; - } - - // MAJ directe du rappel - - rappel.setTitre(t); - rappel.setContenu(c); - rappel.setRang(r); - try{ - ges.modifierParId(rappel.getId(), rappel); - } catch (Exception ex) { - ex.printStackTrace(); - } - - - Main reParent = new Main(); - reParent.setLocation(this.getLocation()); - reParent.setVisible(true); - dispose(); - } - } - -} +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +public class FenetreModif extends JFrame implements ActionListener { + + private final Main parent; // fenêtre principal (peut être null si tu veux) + private final Rappel rappel; // rappel à modifier (peut être null si tu veux) + private GestionRappel ges = new GestionRappel(); + + private final JTextField champTitre; + private final JTextArea champContenu; + private Integer[] nombres = {1, 2, 3, 4, 5}; + private JComboBox rang = new JComboBox<>(nombres); + // private final JTextField theme; + + private final String[] nomsCouleurs = {"Bleu", "Rouge", "Vert", "Jaune", "Gris"}; + private final JComboBox comboTheme = new JComboBox<>(nomsCouleurs); + + private final JButton boutonValider; + private final JButton boutonAnnuler; + + /** + * @param parent la fenêtre principale (utilisée pour revenir au même endroit) + * @param rappel le rappel à modifier (peut être null si tu veux juste récupérer des valeurs) + * @param titre titre initial à afficher (utilisé si rappel==null ou si tu préfères passer la valeur) + * @param contenu contenu initial à afficher (idem) + */ + public FenetreModif(Main parent, Rappel rappel, String titre, String contenu) { + super("Modifier un rappel"); + this.parent = parent; + this.rappel = rappel; + + setSize(350, 250); + setResizable(false); + setLocation(parent.getLocation()); // même position que Main + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + + // ------ UI ------ + 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; + + // Titre + JLabel lblTitre = new JLabel("Titre :"); + champTitre = new JTextField(20); + c.gridx = 0; c.gridy = 0; c.weightx = 0; + centre.add(lblTitre, c); + c.gridx = 1; c.gridy = 0; c.weightx = 1; + centre.add(champTitre, c); + + // Contenu + JLabel lblContenu = new JLabel("Contenu :"); + champContenu = new JTextArea(4, 20); + champContenu.setLineWrap(true); // active le retour à la ligne + champContenu.setWrapStyleWord(true); // évite de couper un mot en plein milieu + JScrollPane scroll = new JScrollPane(champContenu); + + c.gridx = 0; c.gridy = 1; c.weightx = 0; + centre.add(lblContenu, c); + c.fill = GridBagConstraints.BOTH; + c.gridx = 1; c.gridy = 1; c.weightx = 1; c.weighty = 1.0; + centre.add(scroll, c); + + // rang + c.fill = GridBagConstraints.HORIZONTAL; + rang.setSelectedIndex(rappel.getRang()-1); + JLabel lblRang = new JLabel("Rang :"); + c.gridx = 0; c.gridy = 2; c.weightx = 0; + centre.add(lblRang, c); + c.gridx = 1; c.gridy = 2; 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(rappel.getTheme()); // valeur par défaut + centre.add(comboTheme, c); + + add(centre, BorderLayout.CENTER); + + // Bas : boutons + JPanel bas = new JPanel(new FlowLayout(FlowLayout.RIGHT)); + boutonValider = new JButton("Valider"); + boutonAnnuler = new JButton("Annuler"); + boutonValider.addActionListener(this); + boutonAnnuler.addActionListener(this); + bas.add(boutonValider); + bas.add(boutonAnnuler); + add(bas, BorderLayout.SOUTH); + + champTitre.setText(rappel.getTitre()); + champContenu.setText(rappel.getContenu()); + + } + + + @Override + public void actionPerformed(ActionEvent e) { + Object src = e.getSource(); + + if (src == boutonAnnuler) { + + parent.setLocation(this.getLocation()); + parent.setVisible(true); + this.dispose(); + return; + } + + if (src == boutonValider) { + String t = champTitre.getText().trim(); + String c = champContenu.getText().trim(); + int r = (Integer) rang.getSelectedItem(); + String th = (String) comboTheme.getSelectedItem(); + + if (t.isEmpty() || c.isEmpty()) { + JOptionPane.showMessageDialog(this, "Veuillez remplir les deux champs.", "Champs manquants", JOptionPane.WARNING_MESSAGE); + return; + } + + // MAJ directe du rappel + + rappel.setTitre(t); + rappel.setContenu(c); + rappel.setRang(r); + rappel.setTheme(th); + try{ + ges.modifierParId(rappel.getId(), rappel); + } catch (Exception ex) { + ex.printStackTrace(); + } + + + Main reParent = new Main(); + reParent.setLocation(this.getLocation()); + reParent.setVisible(true); + dispose(); + } + } + +}