Refactor et commentaire terminé (Need edit de Typo)

This commit is contained in:
LucasV-IUT
2022-03-10 14:46:23 +01:00
parent 51ee8d1bbe
commit 3b04d0c267
13 changed files with 204 additions and 138 deletions
@@ -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));