1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| package fenetres;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import struc_data.Interface;
/**
* Recherche un dossier
* @author Benjamin Demattéo
*/
public class Recherche implements ActionListener, KeyListener{
/**
* Zone de texte de la fenetre pour la recherche
*/
private JTextField zone;
/**
* Instance de visionneuse pour pouvoir revenir à l'application
*/
private Visioneuse visio;
/**
* Fenêtre graphique
*/
private JFrame fenetre;
/**
* Constructeur
* @param visioneuse Visioneuse pour retourner à la fenêtre principale
*/
public Recherche(Visioneuse visioneuse){
// On a besoin de pouvoir retrouver la fenetre qui a généré cette pop up
this.visio = visioneuse;
this.fenetre = new JFrame("Recherche");
//this.fenetre.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.fenetre.addKeyListener(this);
this.fenetre.setSize(500, 100);
this.fenetre.setLayout(new BorderLayout());
this.fenetre.setAlwaysOnTop(true);
this.fenetre.setLocationRelativeTo(null); //On centre la fenêtre sur l'écran
this.fenetre.setResizable(false); //On interdit la redimensionnement de la fenêtre
this.fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// on dit à l'application de se fermer lors du clic de la croix
this.fenetre.pack();//adil :permet de mettre une bonne dimension a la fenetre
// On dispose les éléments (zone de texte au centre, bouttons en bas)
this.zone = new JTextField();
this.zone.addKeyListener(this);
this.fenetre.add(zone, BorderLayout.CENTER);
JPanel panel = Interface.makePanelGrid(1, 2);
Interface.makeButton("Rechercher", panel, this);
Interface.makeButton("Annuler", panel, this);
this.fenetre.add(panel, BorderLayout.SOUTH);
this.fenetre.setVisible(true);
}
/**
* Actions réalisées selon les évènements
*/
public void actionPerformed(ActionEvent e) {
// Méthode qui permet de gérer les clics sur les bouttons de la fenêtre de recherche
Object source = e.getSource();
if (source instanceof JButton){
JButton butt = (JButton) source;
if (butt.getText().equals("Rechercher")){
int index = this.visio.getLiv().getIndexDossier(this.zone.getText());
if (index!=-1){
// Si on trouve un dossier, on change la valeur de courant, on raffraichit, et on retourne à la visionneuse
this.visio.setPosition(index);
JFrame fenetre_mere = this.visio.getJFrame();
fenetre_mere.setEnabled(true);
fenetre_mere.setVisible(true);
fenetre_mere.requestFocus();
this.fenetre.dispose();
this.visio.raffraichir();
}else{
// Si il n'y a pas de résultat, on le notifie, et on revient à la visionneuse
this.fenetre.dispose();
Message mess = new Message("Recherche", "Il n'y a pas de dossier correspondant à votre recherche", this.visio);
mess.show();
}
}else if (butt.getText().equals("Annuler")){
// On ferme la fenêtre et on revient à la visionneuse
this.fenetre.dispose();
this.visio.raffraichir();
JFrame fenetre_mere = this.visio.getJFrame();
fenetre_mere.setEnabled(true);
fenetre_mere.setVisible(true);
}
}
}
/**
* Non utilisée
*/
public void keyPressed(KeyEvent e) {}
/**
* Actions lancées par le clavier
*/
public void keyReleased(KeyEvent e) {
System.out.println(e.getKeyCode()+" : "+e.getKeyChar());
if ( e.getKeyCode()==10){
int index = this.visio.getLiv().getIndexDossier(this.zone.getText());
if (index!=-1){
// Si on trouve un dossier, on change la valeur de courant, on raffraichit, et on retourne à la visionneuse
this.visio.setPosition(index);
JFrame fenetre_mere = this.visio.getJFrame();
fenetre_mere.setEnabled(true);
fenetre_mere.setVisible(true);
}else{
// Si il n'y a pas de résultat, on le notifie, et on revient à la visionneuse
Message mess = new Message("Recherche", "Il n'y a pas de dossier correspondant à votre recherche", this.visio);
mess.show();
}
this.fenetre.dispose();
this.visio.getJFrame().requestFocus();
this.visio.raffraichir();
}
}
/**
* Non utilisée
*/
public void keyTyped(KeyEvent e) {}
} |
Partager