maj
This commit is contained in:
@@ -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
|
||||
@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
|
||||
|
||||
@@ -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.*;
|
||||
|
||||
|
||||
|
||||
@@ -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 l’affichage graphique
|
||||
* d’un rappel dans l’application <b>Papillon</b>.
|
||||
* <p>
|
||||
* 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.).
|
||||
* </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 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(
|
||||
"<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 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.
|
||||
* <p>
|
||||
* Si l’utilisateur clique sur "Ouvrir", la fenêtre détaillée du rappel est affichée.
|
||||
* </p>
|
||||
*
|
||||
* @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.
|
||||
* <p>
|
||||
* Un clic gauche sélectionne/désélectionne le panneau,
|
||||
* tandis qu’un 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 s’affiche.
|
||||
* </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 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.
|
||||
* <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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
|
||||
@@ -49,4 +49,4 @@ public class Utilisateur {
|
||||
public String toString() {
|
||||
return "Utilisateur [id=" + id + ", cle=" + cle + "]";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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 |
Reference in New Issue
Block a user