package fr.alma.ihm.vues; import java.awt.BorderLayout; import java.awt.Dimension; import javax.swing.ImageIcon; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.UIManager; import fr.alma.controleur.IControleur; import fr.alma.ihm.Menu; import fr.alma.ihm.vues.generale.popup.ConnexionPopup; import fr.alma.modele.AbstractModele; import fr.alma.observer.Observer; /** * Classe ApplicationGTD, représente l'application graphique entière * * @author Université de Nantes * @since 2009 * @version 1.0 */ public final class ApplicationGTD extends JFrame implements Observer { /** * UID généré */ private static final long serialVersionUID = 1663009921030966939L; /** * instance de la classe (pattern singleton) */ private static ApplicationGTD instance; /** * Taille statique de la fenêtre */ private static int tailleHauteur = 600; private static int tailleLargeur = 800; /** * Conteneur principal */ private static final JPanel CONTPRINCIPAL = new JPanel(); /** * Conteneur comportant les différentes vues (générale, agenda, échéancier) */ private Vues containerVues; /** * Conteneur de message d'erreur (centralisé pour que les informations ne * soient pas dispersées) */ private JPanel containerErreurs = new JPanel(); /** * Le menu */ private Menu menu; /** * Instance de notre objet controleur */ private static IControleur controler; /** * Constructeur. */ private ApplicationGTD() { // Le look and feel try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } Dimension d = new Dimension(tailleLargeur, tailleHauteur); setSize(d); setPreferredSize(d); setMinimumSize(new Dimension(640, 480)); setTitle("Getting Things Done"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setLocationRelativeTo(null); setResizable(true); affiche(); containerErreurs.setPreferredSize(new Dimension(tailleLargeur, 32)); setContentPane(CONTPRINCIPAL); pack(); setVisible(true); ConnexionPopup.getInstance(); } /** * Méthode affiche permettant de gérer tous les éléments que contiennent la * fenêtre */ private void affiche() { containerVues = new Vues(); menu = new Menu(containerVues.getVueGenerale().getToolBar()); this.setJMenuBar(menu); try { UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName()); } catch (Exception e) { e.printStackTrace(); } CONTPRINCIPAL.setLayout(new BorderLayout()); CONTPRINCIPAL.add(containerVues, BorderLayout.CENTER); CONTPRINCIPAL.add(containerErreurs, BorderLayout.SOUTH); } /** * Méthode getInstance (pattern singleton) * * @return instance l'instance de la classe */ public static ApplicationGTD getInstance() { synchronized (instance) { if (instance == null) { instance = new ApplicationGTD(); } } return instance; } // ************************************************** // GETTERS AND SETTERS // ************************************************** public int getTAILLEHAUTEUR() { return tailleHauteur; } public int getTAILLELARGEUR() { return tailleLargeur; } public Menu getMenu() { return menu; } public JPanel getContainerErreurs() { return containerErreurs; } public Vues getContainerVues() { return containerVues; } public IControleur getControler() { return controler; } public void setTAILLEHAUTEUR(final int THAUTEUR) { tailleHauteur = THAUTEUR; } public void setTAILLELARGEUR(final int TAILLEHAUTEUR) { tailleLargeur = TAILLEHAUTEUR; } public void setMenu(Menu menu) { this.menu = menu; } public void setContainerErreurs(JPanel containerErreurs) { this.containerErreurs = containerErreurs; } public void setContainerVues(Vues containerVues) { this.containerVues = containerVues; } public void setControler(IControleur controler) { ApplicationGTD.controler = controler; } // ************************************************ // IMPLEMENTATION DU PATTERN OBSERVER // ************************************************ @Override public void update(AbstractModele modele) { } // ************************************************ // TEST // ************************************************ /** * méthode gererMessage permettant de gérer les messages d'erreurs * * @param codeErreur * le code d'erreur (0 warning, 1 validation, 2 erreur) * @param string * message d'erreur */ public void gererMessage(int codeErreur, String string) { containerErreurs.removeAll(); JLabel message = new JLabel(string); if (codeErreur == 0) { ImageIcon imgWarning = new ImageIcon(getClass().getResource( "/images/warning_24.png")); message.setIcon(imgWarning); } else if (codeErreur == 1) { ImageIcon imgok = new ImageIcon(getClass().getResource( "/images/ok_24.png")); message.setIcon(imgok); } else if (codeErreur == 2) { ImageIcon imgPasOk = new ImageIcon(getClass().getResource( "/images/warning_24.png")); message.setIcon(imgPasOk); } containerErreurs.add(message); containerErreurs.revalidate(); containerErreurs.repaint(); } }