This commit is contained in:
NonoL3Robot
2022-03-11 14:11:25 +01:00
parent 32c2685d87
commit 8f20574cc0
3 changed files with 231 additions and 79 deletions
+118 -40
View File
@@ -6,6 +6,7 @@
package lecteur_pdf.pdf; package lecteur_pdf.pdf;
import lecteur_pdf.Fenetre;
import lecteur_pdf.GestionFenetre; import lecteur_pdf.GestionFenetre;
import lecteur_pdf.GestionMode; import lecteur_pdf.GestionMode;
@@ -22,43 +23,78 @@ import java.io.IOException;
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see JPanel
*/ */
public class PdfPanel extends JPanel { public class PdfPanel extends JPanel {
/** Le numéro de la page courante */ /**
* Le numéro de la page courante
*/
private int numeroPage; private int numeroPage;
/** Valeur multiplicative de la taille de la page */ /**
* Valeur multiplicative de la taille de la page
*/
private float taille; private float taille;
/** Valeur multiplicative du zoom */ /**
* Valeur multiplicative du zoom
*/
private float zoom; private float zoom;
/** Défini si la page est en pleine largeur ou non */ /**
* Défini si la page est en pleine largeur ou non
*/
private boolean pleineLargeur; private boolean pleineLargeur;
/** Bloqueur qui défini si le processeur est en train de générer une /**
* nouvelle page */ * Bloqueur qui défini si le processeur est en train de générer une
* nouvelle page
*/
private boolean processing; private boolean processing;
/** Le document PDF chargé */ /**
* Le document PDF chargé
*
* @see org.apache.pdfbox.pdmodel.PDDocument
*/
private DocumentPdf pdfLoader; private DocumentPdf pdfLoader;
/* Interface */ /* Interface */
/** La zone de saisie du numéro de page */ /**
* La zone de saisie du numéro de page
*
* @see JTextField
*/
private final JTextField indexPageInput; private final JTextField indexPageInput;
/** Le texte définissant le nombre max de pages */ /**
* Le texte définissant le nombre max de pages
*
* @see JLabel
*/
private final JLabel maxPageLabel; private final JLabel maxPageLabel;
/** Element scrollable qui contiens la page */ /**
* Element scrollable qui contiens la page
*
* @see JScrollPane
*/
private final JScrollPane scrollPane; private final JScrollPane scrollPane;
/** Zone de l'élément scrollable qui est visible */ /**
* Zone de l'élément scrollable qui est visible
*
* @see JViewport
*/
private final JViewport viewport; private final JViewport viewport;
/** Label qui contient l'image de la page affichée */ /**
* Label qui contient l'image de la page affichée
*
* @see JLabel
*/
private final JLabel page; private final JLabel page;
/** /**
@@ -109,7 +145,8 @@ public class PdfPanel extends JPanel {
@Override @Override
public void keyPressed(KeyEvent e) { public void keyPressed(KeyEvent e) {
super.keyPressed(e); super.keyPressed(e);
indexPageInput.setEditable(e.getKeyChar() >= '0' && e.getKeyChar() <= '9'); indexPageInput.setEditable(
e.getKeyChar() >= '0' && e.getKeyChar() <= '9');
} }
}); });
@@ -118,8 +155,11 @@ public class PdfPanel extends JPanel {
String saisie = indexPageInput.getText(); String saisie = indexPageInput.getText();
try { try {
int index = Integer.parseInt(saisie); int index = Integer.parseInt(saisie);
if (isPageValide(index - 1)) changerPage(index - 1); if (isPageValide(index - 1)) {
else throw new Exception(); changerPage(index - 1);
} else {
throw new Exception();
}
} catch (Exception f) { } catch (Exception f) {
indexPageInput.setText(Integer.toString(numeroPage + 1)); indexPageInput.setText(Integer.toString(numeroPage + 1));
} }
@@ -137,40 +177,57 @@ public class PdfPanel extends JPanel {
/** /**
* Action lors du clic sur le bouton suivant * Action lors du clic sur le bouton suivant
* Affiche la page suivante du ou des documents (suivant si le mode * Affiche la page suivante du ou des documents (suivant si le
* synchronisé est activé ou non) * {@link lecteur_pdf.menuBar.menuItems.ModeSynchronise mode Synchronisé}
* est activé ou non)
*
* @see JButton
*/ */
private void btnSuivantAction() { private void btnSuivantAction() {
if (GestionMode.isModeSepare()) pageSuivante(); if (GestionMode.isModeSepare()) {
else GestionFenetre.nextPages(); pageSuivante();
} else {
GestionFenetre.nextPages();
}
} }
/** /**
* Action lors du clic sur le bouton precedent * Action lors du clic sur le bouton precedent
* Affiche la page précédente du ou des documents (suivant si le mode * Affiche la page précédente du ou des documents (suivant si le
* synchronisé est activé ou non) * {@link lecteur_pdf.menuBar.menuItems.ModeSynchronise mode Synchronisé}
* est activé ou non)
*
* @see JButton
*/ */
private void btnPrecedentAction() { private void btnPrecedentAction() {
if (GestionMode.isModeSepare()) pagePrecedente(); if (GestionMode.isModeSepare()) {
else GestionFenetre.previousPages(); pagePrecedente();
} else {
GestionFenetre.previousPages();
}
} }
/** /**
* Change la taille de la page courante suivant si fonction Pleine * Change la taille de la page courante suivant si fonction
* Largeur est activé ou non * {@link lecteur_pdf.menuBar.menuItems.PleineLargeur Pleine Largeur}
* est activée ou non
*/ */
public void changerTaille() { public void changerTaille() {
if (pdfLoader == null || processing) return; if (pdfLoader == null || processing) {
return;
}
if (pleineLargeur) { if (pleineLargeur) {
float viewportWidth = viewport.getWidth(); float viewportWidth = viewport.getWidth();
float scrollpaneWidth = scrollPane.getVerticalScrollBar().getWidth(); float scrollpaneWidth = scrollPane.getVerticalScrollBar()
.getWidth();
float pdfMinWidth = pdfLoader.getMinWidth(); float pdfMinWidth = pdfLoader.getMinWidth();
taille = (viewportWidth - scrollpaneWidth) / pdfMinWidth - zoom; taille = (viewportWidth - scrollpaneWidth) / pdfMinWidth - zoom;
} else { } else {
float viewportHeight = viewport.getHeight(); float viewportHeight = viewport.getHeight();
float scrollpaneHeight = scrollPane.getVerticalScrollBar().getHeight(); float scrollpaneHeight = scrollPane.getVerticalScrollBar()
.getHeight();
float pdfMinHeight = pdfLoader.getMinHeight(); float pdfMinHeight = pdfLoader.getMinHeight();
taille = (viewportHeight - scrollpaneHeight) / pdfMinHeight - zoom; taille = (viewportHeight - scrollpaneHeight) / pdfMinHeight - zoom;
@@ -178,7 +235,13 @@ public class PdfPanel extends JPanel {
setTaille(taille); setTaille(taille);
} }
/** @param pleineLargeur booléen qui défini l'état du mode pleine largeur */ /**
* @param pleineLargeur Booléen qui défini l'état du mode
* <p>
* <p>
* {@link lecteur_pdf.menuBar.menuItems.PleineLargeur
* Pleine Largeur}
*/
public void setPleineLargeur(boolean pleineLargeur) { public void setPleineLargeur(boolean pleineLargeur) {
this.pleineLargeur = pleineLargeur; this.pleineLargeur = pleineLargeur;
changerTaille(); changerTaille();
@@ -191,13 +254,13 @@ public class PdfPanel extends JPanel {
* @return true si le prédicat est vérifié, false sinon * @return true si le prédicat est vérifié, false sinon
*/ */
private boolean isPageValide(int index) { private boolean isPageValide(int index) {
return pdfLoader != null return pdfLoader != null && 0 <= index
&& 0 <= index
&& index < pdfLoader.getNbPages(); && index < pdfLoader.getNbPages();
} }
/** /**
* Méthode qui permet de charger un PDF dans la fenêtre courante * Méthode qui permet de charger un PDF dans la {@link Fenetre fenêtre}
* courante
* *
* @param pdfFile Le fichier PDF à charger * @param pdfFile Le fichier PDF à charger
* @return true si le PDF a pu se charger, false sinon * @return true si le PDF a pu se charger, false sinon
@@ -207,11 +270,15 @@ public class PdfPanel extends JPanel {
setPdfLoader(new DocumentPdf(pdfFile)); setPdfLoader(new DocumentPdf(pdfFile));
changerPage(0); changerPage(0);
return true; return true;
} catch (IOException ignored) {} } catch (IOException ignored) {
}
return false; return false;
} }
/** @param pdfLoader un nouveau document PDF à affecter à la fenêtre */ /**
* @param pdfLoader un nouveau document PDF à affecter à la
* {@link Fenetre fenêtre}
*/
public void setPdfLoader(DocumentPdf pdfLoader) { public void setPdfLoader(DocumentPdf pdfLoader) {
this.pdfLoader = pdfLoader; this.pdfLoader = pdfLoader;
} }
@@ -220,7 +287,9 @@ public class PdfPanel extends JPanel {
* Décharge le document courant s'il y en a un * Décharge le document courant s'il y en a un
*/ */
public void dechargerPdf() { public void dechargerPdf() {
if (!isCharge()) return; if (!isCharge()) {
return;
}
/* Ferme le loader et l'efface */ /* Ferme le loader et l'efface */
pdfLoader.close(); pdfLoader.close();
@@ -261,12 +330,16 @@ public class PdfPanel extends JPanel {
changerPage(numeroPage); changerPage(numeroPage);
} }
/** Affiche la page suivante */ /**
* Affiche la page suivante
*/
public void pageSuivante() { public void pageSuivante() {
changerPage(numeroPage + 1); changerPage(numeroPage + 1);
} }
/** Affiche la page suivante */ /**
* Affiche la page précédente
*/
public void pagePrecedente() { public void pagePrecedente() {
changerPage(numeroPage - 1); changerPage(numeroPage - 1);
} }
@@ -277,20 +350,25 @@ public class PdfPanel extends JPanel {
* @param index Le numéro de la page où l'on veut se rendre * @param index Le numéro de la page où l'on veut se rendre
*/ */
private void changerPage(int index) { private void changerPage(int index) {
if (!isPageValide(index)) return; if (!isPageValide(index)) {
return;
}
processing = true; processing = true;
try { try {
page.setIcon(new ImageIcon(pdfLoader.renderPage(index, zoom + taille))); page.setIcon(
new ImageIcon(pdfLoader.renderPage(index, zoom + taille)));
numeroPage = index; numeroPage = index;
indexPageInput.setText(Integer.toString(numeroPage + 1)); indexPageInput.setText(Integer.toString(numeroPage + 1));
maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages())); maxPageLabel.setText(String.format("/%d", pdfLoader.getNbPages()));
} catch (IOException ignored) {} } catch (IOException ignored) {
}
processing = false; processing = false;
} }
/** /**
* Prédicat qui vérifie si un PDF est chargé ou non * Prédicat qui vérifie si un PDF est chargé ou non
*
* @return true si un PDF est chargé, false sinon * @return true si un PDF est chargé, false sinon
*/ */
public boolean isCharge() { public boolean isCharge() {
@@ -6,6 +6,7 @@
package lecteur_pdf.raccourcisClavier; package lecteur_pdf.raccourcisClavier;
import lecteur_pdf.Fenetre;
import lecteur_pdf.GestionFenetre; import lecteur_pdf.GestionFenetre;
import javax.swing.*; import javax.swing.*;
@@ -24,6 +25,10 @@ import java.util.Map;
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see JFrame
* @see ArrayList
* @see HashMap
* @see KeyStroke
*/ */
public class RaccourcisClavier extends JFrame { public class RaccourcisClavier extends JFrame {
@@ -38,24 +43,37 @@ public class RaccourcisClavier extends JFrame {
public static boolean saisieBloquee; public static boolean saisieBloquee;
/** /**
* Liste des menus items, se remplis à la création de chaque MenuItem de * Liste des {@link lecteur_pdf.menuBar.menuItems menus items}, se
* remplis à la création de chaque
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem} de
* l'application * l'application
*
* @see ArrayList
*/ */
public static ArrayList<JMenuItem> listeMenuItems = new ArrayList<>(); public static ArrayList<JMenuItem> listeMenuItems = new ArrayList<>();
/** /**
* Liste des éléments graphiques (un élément est une ligne) de la fenêtre * Liste des {@link RaccourcisElement éléments graphiques} (un élément
* est une ligne) de la {@link Fenetre fenêtre}
*
* @see ArrayList
*/ */
public static ArrayList<RaccourcisElement> listeRaccourcisElement = new ArrayList<>(); public static ArrayList<RaccourcisElement> listeRaccourcisElement
= new ArrayList<>();
/** /**
* HashMap qui prend en clé le Nom du MenuItem et en valeur une * HashMap qui prend en clé le nom du
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem} et en valeur une
* combinaison de touche : le raccourci clavier * combinaison de touche : le raccourci clavier
*
* @see HashMap
* @see KeyStroke
*/ */
public static Map<String, KeyStroke> raccourcis = new HashMap<>() {}; public static Map<String, KeyStroke> raccourcis = new HashMap<>() {};
/** /**
* La liste des noms de MenuItems de l'application * La liste des noms de
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem} de l'application
*/ */
public static String[] LISTE_NOM = { public static String[] LISTE_NOM = {
"Ouvrir", "Fermer", "Quitter", "Mode Plein Écran", "Page précédente", "Ouvrir", "Fermer", "Quitter", "Mode Plein Écran", "Page précédente",
@@ -101,9 +119,9 @@ public class RaccourcisClavier extends JFrame {
}; };
/** /**
* Créé une nouvelle fenêtre contenant la liste des Raccourcis claviers * Créé une nouvelle {@link Fenetre fenêtre} contenant la liste des
* de l'application ainsi qu'un bouton Raccourcis par défaut qui remet * raccourcis claviers de l'application ainsi qu'un bouton raccourcis par
* les raccourcis par défaut de l'application * défaut qui réinitialise les raccourcis claviers de l'application
*/ */
public RaccourcisClavier() { public RaccourcisClavier() {
super("Modification des raccourcis claviers"); super("Modification des raccourcis claviers");
@@ -142,8 +160,8 @@ public class RaccourcisClavier extends JFrame {
/** /**
* Action lors du clic sur le bouton Reset * Action lors du clic sur le bouton Reset
* Charge les raccourcis par défaut puis les sauvegarde * Charge les raccourcis par défaut puis les sauvegarde et met à jour
* Met a jour l'interface * l'interface
*/ */
private void actionBtnReset(ActionEvent evt) { private void actionBtnReset(ActionEvent evt) {
initialisationFichierRaccourcis(); initialisationFichierRaccourcis();
@@ -162,6 +180,9 @@ public class RaccourcisClavier extends JFrame {
/** /**
* Lis le fichier de sauvegarde et restaure la HashMap des raccourcis * Lis le fichier de sauvegarde et restaure la HashMap des raccourcis
*
* @see FileInputStream
* @see ObjectInputStream
*/ */
public static void chargerRaccourcis() { public static void chargerRaccourcis() {
try { try {
@@ -184,6 +205,9 @@ public class RaccourcisClavier extends JFrame {
/** /**
* Écrit dans le fichier de sauvegarde la HashMap des raccourcis * Écrit dans le fichier de sauvegarde la HashMap des raccourcis
*
* @see FileOutputStream
* @see ObjectOutputStream
*/ */
public static void sauvegarderRaccourcis() { public static void sauvegarderRaccourcis() {
try { try {
@@ -213,7 +237,9 @@ public class RaccourcisClavier extends JFrame {
} }
/** /**
* Affecte a chaque MenuItems le raccourci qui lui est destiné * Affecte a chaque
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem} le raccourci
* qui lui est destiné
*/ */
public static void affecterRaccourcis() { public static void affecterRaccourcis() {
for (JMenuItem menuItem : listeMenuItems) { for (JMenuItem menuItem : listeMenuItems) {
@@ -22,26 +22,45 @@ import java.awt.event.KeyListener;
* @author Tristan Nogaret * @author Tristan Nogaret
* @author Lucàs Vabre * @author Lucàs Vabre
* @author Noé Villeneuve * @author Noé Villeneuve
* @see JPanel
*/ */
public class RaccourcisElement extends JPanel { public class RaccourcisElement extends JPanel {
/** Le nom du MenuItem */ /**
* Le nom du MenuItem
*/
private final String nom; private final String nom;
/** Le bouton qui contient en valeur la séquence de touches correspondant /**
* au raccourci du MenuItem de l'application */ * Le bouton qui contient en valeur la séquence de touches correspondant
* au raccourci du
* {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem} de l'application
*
* @see JButton
*/
private final JButton btnRaccourcis; private final JButton btnRaccourcis;
/** Le raccourci clavier */ /**
* Le raccourci clavier
*
* @see KeyStroke
*/
private KeyStroke raccourcis; private KeyStroke raccourcis;
/** /**
* Crée un nouveau JPanel comportant une ligne et deux colonnes * Crée un nouveau JPanel comportant une ligne et deux colonnes
* Dans la première colonne on trouve un Label qui défini le MenuItem * <li>Dans la première colonne on trouve un label qui défini le
* Dans la seconde colonne on trouve le bouton pour éditer le raccourci clavier * {@link lecteur_pdf.menuBar.menuItems.MenuItem MenuItem}</li>
* <li>Dans la seconde colonne on trouve le bouton pour éditer le
* raccourci clavier</li>
* *
* @param nom Le nom du MenuItem ciblé * @param nom Le nom du
* @param raccourcis Le raccourci clavier actuel du MenuItem ciblé * {@link lecteur_pdf.menuBar.menuItems.MenuItem
* MenuItem} ciblé
* @param raccourcis Le raccourci clavier actuel du
* {@link lecteur_pdf.menuBar.menuItems.MenuItem
* MenuItem} ciblé
* @see GridLayout
*/ */
public RaccourcisElement(String nom, KeyStroke raccourcis) { public RaccourcisElement(String nom, KeyStroke raccourcis) {
super(new GridLayout(1, 2)); super(new GridLayout(1, 2));
@@ -71,24 +90,33 @@ public class RaccourcisElement extends JPanel {
btnRaccourcis.addKeyListener(new KeyListener() { btnRaccourcis.addKeyListener(new KeyListener() {
/** Valeur qui permet de définir si une touche n'est pas reconnue */ /**
* Valeur qui permet de définir si une touche n'est pas reconnue
*/
private static final int INDETERMINATE = -1; private static final int INDETERMINATE = -1;
/** La valeur de la touche pressée précédemment */ /**
* La valeur de la touche pressée précédemment
*/
private int previousKeyPressed = INDETERMINATE; private int previousKeyPressed = INDETERMINATE;
@Override @Override
public void keyPressed(KeyEvent evt) { public void keyPressed(KeyEvent evt) {
if (previousKeyPressed == INDETERMINATE) previousKeyPressed = evt.getKeyCode(); if (previousKeyPressed == INDETERMINATE) {
else if (previousKeyPressed != evt.getKeyCode() previousKeyPressed = evt.getKeyCode();
} else if (previousKeyPressed != evt.getKeyCode()
&& isMaskValide(previousKeyPressed) && isMaskValide(previousKeyPressed)
&& !isMaskValide(evt.getKeyCode())) { && !isMaskValide(evt.getKeyCode())) {
KeyStroke ks = KeyStroke.getKeyStroke(evt.getKeyCode(), getMask(previousKeyPressed)); KeyStroke ks = KeyStroke.getKeyStroke(evt.getKeyCode(),
getMask(
previousKeyPressed));
/* Vérifie que ce raccourci clavier n'existe pas */ /* Vérifie que ce raccourci clavier n'existe pas */
if (!RaccourcisClavier.raccourcis.containsValue(ks)) { if (!RaccourcisClavier.raccourcis.containsValue(ks)) {
btnRaccourcis.setText(getMaskString(previousKeyPressed) + " + " + ks.toString().split(" ")[2]); btnRaccourcis.setText(
getMaskString(previousKeyPressed) + " + "
+ ks.toString().split(" ")[2]);
// On modifie la valeur // On modifie la valeur
RaccourcisClavier.raccourcis.replace(nom, ks); RaccourcisClavier.raccourcis.replace(nom, ks);
raccourcis = ks; raccourcis = ks;
@@ -97,10 +125,17 @@ public class RaccourcisElement extends JPanel {
} else { } else {
final String TITRE_ERREUR = "Erreur raccourcis"; final String TITRE_ERREUR = "Erreur raccourcis";
final String MESSAGE_ERREUR = "Le raccourcis que " final String MESSAGE_ERREUR = "Le raccourcis que "
+ "vous venez de réaliser est déjà affecté à une autre fonctionnalité"; + "vous venez de "
+ "réaliser est "
+ "déjà affecté à "
+ "une autre "
+ "fonctionnalité";
Popup.errorPopup(btnRaccourcis, TITRE_ERREUR, MESSAGE_ERREUR); Popup.errorPopup(btnRaccourcis, TITRE_ERREUR,
btnRaccourcis.setText(modifierToString(raccourcis.getModifiers()) + " + " + (char)raccourcis.getKeyCode()); MESSAGE_ERREUR);
btnRaccourcis.setText(
modifierToString(raccourcis.getModifiers())
+ " + " + (char) raccourcis.getKeyCode());
} }
btnRaccourcis.removeKeyListener(this); btnRaccourcis.removeKeyListener(this);
@@ -109,11 +144,14 @@ public class RaccourcisElement extends JPanel {
} }
@Override @Override
public void keyTyped(KeyEvent evt) {} public void keyTyped(KeyEvent evt) {
}
@Override @Override
public void keyReleased(KeyEvent evt) { public void keyReleased(KeyEvent evt) {
if (previousKeyPressed == evt.getKeyCode()) previousKeyPressed = INDETERMINATE; if (previousKeyPressed == evt.getKeyCode()) {
previousKeyPressed = INDETERMINATE;
}
} }
private boolean isMaskValide(int maskValue) { private boolean isMaskValide(int maskValue) {
@@ -123,8 +161,11 @@ public class RaccourcisElement extends JPanel {
/** /**
* Méthode outil qui permet de convertir la valeur tapée en * Méthode outil qui permet de convertir la valeur tapée en
* KeyEvent * KeyEvent
* @param maskValue Valeur de masque tapé (control, shift ou alt) * @param maskValue Valeur de masque tapé (control, shift ou
* alt)
* @return Le KeyEvent correspondant * @return Le KeyEvent correspondant
*
* @see KeyEvent
*/ */
private int getMask(int maskValue) { private int getMask(int maskValue) {
return switch (maskValue) { return switch (maskValue) {
@@ -137,7 +178,8 @@ public class RaccourcisElement extends JPanel {
/** /**
* Méthode outil qui permet de convertir la valeur tapée en * Méthode outil qui permet de convertir la valeur tapée en
* chaîne de caractère * chaîne de caractère
* @param maskValue Valeur de masque tapé (controle, shift ou alt) * @param maskValue Valeur de masque tapé (controle, shift ou
* alt)
* @return La chaine de caractère correspondante * @return La chaine de caractère correspondante
*/ */
private String getMaskString(int maskValue) { private String getMaskString(int maskValue) {
@@ -152,7 +194,8 @@ public class RaccourcisElement extends JPanel {
} }
/** /**
* Convertit un Modifier en chaîne de caractère * Convertit un modifier en chaîne de caractère
*
* @param modifier valeur du modifier (Element d'un KeyStroke != KeyEvent) * @param modifier valeur du modifier (Element d'un KeyStroke != KeyEvent)
* @return La chaîne de caractère correspondante * @return La chaîne de caractère correspondante
*/ */
@@ -165,16 +208,21 @@ public class RaccourcisElement extends JPanel {
} }
/** /**
* Convertis un raccourci en chaîne de caractère * Convertit un raccourci en chaîne de caractère
*
* @param keyStroke Le raccourci en question * @param keyStroke Le raccourci en question
* @return La chaîne de caractère construite à partir du raccourci * @return La chaîne de caractère construite à partir du raccourci
*
* @see KeyStroke
*/ */
private String keystrokeToString(KeyStroke keyStroke) { private String keystrokeToString(KeyStroke keyStroke) {
return modifierToString(keyStroke.getModifiers()) + " + " + keyStroke.toString().split(" ")[2]; return modifierToString(keyStroke.getModifiers()) + " + "
+ keyStroke.toString().split(" ")[2];
} }
/** /**
* Change le raccourci (visuellement) * Change le raccourci (visuellement)
*
* @param raccourcis nouveau raccourci * @param raccourcis nouveau raccourci
*/ */
public void setRaccourcis(KeyStroke raccourcis) { public void setRaccourcis(KeyStroke raccourcis) {