mirror of
https://github.com/LucasVbr/LecteurPdfDoubleAffichage.git
synced 2026-05-16 17:11:50 +00:00
SA MARCHE
This commit is contained in:
@@ -8,44 +8,85 @@ package lecteur_pdf.affichage;
|
||||
|
||||
import lecteur_pdf.document.PDF;
|
||||
import lecteur_pdf.menu.Menu;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* classe correspondant à l'objet Fenetre
|
||||
* classe correspondant à l’objet Fenêtre
|
||||
*
|
||||
* @author Léo FRANCH
|
||||
* @author Tristan NOGARET
|
||||
* @author Lucàs VABRE
|
||||
* @author Noé VILLENEUVE
|
||||
* @version 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
|
||||
public class Fenetre extends JFrame {
|
||||
//private JFrame frame;
|
||||
private String titre ;
|
||||
private Menu menu = new Menu(this);
|
||||
private PDF pdf ;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
private String titre;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
private Menu menu;
|
||||
|
||||
public Fenetre(){
|
||||
//création du frame
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
private PDF fichierPDF;
|
||||
|
||||
/**
|
||||
* TODO
|
||||
*/
|
||||
public Fenetre() {
|
||||
|
||||
// Création du menu
|
||||
Menu menu = new Menu(this);
|
||||
menu = new Menu(this);
|
||||
|
||||
// Ajout de la barre de menu au frame
|
||||
|
||||
this.setJMenuBar(menu.getMenuBar());
|
||||
this.setSize( 300 ,300);
|
||||
this.setLayout(null);
|
||||
this.setJMenuBar(menu);
|
||||
|
||||
this.setSize(300, 300);
|
||||
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||
this.setLocationRelativeTo(null);
|
||||
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
|
||||
* @throws IllegalArgumentException si le fichier n’existe pas
|
||||
*/
|
||||
public PDF(File fichier) throws IOException {
|
||||
if (!fichier.exists()) {
|
||||
public PDF(File fichier) {
|
||||
try {
|
||||
this.document = PDDocument.load(fichier);
|
||||
this.pages = new Page[document.getNumberOfPages()];
|
||||
this.loadPages();
|
||||
} catch (IOException e) {
|
||||
throw new IllegalArgumentException();
|
||||
}
|
||||
|
||||
this.document = PDDocument.load(fichier);
|
||||
this.pages = new Page[document.getNumberOfPages()];
|
||||
|
||||
this.loadPages();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,12 +7,10 @@
|
||||
package lecteur_pdf.menu;
|
||||
|
||||
import lecteur_pdf.affichage.Fenetre;
|
||||
import lecteur_pdf.document.PDF;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
@@ -22,31 +20,39 @@ import java.util.ArrayList;
|
||||
* @author Tristan NOGARET
|
||||
* @author Lucàs VABRE
|
||||
* @author Noé VILLENEUVE
|
||||
* @version 1.0
|
||||
* @version 1.0
|
||||
*/
|
||||
public class Menu {
|
||||
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;
|
||||
public class Menu extends JMenuBar {
|
||||
|
||||
/**
|
||||
* Appelle la fonction createMenuFichier
|
||||
* La Fenêtre mère de la barre des menus
|
||||
*/
|
||||
public Menu(JFrame frame) {
|
||||
this.frame = frame;
|
||||
private final Fenetre fenetre;
|
||||
|
||||
/**
|
||||
* 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();
|
||||
// createMenuAfficher();
|
||||
}
|
||||
|
||||
/**
|
||||
* Fonction pour créer le Menu fichier et ses items
|
||||
* Créé le menu Fichier et ses sous-menus
|
||||
*/
|
||||
private void createMenuFichier() {
|
||||
|
||||
@@ -61,66 +67,53 @@ public class Menu {
|
||||
Ouvrir.addActionListener(this::actionPerformed);
|
||||
Fermer.addActionListener(this::actionPerformed);
|
||||
|
||||
// TODO raccourcis
|
||||
|
||||
// Ajouter les éléments au menu "Fichier"
|
||||
Fichier.add(Ouvrir);
|
||||
Fichier.add(Fermer);
|
||||
|
||||
// Ajouter le menu à la barre de menu
|
||||
menubar.add(Fichier);
|
||||
|
||||
// Création du menu "Fichier"
|
||||
// Ajoute le menu "Fichier" dans la liste des menus
|
||||
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(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
|
||||
*/
|
||||
public void actionPerformed(ActionEvent ae) {
|
||||
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 */
|
||||
frame.add(scrollPane);
|
||||
frame.validate();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
switch (choice) {
|
||||
case "Ouvrir" -> {
|
||||
File fichier = SelectionnerFichier.ouvrirFichier();
|
||||
fenetre.chargerPdf(fichier);
|
||||
}
|
||||
|
||||
|
||||
}else if (choice.equals("Fermer")) {
|
||||
System.exit(0); // TODO à changer pour que ça quitte vraiment
|
||||
case "Fermer" -> System.exit(
|
||||
0); // TODO à changer pour que ça quitte vraiment
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @return le menubar
|
||||
*/
|
||||
public JMenuBar getMenuBar() {
|
||||
return menubar;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return l'ArrayList des JMenuItem
|
||||
* @return la liste des JMenuItem
|
||||
*/
|
||||
public ArrayList<JMenuItem> getMenuItems() {
|
||||
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) {
|
||||
return itemList.get(index);
|
||||
|
||||
@@ -1,68 +1,67 @@
|
||||
/*
|
||||
* MenuTest.java, 25/11/2021
|
||||
* IUT Rodez 2021-2022, INFO 2
|
||||
* pas de copyright, aucun droits
|
||||
*/
|
||||
|
||||
package lecteur_pdf.menu;
|
||||
|
||||
import lecteur_pdf.document.Page;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
import java.sql.SQLOutput;
|
||||
import java.util.ArrayList;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* Tests de la classe {@link Page}
|
||||
*
|
||||
* @author Léo FRANCH
|
||||
* @author Tristan NOGARET
|
||||
* @author Lucàs VABRE
|
||||
* @author Noé VILLENEUVE
|
||||
*/
|
||||
class MenuTest {
|
||||
|
||||
@Test
|
||||
void getMenuItems() {
|
||||
|
||||
final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
||||
|
||||
Menu menuTest = new Menu(new JFrame());
|
||||
ArrayList<JMenuItem> menuItemTest = menuTest.getMenuItems();
|
||||
|
||||
for (int i = 0; i < menuItemTest.size(); i++) {
|
||||
assertEquals(itemAttendu[i], menuItemTest.get(i).getText());
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void getMenuItem() {
|
||||
|
||||
final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
||||
|
||||
Menu menuTest = new Menu(new JFrame());
|
||||
|
||||
for (int i = 0; i < itemAttendu.length; i++) {
|
||||
assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testMenu() {
|
||||
// Frame de test
|
||||
JFrame frame = new JFrame("Menu ouverture");
|
||||
|
||||
// Créer le Menu
|
||||
Menu menu = new Menu(new JFrame());
|
||||
|
||||
// Ajouter la barre de menu au frame
|
||||
frame.setJMenuBar(menu.getMenuBar());
|
||||
frame.setSize(300,300);
|
||||
frame.setLayout(null);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
}
|
||||
///*
|
||||
// * MenuTest.java, 25/11/2021
|
||||
// * IUT Rodez 2021-2022, INFO 2
|
||||
// * pas de copyright, aucun droits
|
||||
// */
|
||||
//
|
||||
//package lecteur_pdf.menu;
|
||||
//
|
||||
//import lecteur_pdf.document.Page;
|
||||
//import org.junit.jupiter.api.Test;
|
||||
//
|
||||
//import javax.swing.*;
|
||||
//
|
||||
//import java.util.ArrayList;
|
||||
//
|
||||
//import static org.junit.jupiter.api.Assertions.*;
|
||||
//
|
||||
///**
|
||||
// * Tests de la classe {@link Page}
|
||||
// *
|
||||
// * @author Léo FRANCH
|
||||
// * @author Tristan NOGARET
|
||||
// * @author Lucàs VABRE
|
||||
// * @author Noé VILLENEUVE
|
||||
// */
|
||||
//class MenuTest {
|
||||
//
|
||||
// @Test
|
||||
// void getMenuItems() {
|
||||
//
|
||||
// final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
||||
//
|
||||
// Menu menuTest = new Menu(this);
|
||||
// ArrayList<JMenuItem> menuItemTest = menuTest.getMenuItems();
|
||||
//
|
||||
// for (int i = 0; i < menuItemTest.size(); i++) {
|
||||
// assertEquals(itemAttendu[i], menuItemTest.get(i).getText());
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void getMenuItem() {
|
||||
//
|
||||
// final String[] itemAttendu = {"Ouvrir", "Fermer"};
|
||||
//
|
||||
// Menu menuTest = new Menu(this);
|
||||
//
|
||||
// for (int i = 0; i < itemAttendu.length; i++) {
|
||||
// assertEquals(menuTest.getMenuItem(i).getText(), itemAttendu[i]);
|
||||
// }
|
||||
// }
|
||||
//
|
||||
// @Test
|
||||
// void testMenu() {
|
||||
// // Frame de test
|
||||
// JFrame frame = new JFrame("Menu ouverture");
|
||||
//
|
||||
// // Créer le Menu
|
||||
// Menu menu = new Menu(this);
|
||||
//
|
||||
// // Ajouter la barre de menu au frame
|
||||
// frame.setJMenuBar(menu.getMenuBar());
|
||||
// frame.setSize(300,300);
|
||||
// frame.setLayout(null);
|
||||
// frame.setVisible(true);
|
||||
// }
|
||||
//}
|
||||
@@ -1,27 +1,18 @@
|
||||
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 {
|
||||
|
||||
/**
|
||||
* TODO comment main
|
||||
*
|
||||
* @param args
|
||||
*/
|
||||
public static void main(String[] args) {
|
||||
JFrame frame = new JFrame("Test Menu ouverture");
|
||||
Menu menu = new Menu(frame);
|
||||
frame.setJMenuBar(menu.getMenuBar());
|
||||
frame.setSize(300,300);
|
||||
frame.setLayout(null);
|
||||
frame.setVisible(true);
|
||||
}
|
||||
// /**
|
||||
// * TODO comment main
|
||||
// *
|
||||
// * @param args
|
||||
// */
|
||||
// public static void main(String[] args) {
|
||||
// JFrame frame = new JFrame("Menu ouverture");
|
||||
// Menu menu = new Menu(this);
|
||||
// frame.setJMenuBar(menu.getMenuBar());
|
||||
// frame.setSize(300,300);
|
||||
// frame.setLayout(null);
|
||||
// frame.setVisible(true);
|
||||
// }
|
||||
}
|
||||
Reference in New Issue
Block a user