mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-07-09 12:47:45 +00:00
javadoc
This commit is contained in:
@@ -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,10 +155,13 @@ 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();
|
||||||
&& isMaskValide(previousKeyPressed)
|
} else if (previousKeyPressed != evt.getKeyCode()
|
||||||
&& !isMaskValide(evt.getKeyCode())) {
|
&& isMaskValide(previousKeyPressed)
|
||||||
|
&& !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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user