Package gui

Source Code of gui.MainWindow

package gui;

import static gui.MotsCleProjet.APP_TITRE;


import static gui.MotsCleProjet.CMD_LST_STAT_DEP;
import static gui.MotsCleProjet.CMD_LST_STAT_REC;
import static gui.MotsCleProjet.CMD_LST_STAT_CHIFFAF;
import static gui.MotsCleProjet.CMD_LST_ALERTE_VOITURE;
import static gui.MotsCleProjet.CMD_LST_ALERTE_FACTURE;

import static gui.MotsCleProjet.CMD_CLOSE;
import static gui.MotsCleProjet.CMD_HELP;
import static gui.MotsCleProjet.CMD_LISTAVERTI_CHAUF;
import static gui.MotsCleProjet.CMD_LISTFICSAL_CHAUF;
import static gui.MotsCleProjet.CMD_LISTFIC_ENTRET;
import static gui.MotsCleProjet.CMD_LISTFIC_PAIEFACTURE;
import static gui.MotsCleProjet.CMD_LIST_PERIODE_TRAVAIL;
import static gui.MotsCleProjet.CMD_LST_ATTRIB_ROLE_USER;
import static gui.MotsCleProjet.CMD_LST_CHAUF;
import static gui.MotsCleProjet.CMD_LST_CHRG_VOIT;
import static gui.MotsCleProjet.CMD_LST_CONTR;
import static gui.MotsCleProjet.CMD_LST_CPTE;
import static gui.MotsCleProjet.CMD_LST_ETAT;
import static gui.MotsCleProjet.CMD_LST_LOCA;
import static gui.MotsCleProjet.CMD_LST_MARQUE_VOIT;
import static gui.MotsCleProjet.CMD_LST_MODELE_VOIT;
import static gui.MotsCleProjet.CMD_LST_MOTIFIN_CONTR;
import static gui.MotsCleProjet.CMD_LST_PAYS;
import static gui.MotsCleProjet.CMD_LST_REC;
import static gui.MotsCleProjet.CMD_LST_ROLE_USER;
import static gui.MotsCleProjet.CMD_LST_STAT;
import static gui.MotsCleProjet.CMD_LST_TAR;
import static gui.MotsCleProjet.CMD_LST_TRAJ;
import static gui.MotsCleProjet.CMD_LST_TYPAVERTI;
import static gui.MotsCleProjet.CMD_LST_TYPCONTR;
import static gui.MotsCleProjet.CMD_LST_TYPE_CHARGE_VOIT;
import static gui.MotsCleProjet.CMD_LST_TYPE_ENTRET_VOIT;
import static gui.MotsCleProjet.CMD_LST_TYPE_UNITE;
import static gui.MotsCleProjet.CMD_LST_VIL;
import static gui.MotsCleProjet.CMD_LST_VOIT;
import static gui.MotsCleProjet.CMD_OPEN;
import static gui.MotsCleProjet.CMD_QUIT;
import static gui.util.TaxiGuiUtil.MessageBox;
import static gui.util.TaxiGuiUtil.createMenuItem;
import gui.charge.chargevoiture.ChargeVoitureListeFenetre;
import gui.charge.facture.FichePaiementFactureListeFenetre;
import gui.charge.typecharge.TypeChargeListeFenetre;
import gui.chauffeur.avertissement.AvertissementListeFenetre;
import gui.chauffeur.avertissement.TypeAvertissementListeFenetre;
import gui.chauffeur.contrat.ContratListeFenetre;
import gui.chauffeur.contrat.MotifFinContratListeFenetre;
import gui.chauffeur.contrat.PeriodeTravailListeFenetre;
import gui.chauffeur.contrat.TypeContratListeFenetre;
import gui.chauffeur.fichePaie.FichePaieListeFenetre;
import gui.chauffeur.gestionchauffeur.ChauffeurListeFenetre;
import gui.commun.etat.EtatListeFenetre;
import gui.commun.localite.LocaliteListeFenetre;
import gui.commun.pays.PaysListeFenetre;
import gui.commun.unite.TypeUniteListeFenetre;
import gui.commun.ville.VilleListeFenetre;
import gui.course.tarif.TarifCourseListeFenetre;
import gui.course.tournee.TourneeListeFenetre;
import gui.course.trajet.TrajetListeFenetre;
import gui.gestionCompteUser.AttributionRoleUserListeFenetre;
import gui.gestionCompteUser.CompteUserListeFenetre;
import gui.gestionCompteUser.RoleUserListeFenetre;
import gui.statistique.StatistiqueChiffreAffaireFenetre;
import gui.statistique.StatistiqueDepenseFenetre;
import gui.statistique.StatistiqueRecetteFen�tre;
import gui.util.TaxiGuiUtil;
import gui.voiture.alerte.AlerteListeFenetreFacture;
import gui.voiture.alerte.AlerteListeFenetreVoiture;
import gui.voiture.ficheentretien.FicheEntretienListeFenetre;
import gui.voiture.ficheentretien.TypeEntretienListeFenetre;
import gui.voiture.gestionvoiture.VoitureListeFenetre;
import gui.voiture.marque.MarqueVoitureListeFenetre;
import gui.voiture.modele.ModeleVoitureListeFenetre;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.BufferedImage;
import java.beans.PropertyVetoException;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.PipedWriter;
import java.math.BigDecimal;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.*;

import javax.imageio.ImageIO;
import javax.swing.*;
import javax.swing.table.AbstractTableModel;

import modele.alerte.AlerteVoiture;
import modele.compteUser.RoleUser;
import modele.course.Tournee;
import modele.voiture.GestionnaireAlerteVoiture;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

import dao.GestionnaireDeStockage;
import dao.ICompteUserDao;
import dao.IRoleUserDao;
import dao.ITourneeDao;
import dao.implementation.mysql.AccessMySql;

/**
* Classe MainWindow
* d�finit la fen�tre principale, c'est une interface � documents multiples ( MDI )
* plusieurs fen�tres sont incluses dans cette fen�tre principale
* @author Kasandra
*
*/
public class MainWindow implements ActionListener {
 
  JInternalFrame internalFrame;
 
  static Font titreFontAlerte = new Font("monotype corsiva", 1, 12);
 
 
  private static JFrame cadrePrincipal = new JFrame(APP_TITRE); // Appelle le
                                  // titre de
                                  // la
                                  // fen�tre
                                  // principale
  private static JDesktopPane desktop = new JDesktopPane(); // MDI
   
  /**
   * Retourne la fen�tre principale
   * @return
   */
  public static JFrame cadrePrincipal() {
    return cadrePrincipal;
  }

  public static JDesktopPane desktop() {
    return desktop;
  }

  static Font titreFont = new Font("Arial narrow", 1, 14);
 
  JButton boutonLogo;
  private JLabel utilisateurConnect�Area;
 
  private JPanel panelAlerte;


  JPanel paneImegeLogo;

  JLabel labTitre;

  private JMenu menuGestionSociete = null;
  private JMenu menuGestionJrnaliere = null;
  private JMenu menuEncodage = null;
  private JMenu menuCpteUser = null;
  private JMenu menuStatistique = null;
  private JMenu menuAlerte = null;
  private JMenu menuconnexion = null;

  ImageIcon ani, ani1;
 


  /**
   * Constructeur de la classe MainWindow
   */
  public MainWindow() {
    try {
      AccessMySql.ouvreConnection();   
    } catch (Exception e) {
      e.printStackTrace();
      TaxiGuiUtil.MessageBox(desktop, "Erreur de base de donn�es.  V�rifiez que la base de donn�es est d�mar�e.");
      System.exit(1);
    }
    CreationInterfaceUtilisateur();   
    initialiseRoles();
   
  }
 
  Map<String,java.util.List<JMenu>> roles = null;
 
  /**
   * initialise la liste des menus de chaque r�le utilisateur
   */
  private void initialiseRoles() {
    this.roles = new HashMap<String, java.util.List<JMenu>>();
    this.roles.put("admin", Arrays.asList(menuGestionSociete,menuGestionJrnaliere,menuEncodage,menuCpteUser,menuStatistique, menuAlerte ));
    this.roles.put("superemploye", Arrays.asList(menuGestionSociete,menuGestionJrnaliere,menuEncodage, menuStatistique, menuAlerte ));
    this.roles.put("employe", Arrays.asList(menuGestionJrnaliere,menuEncodage, menuAlerte));

  }

  /**
   * Retourne le bouton logo
   * @return boutonLogo
   */
  public JButton getBoutonLogo() {

    boutonLogo = new JButton();
    boutonLogo.setBounds(new Rectangle(300, 10, 900, 140));   
    ani = new ImageIcon(getClass().getClassLoader().getResource("images/logo_sandra3.png"));
    boutonLogo.setIcon(ani);
   
    return boutonLogo;
  }

  /**
   * Retourne le panel de logo
   * @return paneImegeLogo
   */
  public JPanel getPanelImageLogo() {

    paneImegeLogo = new JPanel();   
    paneImegeLogo.setBounds(new Rectangle(300, 10, 900, 140));
    paneImegeLogo.add(getBoutonLogo());

    return paneImegeLogo;
  }

  /**
   * <p>Cr�e item de menu connexion</p>
   * <p> Indique qu'une frappe est produite dans un composant : KeyEvent</p>
   * <p>d�finition d'un raccourci clavier: setMnemonic</p>
   *
   * @return menuconnexion
   */
  private JMenu menuConnexion() {
    menuconnexion = new JMenu("Connexion");
    menuconnexion.setFont(titreFont);
    menuconnexion.setMnemonic(KeyEvent.VK_C);
    menuconnexion.add(createMenuItem("Connexion ", CMD_OPEN, KeyEvent.VK_C, this));   
    menuconnexion.add(createMenuItem("D�connexion ", CMD_CLOSE, KeyEvent.VK_D, this));
    menuconnexion.add(createMenuItem("Quitter ", CMD_QUIT, KeyEvent.VK_Q, this));

    return menuconnexion;
  }
 
  /**
   * cr�e item de menu alerte voiture
   * @return menuconnexion
   */
  private JMenu menuAlerte() {
    menuAlerte = new JMenu("Alerte");
    menuAlerte.setFont(titreFont);
    menuAlerte.setMnemonic(KeyEvent.VK_A);
    menuAlerte.add(createMenuItem("Voitures", CMD_LST_ALERTE_VOITURE, KeyEvent.VK_V, this));
    menuAlerte.add(createMenuItem("Factures", CMD_LST_ALERTE_FACTURE, KeyEvent.VK_F, this));
    menuAlerte.setEnabled(false);

    return menuAlerte;
  }

 
  /**
   * Cr�e item de menu gestion soci�t�
   * @return menuGestionSociete
   */
  private JMenu menuGestionSociete() {
    menuGestionSociete = new JMenu("Soci�t�");
    menuGestionSociete.setFont(titreFont);
    menuGestionSociete.setEnabled(false);
    menuGestionSociete.setMnemonic(KeyEvent.VK_S);
   
    JMenu chauffeur = new JMenu("Chauffeurs");
    chauffeur.setMnemonic(KeyEvent.VK_C);
    chauffeur.add(createMenuItem(" Chauffeur", CMD_LST_CHAUF, KeyEvent.VK_C, this));
    chauffeur.add(createMenuItem(" Contrat", CMD_LST_CONTR, KeyEvent.VK_O, this));
    chauffeur.add(createMenuItem(" Avertissement", CMD_LISTAVERTI_CHAUF, KeyEvent.VK_A, this));
    chauffeur.add(createMenuItem(" Fiche salaire", CMD_LISTFICSAL_CHAUF, KeyEvent.VK_F, this));
    chauffeur.add(createMenuItem(" P�riode de travail", CMD_LIST_PERIODE_TRAVAIL, KeyEvent.VK_P, this))
   
    menuGestionSociete.add(chauffeur);
   
    JMenu voiture = new JMenu("Voitures");
    voiture.setMnemonic(KeyEvent.VK_V);
    voiture.add(createMenuItem("Voiture ", CMD_LST_VOIT, KeyEvent.VK_V, this));
    voiture.add(createMenuItem("Charge ", CMD_LST_CHRG_VOIT, KeyEvent.VK_C, this));
    voiture.add(createMenuItem("Entretien ", CMD_LISTFIC_ENTRET, KeyEvent.VK_E, this));
    voiture.add(createMenuItem("Paiement facture ", CMD_LISTFIC_PAIEFACTURE, KeyEvent.VK_P, this));
   
    menuGestionSociete.add(voiture);
    //menuGestionSociete.add(createMenuItem(" Statistique ", CMD_LST_STAT, KeyEvent.VK_R, this));

    return menuGestionSociete;

  }

  /**
   * cr�e item gestion journali�re
   * @return  menuGestionJrnaliere
   */
  private JMenu menuGestionJournaliere() {
    menuGestionJrnaliere = new JMenu("Op�ration journali�re");
    menuGestionJrnaliere.setFont(titreFont);
    menuGestionJrnaliere.setEnabled(false);   
    menuGestionJrnaliere.setMnemonic(KeyEvent.VK_O);
    menuGestionJrnaliere.add(createMenuItem(" Tourn�e", CMD_LST_REC, KeyEvent.VK_T, this));
    menuGestionJrnaliere.add(createMenuItem(" Trajet  ", CMD_LST_TRAJ, KeyEvent.VK_R, this));     
   
    return menuGestionJrnaliere;
  }

  /**
   *
   * Importation des donn�es � partir d'un fichier externe
   *    
   * @return
   */
  private JMenu menuStatistique() {
    menuStatistique = new JMenu("Statistique");
    menuStatistique.setFont(titreFont);
    menuStatistique.setEnabled(false);
    menuStatistique.setMnemonic(KeyEvent.VK_T);
    menuStatistique.add(createMenuItem(" Recettes ", CMD_LST_STAT_REC, KeyEvent.VK_R, this));
    menuStatistique.add(createMenuItem(" D�penses ", CMD_LST_STAT_DEP, KeyEvent.VK_D, this));
    menuStatistique.add(createMenuItem(" Chiffre d'affaires ", CMD_LST_STAT_CHIFFAF, KeyEvent.VK_C, this));
   

    return menuStatistique;
  }

  /**
   * cr�e item menu gestion compte utilisateur
   *
   * @return
   */
  private JMenu menuGestionCompteUser() {
    menuCpteUser = new JMenu("Compte utilisateur");
    menuCpteUser.setFont(titreFont);
    menuCpteUser.setEnabled(false);
    menuCpteUser.setMnemonic(KeyEvent.VK_C);
    menuCpteUser.add(createMenuItem(" Compte utilisateur ",  CMD_LST_CPTE, KeyEvent.VK_C, this));
    menuCpteUser.add(createMenuItem(" R�le utilisateur ",  CMD_LST_ROLE_USER, KeyEvent.VK_R, this));
    menuCpteUser.add(createMenuItem(" Attribution r�le utilisateur ",  CMD_LST_ATTRIB_ROLE_USER, KeyEvent.VK_A, this));

    return menuCpteUser;
  }

  /**
   * cr�e item menu encodage
   * @return menuEncodage
   */
  private JMenu menuEncodage() {
    menuEncodage = new JMenu("Encodage");
    menuEncodage.setFont(titreFont);
    menuEncodage.setEnabled(false);
    menuEncodage.setMnemonic(KeyEvent.VK_E);
    menuEncodage.add(createMenuItem(" Etat ", CMD_LST_ETAT, KeyEvent.VK_S, this));
   
    menuEncodage.add(createMenuItem(" Marque voiture ", CMD_LST_MARQUE_VOIT, KeyEvent.VK_M, this));
    menuEncodage.add(createMenuItem(" Mod�le voiture ", CMD_LST_MODELE_VOIT, KeyEvent.VK_O, this));
    menuEncodage.add(createMenuItem(" Motif fin contrat ", CMD_LST_MOTIFIN_CONTR, KeyEvent.VK_F, this));
   
    menuEncodage.add(createMenuItem(" Tarif taxis ", CMD_LST_TAR, KeyEvent.VK_T, this));
    menuEncodage.add(createMenuItem(" Type avertissement ", CMD_LST_TYPAVERTI, KeyEvent.VK_A, this));
    menuEncodage.add(createMenuItem(" Type charge voiture ", CMD_LST_TYPE_CHARGE_VOIT, KeyEvent.VK_C, this));
    menuEncodage.add(createMenuItem(" Type contrat ", CMD_LST_TYPCONTR, KeyEvent.VK_N, this));
    menuEncodage.add(createMenuItem(" Type entretien ", CMD_LST_TYPE_ENTRET_VOIT, KeyEvent.VK_E, this));
    menuEncodage.add(createMenuItem(" Type unit� ", CMD_LST_TYPE_UNITE, KeyEvent.VK_U, this));

    menuEncodage.add(createMenuItem(" Localit� ", CMD_LST_LOCA, KeyEvent.VK_L, this));
    menuEncodage.add(createMenuItem(" Ville ", CMD_LST_VIL, KeyEvent.VK_V, this));
    menuEncodage.add(createMenuItem(" Pays ", CMD_LST_PAYS, KeyEvent.VK_P, this));

   
    return menuEncodage;
  }

 
  private void desactiveMenu() {
    menuGestionSociete.setEnabled(false);
    menuGestionJrnaliere.setEnabled(false);
    menuEncodage.setEnabled(false);   
    menuCpteUser.setEnabled(false);
    menuStatistique.setEnabled(false);
    menuAlerte.setEnabled(false);   
  }
 
 

 
 
   
  /**
   * Active les menu
   */
  public void activeMenu(Vector<String> roles) {
    desactiveMenu();
    for (String role : roles) {
      java.util.List<JMenu> menusAccessibles = this.roles.get(role);
      if (menusAccessibles != null) {
        for (JMenu menu : menusAccessibles) {
          menu.setEnabled(true);
        }
      }
    }
  }

 
  /**
   * cr�e bar de menu
   *
   * @return menubar
   */
  private JMenuBar CreationMenuBar() {

    JMenuBar menubar = new JMenuBar();
    menubar.setFont(titreFont);

    menubar.add(menuConnexion());
    menubar.add(menuGestionSociete());
    menubar.add(menuGestionJournaliere());
    menubar.add(menuStatistique());
    menubar.add(menuAlerte());
    menubar.add(menuEncodage());   
    menubar.add(menuGestionCompteUser());   
    menubar.add(MenuAide())
   
    return menubar;
  }

  /**
   * Affiche liste charge voiture
   */
  public void affichageListeChargeVoiture() {
    new ChargeVoitureListeFenetre(desktop()).ouvreFenetre();
  }
 
  /**
   * cr�e item menu aide
   * @return help
   */
  private JMenu MenuAide() {
    JMenu help = new JMenu("Aide");
    help.setMnemonic(KeyEvent.VK_A);
    help.setFont(titreFont);
    help.add(createMenuItem("A Propos de logiciel BTEB", CMD_HELP, KeyEvent.VK_F1, this));
   

    return help;
  }
 
 



  /**
   * Affiche le fichier d'aide
   */
  public void affichageMenuAide() {       
    try {
      java.awt.Desktop.getDesktop().open(exporteFichierAide());
    } catch (IOException e) {
      e.printStackTrace();
      throw new RuntimeException(e);
    }
  }

 
  private File exporteFichierAide() throws FileNotFoundException, IOException {
    // Cr�e un fichier dans le r�pertoire temporaire => plus s�r que
    // d'�crire dans le r�pertoire courant et compatible avec Windows7
    // lorsque l'application est install�e dans le r�pertoire
    // "Program Files"
    String r�pertoireTemporaire = System.getProperty("java.io.tmpdir");
    File fichierAideExport� = new File(r�pertoireTemporaire +"/aideBteb.chm");
    BufferedOutputStream fileWriter = null;
    BufferedInputStream is = null;
    try {
      // Cr�e un writer pour le fichier d'aide � exporter.
      fileWriter = new BufferedOutputStream(new FileOutputStream(fichierAideExport�));
      // Ouvre la resource � exporter.
      is = new BufferedInputStream(getClass().getClassLoader().getResourceAsStream("aideBteb.chm"));
      // Copie le contenu de la resource 4Kb par 4Kb byte (4Kb est arbitraire).
      final int TAILLE_ARBITRAIRE_DU_BUFFER = 4 * 1024;
      byte[] buffer = new byte[TAILLE_ARBITRAIRE_DU_BUFFER];
      int nbBytesRead = 0;
      do {
        nbBytesRead = is.read(buffer);
        fileWriter.write(buffer);
      } while (nbBytesRead == TAILLE_ARBITRAIRE_DU_BUFFER);
    } finally {
      if (is != null) {
        is.close();
      }
      if (fileWriter != null) {
        fileWriter.close();
      }
    }
    return fichierAideExport�;
  }
 
  /**
   * Affiche le graphique statistique chiffre d'affaires
   * @throws Exception
   */
  public void affichageGrapheStatistiqueChiffreAffaire() throws Exception {
     new StatistiqueChiffreAffaireFenetre(desktop()).ouvreFenetre();
  }
 
 
  /**
   * Affiche  le graphique statistique des recettes
   * @throws Exception
   */
  public void affichageGrapheStatistiqueRecette() throws Exception {
     new StatistiqueRecetteFen�tre(desktop()).ouvreFenetre() ;
  }
 
  /**
   * Affiche le graphique statistique des d�penses
   * @throws Exception
   */
  public void affichageGrapheStatistiqueDepense() throws Exception {
    // new StatistiqueDepenseFenetre(MainWindow.cadrePrincipal(), this);
    new StatistiqueDepenseFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des types des entretien
   */
  public void affichageListeTypeEntretienVoit() {
    new TypeEntretienListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des marques des voitures
   */
  public void affichageListeMarqueVoiture() {
    new MarqueVoitureListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des  Types des contrats
   */
  public void affichageListeTypeContrat() {
    new TypeContratListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des alertes des voitures
   * @throws Exception
   */
  public void affichageListeAlerteVoiture() throws Exception {
    new AlerteListeFenetreVoiture();
  }
 

  /**
   * Affiche liste des alertes des Factures
   * @throws Exception
   */
  public void affichageListeAlerteFacture() throws Exception {
    new AlerteListeFenetreFacture();
  }

 

  /**
   * Affiche liste des fiches de  paie
   */
  public void affichageListeFichePaie() {
    new FichePaieListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des types des  avertissements
   */
  public void affichageListeTypeAvertissement() {
    new TypeAvertissementListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des avertissements
   */
  public void affichageListeAvertissement() {
    new AvertissementListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des  motifs de  fin contrat
   */
  public void affichageListeMotifFinContrat() {
    new MotifFinContratListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des fiches des  entretiens
   */
  public void affichageListeFicheEntretienVoiture() {
    new FicheEntretienListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des localites
   */
  public void AffichageListeLocalite() {
    new LocaliteListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des villes
   */
  public void affichageListeVille() {
    new VilleListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des chauffeurs
   */
  public void afficherListeChauffeur() {
    new ChauffeurListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des contrats
   */
  public void AffichageListeContrat() {
    new ContratListeFenetre(desktop()).ouvreFenetre();
  }

 

  /**
   * Affiche liste des tourn�es
   */
  public void AffichageListeRecette() {
    new TourneeListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des voitures
   */
  public void AffichageListeVoiture() {   
    new VoitureListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des types des chargese
   */
  public void affichageListeTypeChargeVoiture() {
    new TypeChargeListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste type intervalle charge
   */
  public void affichageListeTypeUniteCharge() {
    new TypeUniteListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des factures
   */
  public void affichageListeFichePaieFacture() {
    new FichePaiementFactureListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des trajets
   */
  public void AffichageListeTrajet() {
    new TrajetListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des tarifs
   *
   */
  public void AffichageListeTarifActuel() {
    new TarifCourseListeFenetre(desktop()).ouvreFenetre();
  }

 
  /**
   * Affiche Liste  des contrats
   */
  public void AffichageListeContrats() {
    new ContratListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste descomptes utilisateur
   */
  public void affichageListeCompteUser() {
    new CompteUserListeFenetre(desktop()).ouvreFenetre();
  }
 
 
  public void affichageListeAttributionRoleUser() {
    new AttributionRoleUserListeFenetre(desktop()).ouvreFenetre();
  }
 
  /**
   * Affiche liste des r�les utilisateur
   */
  public void affichageListeRoleUser() {
    new RoleUserListeFenetre(desktop()).ouvreFenetre();
  }
 
  /**
   * Affiche liste des �tat
   */
  public void affichageListeEtat() {

    new EtatListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Affiche liste des pays
   */
  public void affichageListePays() {

    new PaysListeFenetre(desktop()).ouvreFenetre();

  }
 
  /**
   * Affiche la liste des p�riodes de travail
   */
  public void affichageListePeriodeTravail() {

    new PeriodeTravailListeFenetre(desktop()).ouvreFenetre();

  }
 
 

  /**
   * Affiche liste des mod�les des voitures
   */
  public void affichageListeModeleVoiture() {
    new ModeleVoitureListeFenetre(desktop()).ouvreFenetre();
  }

  /**
   * Param�tre de connexion
   * connecte l'ulisateur,
   * v�rifie son login et password
   * active le menu en fonction de r�le de chacun
   * @throws PrjException
   */
  private void parametreDeConnection() throws PrjException {

    ConnectionDialog dlgDialog;

    try {
      dlgDialog = new ConnectionDialog(MainWindow.cadrePrincipal(), this);
     
      dlgDialog.affiche();
     
      if (dlgDialog.OK_Button()) {
       
        String utilisateur = dlgDialog.log();
       
        if (utilisateurEtMotDePasseValide(utilisateur, dlgDialog.passWord())) {
         
          Vector<String> roles = getRoleUtilisateur(utilisateur);
          activeMenu(roles);
          //change etat de la fen�tre apr�s connexion
          MainWindow.desktop().setBackground(Color.WHITE);
          setUtilisateurConnect�(utilisateur);
         
        } else {
          TaxiGuiUtil.MessageBox(desktop(), "Utilisateur non reconnu", "Erreur login");
        }
      }
    }

    catch (PrjException e) {
      throw new PrjException(e.RetourMessage());
    }
   
  }

  /**
   * r�cup�re les r�les de l'utilisateur
   *
   * @param loginName : compte utilisateur
   *
   * @return roles : liste de r�les
   */
  private Vector<String> getRoleUtilisateur(String loginName) {
    Vector<String> roles = new Vector<String>();

    IRoleUserDao roleUserDao = getRoleUserDao();
   
    Collection<RoleUser> roleUsers = roleUserDao.findByLoginName(loginName);
   
    for (RoleUser roleUser : roleUsers) {
      roles.add(roleUser.getLibelle());
    }
    return roles;
  }

  /**
   * <p>Retourne l'instance de la classe qui impl�mentera les m�thodes de l'interface IRoleUserDao</p>
   *  return
   */ 
 
  private IRoleUserDao getRoleUserDao() {
    try {
      return GestionnaireDeStockage.getInstance().getRoleUserDao();
    } catch (ClassNotFoundException e) {
      throw new RuntimeException(e);
    } catch (InstantiationException e) {
      throw new RuntimeException(e);
    } catch (IllegalAccessException e) {
      throw new RuntimeException(e);
    }
  }

  /**
   * v�rifie la validit� de login et mot de passe
   * @param log : login
   * @param pass : mot de passe
   *
   * @return
   * <ul>
   *   <li>true : si trouv�</li>
   *   <li>false : si pas trouv�</li>
   *</ul>
   */
  private boolean utilisateurEtMotDePasseValide(String log, String pass) {
    AccessMySql.ouvreConnection();
    return getCompteUserDao().existe(log, pass);
  }
 
 
  /**
   * <p>Retourne l'instance de la classe qui impl�mentera les m�thodes de l'interface ICompteUserDao</p>
   *  return
   */ 
 
  private ICompteUserDao getCompteUserDao() {
    try {
      return GestionnaireDeStockage.getInstance().getCompteUserDao();
    } catch (ClassNotFoundException e) {
      throw new RuntimeException(e);
    } catch (InstantiationException e) {
      throw new RuntimeException(e);
    } catch (IllegalAccessException e) {
      throw new RuntimeException(e);
    }
  }

  /**
   * Ferme l'application
   */
  private void Quit() throws PrjException {

    int ret = JOptionPane.showConfirmDialog(null, "Voulez-vous quitter l'application (Oui/Non) ?", "CONFIRMATION", JOptionPane.YES_NO_OPTION);

    if (ret == JOptionPane.YES_OPTION) {
      AccessMySql.fermeConnection();
      System.exit(0);
    }
  }

  /**
   * Gestionnaire des �v�nements
   */
  public void actionPerformed(ActionEvent ev) {

    String cmd = ev.getActionCommand();
    try {

      if (CMD_QUIT.equals(cmd)) {
        Quit();
      } else if (CMD_OPEN.equals(cmd)) {
        parametreDeConnection();// Connection � l'application
      } else if (CMD_LST_CHAUF.equals(cmd)) {
        afficherListeChauffeur();
      }
      else if(CMD_HELP.equals(cmd)){
        affichageMenuAide();
      }
      else if (CMD_LST_CONTR.equals(cmd)) {
        AffichageListeContrats();
      }
     
      else if (CMD_LST_ALERTE_VOITURE.equals(cmd)) {
        affichageListeAlerteVoiture();
      }
      else if (CMD_LST_ALERTE_FACTURE.equals(cmd)) {
        affichageListeAlerteFacture();
      }

      else if (CMD_LIST_PERIODE_TRAVAIL.equals(cmd)) {
        affichageListePeriodeTravail();
      }
     
      else if (CMD_LST_VIL.equals(cmd)) {
        affichageListeVille();
      }

      else if (CMD_LST_CPTE.equals(cmd)) {
        affichageListeCompteUser();
      } else if (CMD_LST_ATTRIB_ROLE_USER.equals(cmd)) {
        affichageListeAttributionRoleUser();
      }

      else if (CMD_LST_ROLE_USER.equals(cmd)) {
        affichageListeRoleUser();
      }

      else if (CMD_LST_VOIT.equals(cmd)) {
        AffichageListeVoiture();
      }

      else if (CMD_LST_TAR.equals(cmd)) {
        AffichageListeTarifActuel();
      }

     
      else if (CMD_LISTFIC_PAIEFACTURE.equals(cmd)) {
        affichageListeFichePaieFacture();
      }

      else if (CMD_LST_PAYS.equals(cmd)) {
        affichageListePays();
      }

      else if (CMD_LST_LOCA.equals(cmd)) {
        AffichageListeLocalite();
      }

      else if (CMD_LST_TRAJ.equals(cmd)) {
        AffichageListeTrajet();
      }

      else if (CMD_LST_CPTE.equals(cmd)) {
        affichageListeCompteUser();
      }

      else if (CMD_LST_TYPCONTR.equals(cmd)) {
        affichageListeTypeContrat();
      }

      else if (CMD_LST_ETAT.equals(cmd)) {
        affichageListeEtat();
      }

      else if (CMD_LST_TYPAVERTI.equals(cmd)) {
        affichageListeTypeAvertissement();
      }

      else if (CMD_LISTAVERTI_CHAUF.equals(cmd)) {
        affichageListeAvertissement();
      }

      else if (CMD_LST_MOTIFIN_CONTR.equals(cmd)) {
        affichageListeMotifFinContrat();
      }

     
      else if (CMD_LISTFICSAL_CHAUF.equals(cmd)) {
        affichageListeFichePaie();
      }

      else if (CMD_LST_MARQUE_VOIT.equals(cmd)) {
        affichageListeMarqueVoiture();
      }

      else if (CMD_LST_TYPE_ENTRET_VOIT.equals(cmd)) {
        affichageListeTypeEntretienVoit();
      }

     
      else if (CMD_LISTFIC_ENTRET.equals(cmd)) {
        affichageListeFicheEntretienVoiture();
      }

      else if (CMD_LST_MODELE_VOIT.equals(cmd)) {
        affichageListeModeleVoiture();
      }

      else if (CMD_LST_TYPE_CHARGE_VOIT.equals(cmd)) {
        affichageListeTypeChargeVoiture();
      }

      else if (CMD_LST_TYPE_UNITE.equals(cmd)) {
        affichageListeTypeUniteCharge();
      }

      else if (CMD_LST_CHRG_VOIT.equals(cmd)) {
        affichageListeChargeVoiture();
      }

      else if (CMD_LST_REC.equals(cmd)) {
        AffichageListeRecette();
      }
      else if (CMD_LST_STAT_REC.equals(cmd)) {
        affichageGrapheStatistiqueRecette();
      }

      else if (CMD_LST_STAT_DEP.equals(cmd)) {
        affichageGrapheStatistiqueDepense();
      }
     
      else if (CMD_LST_STAT_CHIFFAF.equals(cmd)) {
        affichageGrapheStatistiqueChiffreAffaire();
      }
     
      else if (CMD_CLOSE.equals(cmd)) {
        desactiveMenu();
        for (JInternalFrame frame :MainWindow.desktop().getAllFrames()) {
          frame.dispose();
        }
        MainWindow.desktop().setBackground(new java.awt.Color(170, 207, 249));
        setUtilisateurConnect�("");
        JOptionPane.showMessageDialog(null,"Connexion ANNULER.","Attention !",JOptionPane.ERROR_MESSAGE);

      }
    }
    catch (Exception e) {
      e.printStackTrace();
      MessageBox(MainWindow.desktop(), e.getMessage(), "Erreur");
    }
  }

  /**
   * Cr�e et met en place des diff�rents composants constituants l'interface
   * graphique de l'application.
   */
  protected void CreationInterfaceUtilisateur() {
    JFrame.setDefaultLookAndFeelDecorated(true);

    // Mettre image arri�re plan   
    JPanel imagePanel = new JPanel() {
      public void paint(Graphics g) {
        try {
          InputStream inputStream = getClass().getClassLoader().getResourceAsStream("images/ph6.jpg");
          BufferedImage image = ImageIO.read(inputStream);
          g.drawImage(image, 0, 0, this.getWidth(), this.getHeight(), this);
        }
        catch (IOException e) {
          e.printStackTrace();
        }
      }
    };   
    imagePanel.setBounds(new Rectangle(250, 200, 1000, 450));   
    //Image arri�re plan taxis
    MainWindow.desktop().setBackground(new java.awt.Color(170, 207, 249));
    MainWindow.desktop().add(imagePanel);
   
    //Image logo soci�t�
    MainWindow.desktop().add(getPanelImageLogo(), BorderLayout.NORTH);
   
    //panel alerte: affiche le nom d'utilisateur connect�   
    panelAlerte = new JPanel();   
    utilisateurConnect�Area = new JLabel("");
    utilisateurConnect�Area.setFont(new Font("monotype corsiva", 1, 19));
    utilisateurConnect�Area.setForeground(new java.awt.Color(255, 255, 255));   
    panelAlerte.setBounds(new Rectangle(50, 730, 1450, 40));   
    panelAlerte.setBackground(new java.awt.Color(170, 207, 249));
    panelAlerte.add(utilisateurConnect�Area);   
     
    MainWindow.desktop().add(panelAlerte , BorderLayout.SOUTH);
   
   
    int inset = 10;
    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();

    //Positionnement de la fen�tre
    MainWindow.cadrePrincipal().setBounds(inset, inset, screenSize.width - inset * 2, screenSize.height - inset * 6);
   
    MainWindow.cadrePrincipal().getContentPane().add(MainWindow.desktop(), BorderLayout.CENTER);
    MainWindow.cadrePrincipal().setJMenuBar(CreationMenuBar());// Insertion
                                  // d'une
                                  // barre de
                                  // menu.

    MainWindow.cadrePrincipal().setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    MainWindow.cadrePrincipal().setVisible(true);
  }
 
  void setUtilisateurConnect�(String utilisateurConnect�) {
    if (utilisateurConnect� != null && !utilisateurConnect�.equals("")) {
      utilisateurConnect�Area.setText("L'utilisateur connect� est : " + utilisateurConnect�);
    } else {
      utilisateurConnect�Area.setText("");
    }
  }
 
 
 
 
}
TOP

Related Classes of gui.MainWindow

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.