diff --git a/Makefile b/Makefile
index 5d699bc..2636d5a 100644
--- a/Makefile
+++ b/Makefile
@@ -1,75 +1,56 @@
+# === Configuration ===
+SRC_DIR := src/fr/iutfbleau/papillon
+BUILD_DIR := build
+DOC_DIR := doc
+LIB_DIR := lib
+LIB := $(LIB_DIR)/mariadb
+MAIN_CLASS := fr.iutfbleau.papillon.Start
- ==== Paramètres du projet ====
-APP_NAME := papillon
-MAIN_CLASS := fr.iutfbleau.papillon.Start # <-- change si ton main est ailleurs
+# === Commandes principales ===
-SRC_DIR := src
-BUILD_DIR:= build
-DIST_DIR := dist
-RES_DIR := res
-LIB_DIR := lib
+# Compilation du projet
+compile:
+ @echo === Compilation du projet ===
+ javac -encoding UTF-8 -cp "$(LIB)" -d $(BUILD_DIR) $(SRC_DIR)/*.java
+ @echo Compilation terminee !
-Driver MariaDB
-DRIVER_JAR := $(LIB_DIR)/mariadb
-
-Séparateur de classpath selon OS
-ifeq ($(OS),Windows_NT)
- SEP := ;
-else
- SEP := :
-endif
-
-Liste des sources et classes correspondantes
-SOURCES := $(shell find $(SRC_DIR) -name ".java")
-CLASSES := $(SOURCES:$(SRC_DIR)/%.java=$(BUILD_DIR)/%.class)
-
-==== Règles ====
-.PHONY: all compile jar run run-jar clean rebuild
-
-all: compile
-
-$(BUILD_DIR):
- @mkdir -p $(BUILD_DIR)
-
-$(DIST_DIR):
- @mkdir -p $(DIST_DIR)
-
-Compilation de chaque .java vers build/ en respectant les packages
-$(BUILD_DIR)/%.class: $(SRC_DIR)/%.java | $(BUILD_DIR)
- @mkdir -p $(dir $@)
- javac -classpath "$(DRIVER_JAR)" -d $(BUILD_DIR) $<
-
-Compile tout + copie des ressources si dossier res/ existe
-compile: $(CLASSES)
- @if [ -d "$(RES_DIR)" ]; then \
- echo "Copie des ressources..."; \
- cp -r $(RES_DIR)/ $(BUILD_DIR)/; \
- fi
- @echo "==> Compilation OK"
-
-MANIFEST avec Main-Class et Class-Path (référence le driver)
-MANIFEST.MF:
- @echo "Manifest-Version: 1.0" > MANIFEST.MF
- @echo "Main-Class: $(MAIN_CLASS)" >> MANIFEST.MF
- @echo "Class-Path: ../$(DRIVER_JAR)" >> MANIFEST.MF
-
-Construction du JAR
-jar: compile MANIFEST.MF | $(DIST_DIR)
- jar cfm $(DIST_DIR)/$(APP_NAME).jar MANIFEST.MF -C $(BUILD_DIR) .
- @echo "==> JAR créé: $(DIST_DIR)/$(APP_NAME).jar"
-
-Exécution directe depuis build/ + driver sur le classpath
+# Exécution du programme
run: compile
- java -classpath "$(BUILD_DIR)$(SEP)$(DRIVER_JAR)" $(MAIN_CLASS)
-
-Exécution du .jar (le MANIFEST référence le driver dans lib/)
-run-jar: jar
- java -jar "$(DIST_DIR)/$(APP_NAME).jar"
-
-clean:
- rm -rf $(BUILD_DIR) $(DIST_DIR) MANIFEST.MF
-
-rebuild: clean all
+ @echo === Execution du programme ===
+ java -cp "$(BUILD_DIR);$(LIB)" $(MAIN_CLASS)
+# Génération de la documentation Javadoc
doc:
- javadoc -d doc/ src/*.java
\ No newline at end of file
+ @echo === Generation de la documentation Javadoc ===
+ javadoc -d $(DOC_DIR) -encoding UTF-8 -cp "$(LIB)" $(SRC_DIR)/*.java
+ @echo Documentation generee dans le dossier $(DOC_DIR)
+
+# === Création du JAR ===
+jar: compile
+ @echo === Creation du fichier JAR ===
+ echo Main-Class: $(MAIN_CLASS) > manifest.txt
+ jar cfm $(JAR_FILE) manifest.txt -C $(BUILD_DIR) .
+ @echo Archive JAR creee : $(JAR_FILE)
+ @del manifest.txt 2>nul || true
+
+# === Exécution du JAR ===
+run-jar: jar
+ @echo === Execution du JAR ===
+ java -cp "$(JAR_FILE);$(LIB)" -jar $(JAR_FILE)
+
+# Nettoyage du dossier build
+clean:
+ @echo === Nettoyage des fichiers compiles ===
+ @rmdir /s /q $(BUILD_DIR) 2>nul || true
+ @mkdir $(BUILD_DIR)
+ @echo Build nettoye.
+
+# Nettoyage complet (build + doc)
+reset: clean
+ @echo === Suppression de la documentation ===
+ @rmdir /s /q $(DOC_DIR) 2>nul || true
+ @mkdir $(DOC_DIR)
+ @echo Tout a ete nettoye.
+
+# Compilation + exécution directe
+all: compile run
diff --git a/logo.png b/logo.png
new file mode 100644
index 0000000..60280aa
Binary files /dev/null and b/logo.png differ
diff --git a/src/fr/iutfbleau/papillon/BaseDeDonnees.java b/src/fr/iutfbleau/papillon/BaseDeDonnees.java
index bf2e499..3f96a0d 100644
--- a/src/fr/iutfbleau/papillon/BaseDeDonnees.java
+++ b/src/fr/iutfbleau/papillon/BaseDeDonnees.java
@@ -1,3 +1,5 @@
+package fr.iutfbleau.papillon;
+
import java.sql.*;
/**
diff --git a/src/fr/iutfbleau/papillon/BtnAjouter.java b/src/fr/iutfbleau/papillon/BtnAjouter.java
index 5a0a2b2..cfcb7ac 100644
--- a/src/fr/iutfbleau/papillon/BtnAjouter.java
+++ b/src/fr/iutfbleau/papillon/BtnAjouter.java
@@ -1,6 +1,5 @@
package fr.iutfbleau.papillon;
-import java.util.ArrayList;
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
diff --git a/src/fr/iutfbleau/papillon/FenetreRappel.java b/src/fr/iutfbleau/papillon/FenetreRappel.java
index 95bddea..05e1a2d 100644
--- a/src/fr/iutfbleau/papillon/FenetreRappel.java
+++ b/src/fr/iutfbleau/papillon/FenetreRappel.java
@@ -1,6 +1,5 @@
package fr.iutfbleau.papillon;
-import javax.swing.event.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
diff --git a/src/fr/iutfbleau/papillon/FichierDemarrage.java b/src/fr/iutfbleau/papillon/FichierDemarrage.java
deleted file mode 100644
index 33e8bce..0000000
--- a/src/fr/iutfbleau/papillon/FichierDemarrage.java
+++ /dev/null
@@ -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();
- }
- }
-}
diff --git a/src/fr/iutfbleau/papillon/GestionModif.java b/src/fr/iutfbleau/papillon/GestionModif.java
index c71baa1..aa9747a 100644
--- a/src/fr/iutfbleau/papillon/GestionModif.java
+++ b/src/fr/iutfbleau/papillon/GestionModif.java
@@ -2,7 +2,6 @@ package fr.iutfbleau.papillon;
import java.util.ArrayList;
import javax.swing.*;
-import java.awt.*;
import java.awt.event.*;
diff --git a/src/fr/iutfbleau/papillon/PanelRappel.java b/src/fr/iutfbleau/papillon/PanelRappel.java
index dc28efb..5995a72 100644
--- a/src/fr/iutfbleau/papillon/PanelRappel.java
+++ b/src/fr/iutfbleau/papillon/PanelRappel.java
@@ -1,41 +1,84 @@
+package fr.iutfbleau.papillon;
+
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
+/**
+ * La classe PanelRappel représente l’affichage graphique
+ * d’un rappel dans l’application Papillon.
+ *
+ * Chaque panneau contient le titre, un aperçu du contenu, ainsi qu’une + * couleur correspondant au thème du rappel. + * L’utilisateur peut interagir avec ce panneau (sélection, clic droit, etc.). + *
+ * + * @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 d’ouvrir 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( "" + (r.getContenu().length() > 40 ? r.getContenu().substring(0, 40) + "..." : r.getContenu()) + "" ); - // --- 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 l’identifiant du rappel affiché. + * + * @return l’identifiant 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. + *+ * Si l’utilisateur clique sur "Ouvrir", la fenêtre détaillée du rappel est affichée. + *
+ * + * @param e l’événement d’action 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. + *+ * Un clic gauche sélectionne/désélectionne le panneau, + * tandis qu’un clic droit affiche le menu contextuel. + *
+ * + * @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. + *+ * Si le clic est un clic droit, le menu contextuel s’affiche. + *
+ * + * @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. + *+ * Un double clic gauche ouvre la fenêtre de rappel complète. + *
+ * + * @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 l’apparence 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 l’apparence du panneau en fonction de son état de sélection. + *+ * 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. + *
+ */ private void majApparence() { if (estSelectionne) { setBackground(Color.LIGHT_GRAY); diff --git a/src/fr/iutfbleau/papillon/Rappel.java b/src/fr/iutfbleau/papillon/Rappel.java index 46e6fb7..6b018ba 100644 --- a/src/fr/iutfbleau/papillon/Rappel.java +++ b/src/fr/iutfbleau/papillon/Rappel.java @@ -1,9 +1,11 @@ +package fr.iutfbleau.papillon; + /** * La classeRappel 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 {
diff --git a/src/fr/iutfbleau/papillon/Utilisateur.java b/src/fr/iutfbleau/papillon/Utilisateur.java
index 5e28f6f..86f1eca 100644
--- a/src/fr/iutfbleau/papillon/Utilisateur.java
+++ b/src/fr/iutfbleau/papillon/Utilisateur.java
@@ -49,4 +49,4 @@ public class Utilisateur {
public String toString() {
return "Utilisateur [id=" + id + ", cle=" + cle + "]";
}
-}
\ No newline at end of file
+}
diff --git a/src/fr/iutfbleau/papillon/UtilisateurBD.java b/src/fr/iutfbleau/papillon/UtilisateurBD.java
index aab4000..fbf621b 100644
--- a/src/fr/iutfbleau/papillon/UtilisateurBD.java
+++ b/src/fr/iutfbleau/papillon/UtilisateurBD.java
@@ -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é.
*
* @version 1.0
- * @author Junior
+ * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
*/
public class UtilisateurBD {
diff --git a/src/fr/iutfbleau/papillon/logo.png b/src/fr/iutfbleau/papillon/logo.png
new file mode 100644
index 0000000..60280aa
Binary files /dev/null and b/src/fr/iutfbleau/papillon/logo.png differ