diff --git a/bin/.gitignore b/bin/.gitignore index 506d4cf..de1223b 100644 --- a/bin/.gitignore +++ b/bin/.gitignore @@ -12,3 +12,4 @@ /sousmenuEvaluation/ /sousmenuRecherche/ /sousmenuRepresentation/ +/resources/ diff --git a/icons/enregistrer_modifications.png b/icons/enregistrer_modifications.png new file mode 100644 index 0000000..b8ff367 Binary files /dev/null and b/icons/enregistrer_modifications.png differ diff --git a/icons/enregistrer_modifications.svg b/icons/enregistrer_modifications.svg new file mode 100644 index 0000000..4267872 --- /dev/null +++ b/icons/enregistrer_modifications.svg @@ -0,0 +1,7382 @@ + + + +Voulez vous quitter analyseWriter ?Voulez vous quitter analyseWriter ?Voulez vous enregistrer vos modifications avant de quitter ?Voulez vous enregistrer vos modifications avant de quitter ? diff --git a/src/action/actEvaluer.java b/src/action/actEvaluer.java index 3c78f29..a409277 100644 --- a/src/action/actEvaluer.java +++ b/src/action/actEvaluer.java @@ -6,8 +6,10 @@ import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; +import javax.swing.JOptionPane; import javax.swing.KeyStroke; +import MEPTL.commandes; import fenetres.baseDonneesEvaluations; import fenetres.create; import fenetres.evaluate; @@ -27,9 +29,22 @@ public class actEvaluer extends AbstractAction{ } @Override public void actionPerformed(ActionEvent e) { - evaluate.getInstance(); - if(!baseDonneesEvaluations.isDispose) baseDonneesEvaluations.ferme(); - create.fermeCreate(); + if(commandes.evaluationChargeEnMemoire!=null) { + evaluate.getInstance(); + if(!baseDonneesEvaluations.isDispose) baseDonneesEvaluations.ferme(); + create.fermeCreate(); + }else { + // Message à afficher + String message = "Pour évaluer des fichiers d'étudiants,\nvous devez charger ou créer en mémoire une évaluation !"; + + // Titre de la boîte de dialogue + String title = "Information"; + + // Affichage de la boîte de dialogue d'information + JOptionPane.showMessageDialog(null, message, title, JOptionPane.INFORMATION_MESSAGE); + + } + } } diff --git a/src/action/actExit.java b/src/action/actExit.java index 218df4f..fd0acb7 100644 --- a/src/action/actExit.java +++ b/src/action/actExit.java @@ -1,13 +1,18 @@ package action; +import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.KeyEvent; import javax.swing.AbstractAction; import javax.swing.Action; import javax.swing.ImageIcon; -import javax.swing.JOptionPane; +import javax.swing.JButton; +import javax.swing.JDialog; +import javax.swing.JLabel; +import javax.swing.JPanel; import javax.swing.KeyStroke; +import javax.swing.SwingUtilities; import MEPTL.commandes; import fenetres.baseDonneesEvaluations; @@ -33,20 +38,145 @@ public class actExit extends AbstractAction { @Override public void actionPerformed(ActionEvent e) { - int H = commandes.evaluationChargeEnMemoire.hashCode(); + int H = 0; + if(commandes.evaluationChargeEnMemoire!=null) H=commandes.evaluationChargeEnMemoire.hashCode(); + if(H==commandes.hashCodeEvaluationSave){ - if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - baseDonneesEvaluations.ferme(); - create.fermeCreate(); - evaluate.ferme(); - } + + // Définir les dimensions de la boîte de dialogue + int dialogWidth = 420; + int dialogHeight = 260; + + // Chargement de l'icône personnalisée + ImageIcon customIcon = new ImageIcon(create.class.getResource("/resources/bye-bye.png")); + + // Création du panneau pour contenir l'image + JPanel panel = new JPanel(new BorderLayout()); + JLabel labelImage = new JLabel(customIcon, JLabel.CENTER); + + // Ajouter l'image au panneau + panel.add(labelImage, BorderLayout.CENTER); + + // Définir les boutons personnalisés + JButton buttonYes = new JButton("Quitter"); + JButton buttonNo = new JButton("Annuler"); + + // Ajout des boutons à un panneau + JPanel buttonPanel = new JPanel(); + buttonPanel.add(buttonYes); + buttonPanel.add(buttonNo); + + // Ajouter le panneau de boutons au panneau principal + panel.add(buttonPanel, BorderLayout.SOUTH); + + // Affichage de la boîte de dialogue + JDialog dialog = new JDialog(); + dialog.setTitle("Quitter"); + dialog.setModal(true); + dialog.setContentPane(panel); + dialog.setSize(dialogWidth, dialogHeight); + dialog.setResizable(false); + dialog.setLocationRelativeTo(null); // Pour centrer la boîte de dialogue à l'écran + + // Définir le bouton par défaut + dialog.getRootPane().setDefaultButton(buttonYes); + + // Actions des boutons + buttonYes.addActionListener((ActionEvent evt) -> { + baseDonneesEvaluations.ferme(); + create.fermeCreate(); + evaluate.ferme(); + dialog.dispose(); + System.exit(0); // Fermer l'application + }); + + buttonNo.addActionListener((ActionEvent evt) -> { + System.out.println("L'utilisateur a choisi de ne pas quitter."); + dialog.dispose(); + }); + + // Afficher la boîte de dialogue + dialog.setVisible(true); + + // Placer le focus sur le bouton "Oui" + SwingUtilities.invokeLater(() -> buttonYes.requestFocusInWindow()); + + }else{ - if(JOptionPane.showConfirmDialog(null,"Vous avez apporté des modifications à cette évaluation.\n" - + "Voulez-vous quitter analyseWriter sans enregistrer vos modification ?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - baseDonneesEvaluations.ferme(); - create.fermeCreate(); - evaluate.ferme(); - } + + // Définir les dimensions de la boîte de dialogue + int dialogWidth = 420; + int dialogHeight = 260; + + // Chargement de l'icône personnalisée + ImageIcon customIcon = new ImageIcon(create.class.getResource("/resources/enregistrer_modifications.png")); + + // Création du panneau pour contenir l'image + JPanel panel = new JPanel(new BorderLayout()); + JLabel labelImage = new JLabel(customIcon, JLabel.CENTER); + + // Ajouter l'image au panneau + panel.add(labelImage, BorderLayout.CENTER); + + // Définir les boutons personnalisés + JButton buttonYes = new JButton("Quitter"); + JButton buttonNo = new JButton("Annuler"); + JButton buttonSave = new JButton("Enregistrer puis quitter"); + + // Ajout des boutons à un panneau + JPanel buttonPanel = new JPanel(); + buttonPanel.add(buttonSave); + buttonPanel.add(buttonYes); + buttonPanel.add(buttonNo); + + + // Ajouter le panneau de boutons au panneau principal + panel.add(buttonPanel, BorderLayout.SOUTH); + + // Affichage de la boîte de dialogue + JDialog dialog = new JDialog(); + dialog.setTitle("Quitter"); + dialog.setModal(true); + dialog.setContentPane(panel); + dialog.setSize(dialogWidth, dialogHeight); + dialog.setResizable(false); + dialog.setLocationRelativeTo(null); // Pour centrer la boîte de dialogue à l'écran + + + + // Définir le bouton par défaut + dialog.getRootPane().setDefaultButton(buttonSave); + + // Actions des boutons + buttonYes.addActionListener((ActionEvent evt) -> { + baseDonneesEvaluations.ferme(); + create.fermeCreate(); + evaluate.ferme(); + dialog.dispose(); + System.exit(0); // Fermer l'application + }); + + buttonNo.addActionListener((ActionEvent evt) -> { + System.out.println("L'utilisateur a choisi de ne pas quitter."); + dialog.dispose(); + }); + + buttonSave.addActionListener((ActionEvent evt) -> { + System.out.println("L'utilisateur a choisi d'enregistrer."); + // Appeler l'action d'enregistrement + new actSaveEvaluation().actionPerformed(null); + baseDonneesEvaluations.ferme(); + create.fermeCreate(); + evaluate.ferme(); + dialog.dispose(); + System.exit(0); + }); + + // Afficher la boîte de dialogue + dialog.setVisible(true); + + // Placer le focus sur le bouton "Save" + SwingUtilities.invokeLater(() -> buttonSave.requestFocusInWindow()); } } diff --git a/src/fenetres/create.java b/src/fenetres/create.java index 508bec2..ce630b7 100644 --- a/src/fenetres/create.java +++ b/src/fenetres/create.java @@ -19,7 +19,6 @@ import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; -import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JSplitPane; @@ -622,20 +621,7 @@ public final class create extends JFrame { addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent windowEvent) { - int H = commandes.evaluationChargeEnMemoire.hashCode(); - if(H==commandes.hashCodeEvaluationSave){ - if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - baseDonneesEvaluations.ferme(); - evaluate.ferme(); - fermeCreate(); - } - }else{ - if(JOptionPane.showConfirmDialog(null,"Vous avez apporté des modifications à cette évaluation.\n" - + "Voulez-vous quitter analyseWriter sans enregistrer vos modification ?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - baseDonneesEvaluations.ferme(); - create.fermeCreate(); - } - } + new actExit().actionPerformed(null); } }); diff --git a/src/fenetres/evaluate.java b/src/fenetres/evaluate.java index 1662e65..49d2a89 100644 --- a/src/fenetres/evaluate.java +++ b/src/fenetres/evaluate.java @@ -463,20 +463,7 @@ public class evaluate extends JFrame { addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent windowEvent) { - if(commandes.evaluationChargeEnMemoire.hashCode()==commandes.hashCodeEvaluationSave){ - if(JOptionPane.showConfirmDialog(null,"Voulez-vous quitter analyseWriter?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - baseDonneesEvaluations.ferme(); - create.fermeCreate(); - ferme(); - } - }else{ - if(JOptionPane.showConfirmDialog(null,"Vous avez apporté des modifications à cette évaluation.\n" - + "Voulez-vous quitter analyseWriter sans enregistrer vos modification ?", "Quitter", JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION) { - baseDonneesEvaluations.ferme(); - create.fermeCreate(); - ferme(); - } - } + new actExit().actionPerformed(null); } }); @@ -713,7 +700,7 @@ public class evaluate extends JFrame { toolBar.addSeparator(); - JButton btnExit = toolBar.add(new action.actExit()); + JButton btnExit = toolBar.add(new actExit()); btnExit.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { } diff --git a/src/resources/bye-bye.png b/src/resources/bye-bye.png new file mode 100644 index 0000000..90f54c5 Binary files /dev/null and b/src/resources/bye-bye.png differ diff --git a/src/resources/enregistrer_modifications.png b/src/resources/enregistrer_modifications.png new file mode 100644 index 0000000..b8ff367 Binary files /dev/null and b/src/resources/enregistrer_modifications.png differ