This commit is contained in:
2025-10-26 03:30:51 +01:00
parent d5f64601a4
commit f05e5375de
12 changed files with 180 additions and 116 deletions
@@ -1,3 +1,5 @@
package fr.iutfbleau.papillon;
import java.sql.*;
/**
@@ -1,6 +1,5 @@
package fr.iutfbleau.papillon;
import java.util.ArrayList;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
@@ -1,6 +1,5 @@
package fr.iutfbleau.papillon;
import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
@@ -1,32 +0,0 @@
public class FichierDemarrage {
public static void main(String[] args) {
try {
String cle = UserKey.lireOuCreerCle();
int userId = UtilisateurBD.getOrCreateUserId(cle, "local_user");
// Démo rapide
Rappel r = new Rappel("Faire le TD", "chapitre JDBC", "Travail", 2);
int idNew = RappelBD.ajouterPourUtilisateur(userId, r);
for (Rappel x : RappelBD.listerParUtilisateur(userId)) {
System.out.println(" - " + x.toString());
}
r.setTitre("Faire le TD (MAJ)");
RappelBD.modifierPourUtilisateur(userId, r.getId(), r);
for (Rappel x : RappelBD.listerParUtilisateur(userId)) {
System.out.println(" * " + x.toString());
}
RappelBD.supprimerPourUtilisateur(userId, r.getId());
for (Rappel x : RappelBD.listerParUtilisateur(userId)) {
System.out.println(" # " + x.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
@@ -2,7 +2,6 @@ package fr.iutfbleau.papillon;
import java.util.ArrayList;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
+121 -9
View File
@@ -1,41 +1,84 @@
package fr.iutfbleau.papillon;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
/**
* La classe <code>PanelRappel</code> représente laffichage graphique
* dun rappel dans lapplication <b>Papillon</b>.
* <p>
* Chaque panneau contient le titre, un aperçu du contenu, ainsi quune
* couleur correspondant au thème du rappel.
* Lutilisateur peut interagir avec ce panneau (sélection, clic droit, etc.).
* </p>
*
* @version 1.0
* @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
*/
public class PanelRappel extends JPanel implements ActionListener, MouseListener {
/** Indique si le rappel est actuellement sélectionné. */
private boolean estSelectionne = false;
/** Label affichant le titre du rappel. */
private JLabel lbtitre;
/** Label affichant un aperçu du contenu du rappel. */
private JLabel lbcontenu;
/** Référence vers le rappel associé à ce panneau. */
private Rappel r;
/** Menu contextuel (clic droit). */
private JPopupMenu menu;
/** Élément du menu permettant douvrir le rappel. */
private JMenuItem itemOuvrir;
/** Référence à la fenêtre principale. */
private Main main;
/** Liste des couleurs disponibles pour les thèmes. */
private static CouleurList couleur = new CouleurList();
/**
* Constructeur du panneau associé à un rappel et à la fenêtre principale.
*
* @param r le rappel à afficher
* @param main la fenêtre principale
*/
public PanelRappel(Rappel r, Main main) {
super(new BorderLayout(2, 0));
this.main = main;
createPanel(r);
}
/**
* Constructeur du panneau associé à un rappel sans référence à la fenêtre principale.
*
* @param r le rappel à afficher
*/
public PanelRappel(Rappel r) {
super(new BorderLayout(2, 0));
createPanel(r);
}
/**
* Initialise et configure le panneau pour afficher les informations du rappel.
*
* @param r le rappel à afficher
*/
public void createPanel(Rappel r){
this.r = r;
// --- Titre et contenu raccourci ---
// Titre et contenu raccourci
lbtitre = new JLabel("[" + r.getRang() + "] " + r.getTitre());
lbcontenu = new JLabel(
"<html>" + (r.getContenu().length() > 40 ? r.getContenu().substring(0, 40) + "..." : r.getContenu()) + "</html>"
);
// --- Apparence de base ---
// - Apparence de base
this.setPreferredSize(new Dimension(70, 50));
this.setBackground(couleur.couleurDe(r.getTheme()));
this.setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY, 2));
@@ -44,44 +87,69 @@ public class PanelRappel extends JPanel implements ActionListener, MouseListener
GridBagConstraints c = new GridBagConstraints();
c.anchor = GridBagConstraints.NORTHWEST;
// --- Position du titre ---
// - Position du titre
c.gridx = 0;
c.gridy = 0;
c.weightx = 1;
c.fill = GridBagConstraints.NONE;
add(lbtitre, c);
// --- Position du contenu ---
// -Position du contenu
c.gridx = 0;
c.gridy = 1;
c.weightx = 1;
c.fill = GridBagConstraints.NONE;
add(lbcontenu, c);
// --- Menu contextuel (clic droit) ---
// - Menu contextuel (clic droit)
menu = new JPopupMenu();
itemOuvrir = new JMenuItem("Ouvrir");
itemOuvrir.addActionListener(this);
menu.add(itemOuvrir);
// --- Activation des clics ---
// - Activation des clics
addMouseListener(this);
}
// === GETTERS ===
// GETTERS
/**
* Indique si le panneau est actuellement sélectionné.
*
* @return true si le panneau est sélectionné, false sinon
*/
public boolean getSelection() {
return estSelectionne;
}
/**
* Renvoie lidentifiant du rappel affiché.
*
* @return lidentifiant unique du rappel
*/
public int getId() {
return r.getId();
}
/**
* Renvoie le rappel associé à ce panneau.
*
* @return le rappel affiché dans ce panneau
*/
public Rappel getRappel() {
return r;
}
// === ACTIONS ===
/**
* Gère les actions déclenchées par les éléments du menu contextuel.
* <p>
* Si lutilisateur clique sur "Ouvrir", la fenêtre détaillée du rappel est affichée.
* </p>
*
* @param e l’événement daction déclenché
*/
@Override
public void actionPerformed(ActionEvent e) {
Object src = e.getSource();
@@ -92,7 +160,15 @@ public class PanelRappel extends JPanel implements ActionListener, MouseListener
}
}
// === GESTION DES CLICS SOURIS ===
/**
* Gère les clics de souris sur le panneau.
* <p>
* Un clic gauche sélectionne/désélectionne le panneau,
* tandis quun clic droit affiche le menu contextuel.
* </p>
*
* @param e l’événement de souris détecté
*/
@Override
public void mousePressed(MouseEvent e) {
if (e.isPopupTrigger()) {
@@ -104,6 +180,15 @@ public class PanelRappel extends JPanel implements ActionListener, MouseListener
}
}
/**
* Gère la libération du clic de souris.
* <p>
* Si le clic est un clic droit, le menu contextuel saffiche.
* </p>
*
* @param e l’événement de souris
*/
@Override
public void mouseReleased(MouseEvent e) {
if (e.isPopupTrigger()) {
@@ -111,6 +196,15 @@ public class PanelRappel extends JPanel implements ActionListener, MouseListener
}
}
/**
* Gère les clics simples ou doubles sur le panneau.
* <p>
* Un double clic gauche ouvre la fenêtre de rappel complète.
* </p>
*
* @param e l’événement de souris
*/
@Override
public void mouseClicked(MouseEvent e) {
// === Double clic pour ouvrir la vue complète ===
@@ -120,17 +214,35 @@ public class PanelRappel extends JPanel implements ActionListener, MouseListener
}
}
/**
* Change lapparence du panneau lorsque la souris entre dans sa zone.
*
* @param e l’événement de souris
*/
@Override
public void mouseEntered(MouseEvent e) {
setBorder(BorderFactory.createLineBorder(Color.BLACK, 1));
}
/**
* Restaure la bordure du panneau lorsque la souris quitte sa zone.
*
* @param e l’événement de souris
*/
@Override
public void mouseExited(MouseEvent e) {
setBorder(BorderFactory.createLineBorder(Color.LIGHT_GRAY, 1));
}
/**
* Met à jour lapparence du panneau en fonction de son état de sélection.
* <p>
* Si le panneau est sélectionné, son fond devient gris clair
* et une bordure noire est appliquée.
* Sinon, la couleur de fond correspond au thème du rappel.
* </p>
*/
private void majApparence() {
if (estSelectionne) {
setBackground(Color.LIGHT_GRAY);
+3 -1
View File
@@ -1,9 +1,11 @@
package fr.iutfbleau.papillon;
/**
* La classe <code>Rappel</code> représente un rappel utilisateur,
* avec un titre, un contenu, un thème et un rang de priorité.
*
* @version 1.0
* @author Seri-khane Yolou, Aylane SEHL, Jenson VAL
* @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
*/
public class Rappel {
+1 -1
View File
@@ -49,4 +49,4 @@ public class Utilisateur {
public String toString() {
return "Utilisateur [id=" + id + ", cle=" + cle + "]";
}
}
}
+3 -1
View File
@@ -1,3 +1,5 @@
package fr.iutfbleau.papillon;
import java.sql.*;
/**
@@ -7,7 +9,7 @@ import java.sql.*;
* et de lire un utilisateur complet via sa clé.</p>
*
* @version 1.0
* @author Junior
* @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
*/
public class UtilisateurBD {
Binary file not shown.

After

Width:  |  Height:  |  Size: 840 KiB