mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-07-09 20:57:44 +00:00
SA MARCHE
This commit is contained in:
@@ -8,10 +8,12 @@ package lecteur_pdf.affichage;
|
|||||||
|
|
||||||
import lecteur_pdf.document.PDF;
|
import lecteur_pdf.document.PDF;
|
||||||
import lecteur_pdf.menu.Menu;
|
import lecteur_pdf.menu.Menu;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* classe correspondant à l'objet Fenetre
|
* classe correspondant à l’objet Fenêtre
|
||||||
*
|
*
|
||||||
* @author Léo FRANCH
|
* @author Léo FRANCH
|
||||||
* @author Tristan NOGARET
|
* @author Tristan NOGARET
|
||||||
@@ -21,31 +23,70 @@ import javax.swing.*;
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
public class Fenetre extends JFrame {
|
public class Fenetre extends JFrame {
|
||||||
//private JFrame frame;
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*/
|
||||||
private String titre;
|
private String titre;
|
||||||
private Menu menu = new Menu(this);
|
|
||||||
private PDF pdf ;
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*/
|
||||||
|
private Menu menu;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*/
|
||||||
|
private PDF fichierPDF;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*/
|
||||||
public Fenetre() {
|
public Fenetre() {
|
||||||
//création du frame
|
|
||||||
|
|
||||||
// Création du menu
|
// Création du menu
|
||||||
Menu menu = new Menu(this);
|
menu = new Menu(this);
|
||||||
|
|
||||||
// Ajout de la barre de menu au frame
|
// Ajout de la barre de menu au frame
|
||||||
|
|
||||||
this.setJMenuBar(menu.getMenuBar());
|
this.setJMenuBar(menu);
|
||||||
|
|
||||||
this.setSize(300, 300);
|
this.setSize(300, 300);
|
||||||
this.setLayout(null);
|
|
||||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
this.setLocationRelativeTo(null);
|
this.setLocationRelativeTo(null);
|
||||||
this.setVisible(true);
|
this.setVisible(true);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO
|
||||||
|
*
|
||||||
|
* @param fichier
|
||||||
|
*/
|
||||||
|
public void chargerPdf(File fichier) {
|
||||||
|
fichierPDF = new PDF(fichier);
|
||||||
|
|
||||||
|
/* Crée l’élément scrollable */
|
||||||
|
JScrollPane scrollPane = new JScrollPane(fichierPDF);
|
||||||
|
scrollPane.setHorizontalScrollBarPolicy(
|
||||||
|
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
||||||
|
scrollPane.setVerticalScrollBarPolicy(
|
||||||
|
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
|
||||||
|
scrollPane.getVerticalScrollBar().setUnitIncrement(16);
|
||||||
|
|
||||||
|
/* Supprime le précédent PDF */
|
||||||
|
this.getContentPane().removeAll();
|
||||||
|
|
||||||
|
/* Affiche le nouveau PDF */
|
||||||
|
this.getContentPane().add(scrollPane);
|
||||||
|
this.validate();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TODO comment main
|
||||||
|
*
|
||||||
|
* @param args non utilisé
|
||||||
|
*/
|
||||||
|
public static void main(String[] args) {
|
||||||
|
new Fenetre();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -43,15 +43,14 @@ public class PDF extends JPanel {
|
|||||||
* @param fichier Le fichier PDF que l’on veut ouvrir
|
* @param fichier Le fichier PDF que l’on veut ouvrir
|
||||||
* @throws IllegalArgumentException si le fichier n’existe pas
|
* @throws IllegalArgumentException si le fichier n’existe pas
|
||||||
*/
|
*/
|
||||||
public PDF(File fichier) throws IOException {
|
public PDF(File fichier) {
|
||||||
if (!fichier.exists()) {
|
try {
|
||||||
throw new IllegalArgumentException();
|
|
||||||
}
|
|
||||||
|
|
||||||
this.document = PDDocument.load(fichier);
|
this.document = PDDocument.load(fichier);
|
||||||
this.pages = new Page[document.getNumberOfPages()];
|
this.pages = new Page[document.getNumberOfPages()];
|
||||||
|
|
||||||
this.loadPages();
|
this.loadPages();
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new IllegalArgumentException();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -7,12 +7,10 @@
|
|||||||
package lecteur_pdf.menu;
|
package lecteur_pdf.menu;
|
||||||
|
|
||||||
import lecteur_pdf.affichage.Fenetre;
|
import lecteur_pdf.affichage.Fenetre;
|
||||||
import lecteur_pdf.document.PDF;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import java.awt.event.ActionEvent;
|
import java.awt.event.ActionEvent;
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -24,29 +22,37 @@ import java.util.ArrayList;
|
|||||||
* @author Noé VILLENEUVE
|
* @author Noé VILLENEUVE
|
||||||
* @version 1.0
|
* @version 1.0
|
||||||
*/
|
*/
|
||||||
public class Menu {
|
public class Menu extends JMenuBar {
|
||||||
public static File fichier ;
|
|
||||||
/** Array list contenant les JMenu */
|
|
||||||
private ArrayList<JMenu> menuList = new ArrayList<JMenu>();
|
|
||||||
|
|
||||||
/** Array list contenant les JMenuItem */
|
|
||||||
private ArrayList<JMenuItem> itemList = new ArrayList<JMenuItem>();
|
|
||||||
|
|
||||||
/** Création de la barre de menu */
|
|
||||||
JMenuBar menubar = new JMenuBar();
|
|
||||||
|
|
||||||
JFrame frame;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Appelle la fonction createMenuFichier
|
* La Fenêtre mère de la barre des menus
|
||||||
*/
|
*/
|
||||||
public Menu(JFrame frame) {
|
private final Fenetre fenetre;
|
||||||
this.frame = frame;
|
|
||||||
|
/**
|
||||||
|
* Liste contenant les différents menus
|
||||||
|
*/
|
||||||
|
private final ArrayList<JMenu> menuList = new ArrayList<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Liste contenant les différents sous menus
|
||||||
|
*/
|
||||||
|
private final ArrayList<JMenuItem> itemList = new ArrayList<>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructeur du menu
|
||||||
|
*
|
||||||
|
* @param fenetre La Fenêtre mère de la barre des menus
|
||||||
|
*/
|
||||||
|
public Menu(Fenetre fenetre) {
|
||||||
|
this.fenetre = fenetre;
|
||||||
|
|
||||||
createMenuFichier();
|
createMenuFichier();
|
||||||
|
// createMenuAfficher();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fonction pour créer le Menu fichier et ses items
|
* Créé le menu Fichier et ses sous-menus
|
||||||
*/
|
*/
|
||||||
private void createMenuFichier() {
|
private void createMenuFichier() {
|
||||||
|
|
||||||
@@ -61,66 +67,53 @@ public class Menu {
|
|||||||
Ouvrir.addActionListener(this::actionPerformed);
|
Ouvrir.addActionListener(this::actionPerformed);
|
||||||
Fermer.addActionListener(this::actionPerformed);
|
Fermer.addActionListener(this::actionPerformed);
|
||||||
|
|
||||||
|
// TODO raccourcis
|
||||||
|
|
||||||
// Ajouter les éléments au menu "Fichier"
|
// Ajouter les éléments au menu "Fichier"
|
||||||
Fichier.add(Ouvrir);
|
Fichier.add(Ouvrir);
|
||||||
Fichier.add(Fermer);
|
Fichier.add(Fermer);
|
||||||
|
|
||||||
// Ajouter le menu à la barre de menu
|
// Ajoute le menu "Fichier" dans la liste des menus
|
||||||
menubar.add(Fichier);
|
|
||||||
|
|
||||||
// Création du menu "Fichier"
|
|
||||||
menuList.add(Fichier);
|
menuList.add(Fichier);
|
||||||
|
|
||||||
// Créer les éléments du menu et sous menu
|
// Ajoute Ouvrir et Fermer dans la liste des sous menu
|
||||||
itemList.add(Ouvrir);
|
itemList.add(Ouvrir);
|
||||||
itemList.add(Fermer);
|
itemList.add(Fermer);
|
||||||
|
|
||||||
|
// Ajoute le menu à la barre de menu
|
||||||
|
this.add(Fichier);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Méthode qui gère les actions des JMenuItem
|
* Méthode qui gère les actions des sous-menus
|
||||||
|
*
|
||||||
* @param ae un action event
|
* @param ae un action event
|
||||||
*/
|
*/
|
||||||
public void actionPerformed(ActionEvent ae) {
|
public void actionPerformed(ActionEvent ae) {
|
||||||
String choice = ae.getActionCommand();
|
String choice = ae.getActionCommand();
|
||||||
if (choice.equals("Ouvrir")) {
|
|
||||||
try {
|
|
||||||
PDF doc;
|
|
||||||
doc = new PDF(SelectionnerFichier.ouvrirFichier());
|
|
||||||
/* Creation du JScrollPane contenant notre PDF pour pouvoir scroller */
|
|
||||||
JScrollPane scrollPane = new JScrollPane(doc);
|
|
||||||
scrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
|
|
||||||
scrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
|
|
||||||
|
|
||||||
/* Ajout du ScrollPane dans la frame et mise à jour de la frame */
|
switch (choice) {
|
||||||
frame.add(scrollPane);
|
case "Ouvrir" -> {
|
||||||
frame.validate();
|
File fichier = SelectionnerFichier.ouvrirFichier();
|
||||||
} catch (IOException e) {
|
fenetre.chargerPdf(fichier);
|
||||||
e.printStackTrace();
|
|
||||||
}
|
}
|
||||||
|
case "Fermer" -> System.exit(
|
||||||
|
0); // TODO à changer pour que ça quitte vraiment
|
||||||
}else if (choice.equals("Fermer")) {
|
|
||||||
System.exit(0); // TODO à changer pour que ça quitte vraiment
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return le menubar
|
* @return la liste des JMenuItem
|
||||||
*/
|
|
||||||
public JMenuBar getMenuBar() {
|
|
||||||
return menubar;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return l'ArrayList des JMenuItem
|
|
||||||
*/
|
*/
|
||||||
public ArrayList<JMenuItem> getMenuItems() {
|
public ArrayList<JMenuItem> getMenuItems() {
|
||||||
return itemList;
|
return itemList;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return l'item de l'ArrayList des JMenuBar à l'index indiqué
|
* Methode qui renvoie le sous menu demandé
|
||||||
|
*
|
||||||
|
* @param index Indice du sous menu
|
||||||
|
* @return Le sous menu demandé
|
||||||
*/
|
*/
|
||||||
public JMenuItem getMenuItem(int index) {
|
public JMenuItem getMenuItem(int index) {
|
||||||
return itemList.get(index);
|
return itemList.get(index);
|
||||||
|
|||||||
@@ -1,68 +1,67 @@
|
|||||||
/*
|
///*
|
||||||
* MenuTest.java, 25/11/2021
|
// * MenuTest.java, 25/11/2021
|
||||||
* IUT Rodez 2021-2022, INFO 2
|
// * IUT Rodez 2021-2022, INFO 2
|
||||||
* pas de copyright, aucun droits
|
// * pas de copyright, aucun droits
|
||||||
*/
|
// */
|
||||||
|
//
|
||||||
package lecteur_pdf.menu;
|
//package lecteur_pdf.menu;
|
||||||
|
//
|
||||||
import lecteur_pdf.document.Page;
|
//import lecteur_pdf.document.Page;
|
||||||
import org.junit.jupiter.api.Test;
|
//import org.junit.jupiter.api.Test;
|
||||||
|
//
|
||||||
import javax.swing.*;
|
//import javax.swing.*;
|
||||||
|
//
|
||||||
import java.sql.SQLOutput;
|
//import java.util.ArrayList;
|
||||||
import java.util.ArrayList;
|
//
|
||||||
|
//import static org.junit.jupiter.api.Assertions.*;
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
//
|
||||||
|
///**
|
||||||
/**
|
// * Tests de la classe {@link Page}
|
||||||
* Tests de la classe {@link Page}
|
// *
|
||||||
*
|
// * @author Léo FRANCH
|
||||||
* @author Léo FRANCH
|
// * @author Tristan NOGARET
|
||||||
* @author Tristan NOGARET
|
// * @author Lucàs VABRE
|
||||||
* @author Lucàs VABRE
|
// * @author Noé VILLENEUVE
|
||||||
* @author Noé VILLENEUVE
|
// */
|
||||||
*/
|
//class MenuTest {
|
||||||
class MenuTest {
|
//
|
||||||
|
// @Test
|
||||||
@Test
|
// void getMenuItems() {
|
||||||
void getMenuItems() {
|
//
|
||||||
|
// final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
||||||
final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
//
|
||||||
|
// Menu menuTest = new Menu(this);
|
||||||
Menu menuTest = new Menu(new JFrame());
|
// ArrayList<JMenuItem> menuItemTest = menuTest.getMenuItems();
|
||||||
ArrayList<JMenuItem> menuItemTest = menuTest.getMenuItems();
|
//
|
||||||
|
// for (int i = 0; i < menuItemTest.size(); i++) {
|
||||||
for (int i = 0; i < menuItemTest.size(); i++) {
|
// assertEquals(itemAttendu[i], menuItemTest.get(i).getText());
|
||||||
assertEquals(itemAttendu[i], menuItemTest.get(i).getText());
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//
|
||||||
|
// @Test
|
||||||
@Test
|
// void getMenuItem() {
|
||||||
void getMenuItem() {
|
//
|
||||||
|
// final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
||||||
final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
//
|
||||||
|
// Menu menuTest = new Menu(this);
|
||||||
Menu menuTest = new Menu(new JFrame());
|
//
|
||||||
|
// for (int i = 0; i < itemAttendu.length; i++) {
|
||||||
for (int i = 0; i < itemAttendu.length; i++) {
|
// assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]);
|
||||||
assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]);
|
// }
|
||||||
}
|
// }
|
||||||
}
|
//
|
||||||
|
// @Test
|
||||||
@Test
|
// void testMenu() {
|
||||||
void testMenu() {
|
// // Frame de test
|
||||||
// Frame de test
|
// JFrame frame = new JFrame("Menu ouverture");
|
||||||
JFrame frame = new JFrame("Menu ouverture");
|
//
|
||||||
|
// // Créer le Menu
|
||||||
// Créer le Menu
|
// Menu menu = new Menu(this);
|
||||||
Menu menu = new Menu(new JFrame());
|
//
|
||||||
|
// // Ajouter la barre de menu au frame
|
||||||
// Ajouter la barre de menu au frame
|
// frame.setJMenuBar(menu.getMenuBar());
|
||||||
frame.setJMenuBar(menu.getMenuBar());
|
// frame.setSize(300,300);
|
||||||
frame.setSize(300,300);
|
// frame.setLayout(null);
|
||||||
frame.setLayout(null);
|
// frame.setVisible(true);
|
||||||
frame.setVisible(true);
|
// }
|
||||||
}
|
//}
|
||||||
}
|
|
||||||
@@ -1,27 +1,18 @@
|
|||||||
package lecteur_pdf.menu;
|
package lecteur_pdf.menu;
|
||||||
|
|
||||||
import org.junit.jupiter.api.Test;
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
|
|
||||||
import lecteur_pdf.menu.Menu;
|
|
||||||
|
|
||||||
import javax.swing.*;
|
|
||||||
|
|
||||||
class SelectionnerFichierTest {
|
class SelectionnerFichierTest {
|
||||||
|
|
||||||
/**
|
// /**
|
||||||
* TODO comment main
|
// * TODO comment main
|
||||||
*
|
// *
|
||||||
* @param args
|
// * @param args
|
||||||
*/
|
// */
|
||||||
public static void main(String[] args) {
|
// public static void main(String[] args) {
|
||||||
JFrame frame = new JFrame("Test Menu ouverture");
|
// JFrame frame = new JFrame("Menu ouverture");
|
||||||
Menu menu = new Menu(frame);
|
// Menu menu = new Menu(this);
|
||||||
frame.setJMenuBar(menu.getMenuBar());
|
// frame.setJMenuBar(menu.getMenuBar());
|
||||||
frame.setSize(300,300);
|
// frame.setSize(300,300);
|
||||||
frame.setLayout(null);
|
// frame.setLayout(null);
|
||||||
frame.setVisible(true);
|
// frame.setVisible(true);
|
||||||
}
|
// }
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user