package projet; import java.awt.Color; import java.awt.Component; import java.awt.Desktop; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JList; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextField; import javax.swing.ListSelectionModel; import javax.swing.border.LineBorder; import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; /** * * Cette classe permet de représenter l'interface graphique. * Elle permet d'ajouter des composants graphiques et de les relier aux autres classes notamment par le biais d'écouteurs. * @author Bui Christophe & Mahé Julien * */ public class ArboIHM extends JFrame implements ActionListener { private List liste = new ArrayList(); private JPanel panel = new JPanel(); private JPanel boutons = new JPanel(); private JButton triNom = new JButton("Arborescence triée par nom"); private JButton triTaille = new JButton("Arborescence triée par taille"); // private JButton triDate = new JButton("Arborescence triée par date"); private File test = new File("."); private ArboTrieeParNom a1 = new ArboTrieeParNom(test);; private ArboTrieeParTaille at1 = new ArboTrieeParTaille(test); private JList laListe = new JList(liste.toArray());; private JLabel nomLabel = new JLabel("Nom : "); private JLabel tailleLabel = new JLabel("Taille : "); private JLabel dateLabel = new JLabel("Date : "); private JPanel nom = new JPanel(); private JPanel taille = new JPanel(); private JPanel date = new JPanel(); private JTextField nomTexte = new JTextField("Veuillez sélectionner un fichier",20); private JTextField tailleTexte = new JTextField("Veuillez sélectionner un fichier",20); private JTextField dateTexte = new JTextField("Veuillez sélectionner un fichier",20); private JTextField typeTexte = new JTextField("Veuillez sélectionner un fichier",20); private JScrollPane scrollPane = new JScrollPane(laListe); private JButton ouvrir = new JButton("Ouvrir le fichier"); private GridLayout g1 = new GridLayout(3, 1); private JLabel typeLabel = new JLabel("Type : "); private JPanel type = new JPanel(); private JScrollPane j1 = new JScrollPane(laListe); private JPanel infos = new JPanel(); private FileProperty p1; private File f1; public ArboIHM() { init(); } /** * Cette classe sert a trier par nom lorsque l'on appuie sur le bouton correspondant. * @author Bui Christophe */ private class triParNom implements ActionListener { public void actionPerformed(ActionEvent arg0) { laListe.setListData(a1.getListe().toArray()); } } /** * Cette classe sert a trier par taille lorsque l'on appuie sur le bouton correspondant. * @author Bui Christophe */ private class triParTaille implements ActionListener { public void actionPerformed(ActionEvent arg0) { laListe.setListData(at1.getListe().toArray()); } } private class Ouvrir implements ActionListener { public void actionPerformed(ActionEvent arg0) { laListe.setListData(at1.getListe().toArray()); Runtime r = Runtime.getRuntime(); { try { r.exec("rundll32 url.dll,FileProtocolHandler c:/pdf/mypdf.pdf"); } catch (Exception ex) { } } } } public void init() { setVisible(true); this.setJMenuBar(this.creationBarreDeMenu()); setTitle("Projet de JAVA"); pack(); setSize(700, 300); this.setLocationRelativeTo(null); setResizable(false); setDefaultCloseOperation(EXIT_ON_CLOSE); nomTexte.setEditable(false); dateTexte.setEditable(false); tailleTexte.setEditable(false); typeTexte.setEditable(false); add(panel); nom.add(nomLabel); nom.add(nomTexte); date.add(dateLabel); date.add(dateTexte); taille.add(tailleLabel); taille.add(tailleTexte); type.add(typeLabel); type.add(typeTexte); boutons.add(triNom); boutons.add(triTaille); boutons.add(ouvrir); infos.add(nom); infos.add(date); infos.add(taille); infos.add(type); panel.setLayout(g1); panel.add(boutons); panel.add(infos); j1.setViewportView(laListe); panel.add(j1); triNom.addActionListener(new triParNom()); triTaille.addActionListener(new triParTaille()); laListe.setBorder(new LineBorder(Color.black)); laListe.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); laListe.addListSelectionListener(new ListSelectionListener() { public void valueChanged(ListSelectionEvent e) { File f1 = (File) laListe.getSelectedValue(); FileProperty p1 = new FileProperty(f1.getName()); nomTexte.setText(f1.getName()); dateTexte.setText(p1.getFormatedDate()); tailleTexte.setText(p1.getFormatedSize()); typeTexte.setText(p1.getType()); } }); panel.updateUI(); } /** * Cette méthode permet de créer une barre de menu dans la fenêtre. * @author Mahé Julien * @return barre de menu */ private JMenuBar creationBarreDeMenu() { JMenuBar jmb = new JMenuBar(); JMenu fichier = new JMenu("Fichier"); JMenu aide = new JMenu("?"); JMenuItem itemNouveau = new JMenuItem("Nouveau"); JMenuItem itemSauver = new JMenuItem("Sauvegarder"); JMenuItem itemCharger = new JMenuItem("Charger"); JMenuItem itemQuitter = new JMenuItem("Quitter"); JMenuItem itemPropos = new JMenuItem("A Propos"); JMenuItem itemAide = new JMenuItem("Aide"); fichier.add(itemNouveau); fichier.add(itemSauver); fichier.add(itemCharger); fichier.add(itemQuitter); aide.add(itemPropos); aide.add(itemAide); jmb.add(fichier); jmb.add(aide); itemQuitter.addActionListener(this); return jmb; } /** * Cette méthode permet de fermer la fenêtre lorsque l'on clique sur "quitter" dans la barre de menu. * @author Mahé Julien */ public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if (action.equals("Quitter")) { System.exit(0); } } /** * Cette méthode permet de lancer le programme. * @author Bui Christophe & Mahé Julien */ public static void main(String... args) { new ArboIHM(); } }