mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-07-09 20:57:44 +00:00
Refactor et commentaire terminé (Need edit de Typo)
This commit is contained in:
@@ -18,7 +18,7 @@ import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* Gestionnaire des raccourcis.save claviers de l'application
|
||||
* Gestionnaire des raccourcis claviers de l'application
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
@@ -27,8 +27,10 @@ import java.util.Map;
|
||||
*/
|
||||
public class RaccourcisClavier extends JFrame {
|
||||
|
||||
/** Le nom du fichier de sauvegarde */
|
||||
public static final String FICHIER_SAUVEGARDE = "raccourcis.save";
|
||||
|
||||
/** Booleen qui garantis l'attribution d'un seul raccourcis à la fois */
|
||||
public static boolean saisieBloquee;
|
||||
|
||||
/**
|
||||
@@ -37,13 +39,19 @@ public class RaccourcisClavier extends JFrame {
|
||||
*/
|
||||
public static ArrayList<JMenuItem> listeMenuItems = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* Liste des éléments graphiques (un élément est une ligne) de la fenêtre
|
||||
*/
|
||||
public static ArrayList<RaccourcisElement> listeRaccourcisElement = new ArrayList<>();
|
||||
|
||||
/**
|
||||
* HashMap qui prend en clé le Nom et en valeur une combinaison de touche : le raccourcis.save clavier
|
||||
* HashMap qui prend en clé le Nom du MenuItem et en valeur une combinaison de touche : le raccourcis clavier
|
||||
*/
|
||||
public static Map<String, KeyStroke> raccourcis = new HashMap<>() {};
|
||||
|
||||
/**
|
||||
* La liste des noms de MenuItems de l'application
|
||||
*/
|
||||
public static String[] LISTE_NOM = {
|
||||
"Ouvrir",
|
||||
"Fermer",
|
||||
@@ -62,7 +70,10 @@ public class RaccourcisClavier extends JFrame {
|
||||
"Modifier Touches"
|
||||
};
|
||||
|
||||
public static KeyStroke[] LISTE_RACCOURCIS = {
|
||||
/**
|
||||
* La liste des raccourcis par défaut
|
||||
*/
|
||||
public static KeyStroke[] RACCOURCIS_DEFAUT = {
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_O, KeyEvent.CTRL_DOWN_MASK), // Ouvrir
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_F, KeyEvent.CTRL_DOWN_MASK), // Fermer
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_Q, KeyEvent.CTRL_DOWN_MASK), // Quitter
|
||||
@@ -80,6 +91,9 @@ public class RaccourcisClavier extends JFrame {
|
||||
KeyStroke.getKeyStroke(KeyEvent.VK_P, KeyEvent.CTRL_DOWN_MASK), // Modifier Touches
|
||||
};
|
||||
|
||||
/**
|
||||
* Crée une nouvelle fenêtre contenant la liste des Raccourcis claviers de l'application ainsi qu'un boutton Raccourcis par défaut qui remet les raccourcis par défaut de l'application
|
||||
*/
|
||||
public RaccourcisClavier() {
|
||||
super("Modification des raccourcis claviers");
|
||||
saisieBloquee = false;
|
||||
@@ -92,12 +106,14 @@ public class RaccourcisClavier extends JFrame {
|
||||
/* Creation de la fenêtre */
|
||||
JPanel panel = new JPanel(new GridLayout(raccourcis.size() +1, 1, 10, 5));
|
||||
|
||||
/* Ajout de tout les raccourcis claviers de l'application dans la fenêtre */
|
||||
for (String nom : LISTE_NOM) {
|
||||
RaccourcisElement raccourcisElement = new RaccourcisElement(nom, raccourcis.get(nom));
|
||||
listeRaccourcisElement.add(raccourcisElement);
|
||||
panel.add(raccourcisElement);
|
||||
}
|
||||
|
||||
/* Ajout du boutton Reset */
|
||||
JButton btnReset = new JButton("Raccourcis par défaut");
|
||||
btnReset.addActionListener(this::actionBtnReset);
|
||||
panel.add(btnReset);
|
||||
@@ -109,6 +125,13 @@ public class RaccourcisClavier extends JFrame {
|
||||
setVisible(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* Action lors du clic sur le boutton Reset
|
||||
* Charge les raccourcis par défaut puis les sauvegarde
|
||||
* Met a jour l'interface
|
||||
*
|
||||
* @param evt écouteur d'évènement
|
||||
*/
|
||||
private void actionBtnReset(ActionEvent evt) {
|
||||
initialisationFichierRaccourcis();
|
||||
chargerRaccourcis();
|
||||
@@ -169,8 +192,8 @@ public class RaccourcisClavier extends JFrame {
|
||||
* et la sauvegarde
|
||||
*/
|
||||
private static void initialisationFichierRaccourcis() {
|
||||
for (int i = 0; i < LISTE_NOM.length && i < LISTE_RACCOURCIS.length; i++) {
|
||||
raccourcis.put(LISTE_NOM[i], LISTE_RACCOURCIS[i]);
|
||||
for (int i = 0; i < LISTE_NOM.length && i < RACCOURCIS_DEFAUT.length; i++) {
|
||||
raccourcis.put(LISTE_NOM[i], RACCOURCIS_DEFAUT[i]);
|
||||
}
|
||||
sauvegarderRaccourcis();
|
||||
}
|
||||
|
||||
@@ -1,17 +1,46 @@
|
||||
/*
|
||||
* RaccourcisElement.java 10/03/2022
|
||||
* IUT Rodez 2021-2022, INFO 2
|
||||
* Pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package lecteur_pdf.raccourcisClavier;
|
||||
|
||||
import lecteur_pdf.Popup;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.KeyEvent;
|
||||
import java.awt.event.KeyListener;
|
||||
|
||||
/**
|
||||
* Element de raccourcis qui définit un raccourcis pour une propriété de l'application
|
||||
*
|
||||
* @author Léo Franch
|
||||
* @author Lucas Vabre
|
||||
* @author Noé Villeneuve
|
||||
* @author Tristan Nogaret
|
||||
*/
|
||||
public class RaccourcisElement extends JPanel {
|
||||
|
||||
/** Le nom du MenuItem */
|
||||
private final String nom;
|
||||
|
||||
/** Le boutton qui contiens en valeur la séquence de touches correspondant au raccourcis du MenuItem de l'application */
|
||||
private final JButton btnRaccourcis;
|
||||
|
||||
/** Le raccourcis clavier */
|
||||
private KeyStroke raccourcis;
|
||||
|
||||
/**
|
||||
* Crée un nouveau JPanel conportant une ligne et deux colonnes
|
||||
* Dans la première colonne on trouve un Label qui défini le MenuItem
|
||||
* Dans la seconde colonne on trouve le boutton pour éditer le raccourcis clavier
|
||||
*
|
||||
* @param nom Le nom du MenuItem ciblé
|
||||
* @param raccourcis Le raccourcis clavier actuel du MenuItem ciblé
|
||||
*/
|
||||
public RaccourcisElement(String nom, KeyStroke raccourcis) {
|
||||
super(new GridLayout(1, 2));
|
||||
|
||||
@@ -28,6 +57,11 @@ public class RaccourcisElement extends JPanel {
|
||||
btnRaccourcis.addActionListener(this::action);
|
||||
}
|
||||
|
||||
/**
|
||||
* Action lors du clic sur le boutton d'édition du raccourcis
|
||||
*
|
||||
* @param evt écouteur d'évènement
|
||||
*/
|
||||
public void action(ActionEvent evt) {
|
||||
if (!RaccourcisClavier.saisieBloquee) {
|
||||
RaccourcisClavier.saisieBloquee = true;
|
||||
@@ -35,7 +69,10 @@ public class RaccourcisElement extends JPanel {
|
||||
|
||||
btnRaccourcis.addKeyListener(new KeyListener() {
|
||||
|
||||
/** Valeur qui permet de définir si une touche n'est pas reconnue */
|
||||
private static final int INDETERMINATE = -1;
|
||||
|
||||
/** La valeur de la touche pressé precedament */
|
||||
private int previousKeyPressed = INDETERMINATE;
|
||||
|
||||
@Override
|
||||
@@ -46,7 +83,7 @@ public class RaccourcisElement extends JPanel {
|
||||
&& !isMaskValide(evt.getKeyCode())) {
|
||||
|
||||
KeyStroke ks = KeyStroke.getKeyStroke(evt.getKeyCode(), getMask(previousKeyPressed));
|
||||
System.out.println(ks);
|
||||
|
||||
/* Vérifie que ce raccourci clavier n'existe pas */
|
||||
if (!RaccourcisClavier.raccourcis.containsValue(ks)) {
|
||||
btnRaccourcis.setText(getMaskString(previousKeyPressed) + " + " + ks.toString().split(" ")[2]);
|
||||
@@ -56,7 +93,10 @@ public class RaccourcisElement extends JPanel {
|
||||
RaccourcisClavier.affecterRaccourcis();
|
||||
RaccourcisClavier.sauvegarderRaccourcis();
|
||||
} else {
|
||||
// TODO Erreur cette combinaison de touche est deja utilisé
|
||||
final String TITRE_ERREUR = "Erreur raccourcis";
|
||||
final String MESSAGE_ERREUR = "Le raccourcis que vous venez de réaliser est déja affecté à une autre fonctionnalité";
|
||||
|
||||
Popup.errorPopup(btnRaccourcis, TITRE_ERREUR, MESSAGE_ERREUR);
|
||||
btnRaccourcis.setText(modifierToString(raccourcis.getModifiers()) + " + " + (char)raccourcis.getKeyCode());
|
||||
}
|
||||
|
||||
@@ -77,6 +117,11 @@ public class RaccourcisElement extends JPanel {
|
||||
return 16 <= maskValue && maskValue <= 18;
|
||||
}
|
||||
|
||||
/**
|
||||
* Methode outils qui permet de convertir la valeur tapée en KeyEvent
|
||||
* @param maskValue Valeur de masque tapé (controle, shift ou alt)
|
||||
* @return Le KeyEvent correspondant
|
||||
*/
|
||||
private int getMask(int maskValue) {
|
||||
return switch (maskValue) {
|
||||
case 16 -> KeyEvent.SHIFT_DOWN_MASK;
|
||||
@@ -85,6 +130,11 @@ public class RaccourcisElement extends JPanel {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode outils qui permet de convertir la valeur tapée en Chaine de caractère
|
||||
* @param maskValue Valeur de masque tapé (controle, shift ou alt)
|
||||
* @return La chaine de caractère correspondante
|
||||
*/
|
||||
private String getMaskString(int maskValue) {
|
||||
return switch (maskValue) {
|
||||
case 16 -> "SHIFT";
|
||||
@@ -96,6 +146,11 @@ public class RaccourcisElement extends JPanel {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Convertis un Modifieur en chaine de caractère
|
||||
* @param modifier valeur du modifieur (Element d'un KeyStroke != KeyEvent)
|
||||
* @return La chaine de caractère correspondante
|
||||
*/
|
||||
private String modifierToString(int modifier) {
|
||||
return switch (modifier) {
|
||||
case 65 -> "SHIFT";
|
||||
@@ -104,10 +159,19 @@ public class RaccourcisElement extends JPanel {
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Convertis un raccourcis en chaine de caractère
|
||||
* @param keyStroke Le raccourcis en question
|
||||
* @return La chaine de caractère construite à partir du raccourcis
|
||||
*/
|
||||
private String keystrokeToString(KeyStroke keyStroke) {
|
||||
return modifierToString(keyStroke.getModifiers()) + " + " + keyStroke.toString().split(" ")[2];
|
||||
}
|
||||
|
||||
/**
|
||||
* Change le raccourcis (visuellement)
|
||||
* @param raccourcis Nouveau raccourcis
|
||||
*/
|
||||
public void setRaccourcis(KeyStroke raccourcis) {
|
||||
this.raccourcis = raccourcis;
|
||||
this.btnRaccourcis.setText(keystrokeToString(raccourcis));
|
||||
|
||||
Reference in New Issue
Block a user