package gui.course.tournee;
import static gui.MotsCleProjet.CMD_CANCEL;
import static gui.MotsCleProjet.CMD_DEBUT_TOURNEE;
import static gui.MotsCleProjet.CMD_FIN_TOURNEE;
import static gui.MotsCleProjet.CMD_OK;
import static gui.MotsCleProjet.CMD_PRECEDENT;
import static gui.MotsCleProjet.CMD_SUIVANT;
import static gui.MotsCleProjet.DATE_ERREUR_TEXTE;
import static gui.MotsCleProjet.IsDecimal;
import static gui.MotsCleProjet.IsLong;
import static gui.MotsCleProjet.IsNum;
import static gui.MotsCleProjet.IsNumString;
import static gui.util.TaxiGuiUtil.FabricationButton;
import static gui.util.TaxiGuiUtil.MessageBox;
import gui.DateCalendar;
import gui.JTextControlKey;
import gui.MainWindow;
import gui.MotsCleProjet;
import gui.chauffeur.gestionchauffeur.ChauffeurAffichable;
import gui.commun.ville.VilleAffichable;
import gui.util.ErreurDeValidation;
import gui.util.IRetourneDate;
import gui.util.TaxiGuiUtil;
import gui.voiture.gestionvoiture.VoitureAffichable;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.math.BigDecimal;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JToolBar;
import modele.chauffeur.Chauffeur;
import modele.chauffeur.IChauffeur;
import modele.chauffeur.ReferenceChauffeur;
import modele.chauffeur.Ville;
import modele.course.Tournee;
import modele.course.Trajet;
import modele.voiture.Voiture;
import util.BigDecimalFormatter;
import dao.GestionnaireDeStockage;
import dao.IDao;
import dao.IReadOnlyDao;
import dao.IVoitureDao;
/**
* TourneeEditionCourse : c'est la classe qui cr�e
* <p>les composants de l'interface utilisateur</p>
*
* @author Kasandra
*
*/
public class TourneeEditionCourse extends JFrame implements ActionListener {
private static final long serialVersionUID = 1L;
private static final String CARD_LAYOUT_NAME_DEBUT_TOURNEE = "DEBUT_TOURNEE";
private static final String CARD_LAYOUT_NAME_TRAJET = "TRAJET";
private static final String CARD_LAYOUT_NAME_FIN_TOURNEE = "FIN_TOURNEE";
/**
* Etape est la classe qui d�finit une �tape du cardLayout
*
* @author Kasandra
*
*/
private static class Etape {
private String cardLayoutName;
/**
* <p>
* Constructeur de la classe Etape qui re�oit en param�tre un cardLayout </p>
* @param cardLayoutName : nom de cardLayout.
*/
public Etape(String cardLayoutName) {
this.cardLayoutName = cardLayoutName;
}
/**
* Retourne le nom de cardLayout
* @return le nom de cardLayout sous forme des caract�res
*/
public String getCardLayoutName() {
return cardLayoutName;
}
}
/**
* GestionnaireEtape est une classe qui g�re les diff�rentes �tapes
*
* elle est caract�ris� par les informations suivantes :
* un indexCourant qui pr�cise la position courante,
* une �tape d�but de la tourn�e
* une �tape fin de la tourn�e et
* une liste d'�tapes o� on pourra ajouter
* les �tapes (cardLayout).
*
* @see Etape
* @author Kasandra
* @version 1.0
*/
private static class GestionnaireEtape {
/**
* cr�e un objet static de l'�tape d�but tourn�e
* @see Etape
*/
private static Etape DEBUT_TOURNEE = new Etape(CARD_LAYOUT_NAME_DEBUT_TOURNEE);
/**
* cr�e un objet static de l'�tape fin tourn�e
* @see Etape
*/
private static Etape FIN_TOURNEE = new Etape(CARD_LAYOUT_NAME_FIN_TOURNEE);
/**
* La liste des �tapes.
* Il est possible d'ajouter les �tapes dans cette liste.
* @see Etape
*/
private final ArrayList<Etape> �tapes;
/**
* un entier index courant
*/
int indexCourant;
/**
* Constructeur GestionnaireEtape
* � la construction d'un objet gestionnaireEtape
* on cr�e la liste des �tapes � la quelle on ajoute une �tape d�but tourn�e, fin tourn�e et on positionne l'index � 0
* @see Etape
*/
public GestionnaireEtape() {
�tapes = new ArrayList<Etape>();
�tapes.add(DEBUT_TOURNEE);
�tapes.add(FIN_TOURNEE);
indexCourant = 0;
}
/**
* initialise la tourn�e
* ajoute les composants du cardLayout en fonction de nombre de trajets
* se rapportant � la tourn�e
* @param tournee
*
* @see Etape
* @see Tournee
*/
public void initialise(Tournee tournee) {
for (int i = 0; i < tournee.getTrajets().size(); i++) {
ajouteEtape(new Etape(CARD_LAYOUT_NAME_TRAJET));
}
indexCourant = 0;
}
/**
* Retourne l'�tape courante
*
* @see Etape
* @return �tape courante
*/
public Etape courante() {
return �tapes.get(indexCourant);
}
/**
* retourne l'index courant
* @return index courant
*/
public int getIndexCourant() {
return indexCourant;
}
/**
* permet d'aller au premier index du cardLayout qui n'est autre que les informations
* du d�but de la tourn�e
*/
public void allerDebutTourn�e() {
indexCourant = 0;
}
/**
* retourne true si index courant est diff�rent de zero
* @return true si indexCourant est diff�rent de 0
*/
public boolean aUneEtapePr�c�dente() {
return (indexCourant != 0);
}
/**
* permet d'aller � une �tape pr�cedente.
* decr�mentation de l'indexCourant
*/
public void allerEtapePr�c�dente() {
if (aUneEtapePr�c�dente()) {
indexCourant--;
}
}
/**
* Retourne true si on a une �tape suivante
* <p> Index courant est diff�rent de la taille de la liste - 1 </p>
* @return true si indexCourant est diff�rent de la taille de la liste - 1
*/
public boolean aUneEtapeSuivante() {
return indexCourant != (�tapes.size() - 1);
}
/**
* <p> Permet d' aller � une �tape suivante</p>
* <p> On incremente indexCourant s'il y a une �tape suivante </p>
*/
public void allerEtapeSuivante() {
if (aUneEtapeSuivante()) {
indexCourant++;
}
}
/**
* <p> Permet d'aller � la fin de la tourn�e </p>
* <p> Positionne l'index courant � la fin de la liste </p>
*/
public void allerFinTourn�e() {
indexCourant = �tapes.size() - 1;
}
/**
* Ajoute une nouvelle �tape � la liste
* @param nouvelleEtape
* @see Etape
*/
public void ajouteEtape(Etape nouvelleEtape) {
�tapes.add(�tapes.size() - 1, nouvelleEtape);
indexCourant = �tapes.size() - 2;
}
}
/**
*
* @see GestionnaireEtape
*/
GestionnaireEtape gestionnaireEtape = new GestionnaireEtape();
JPanel panelCardLayout;
// Chacun de ces panneaux constitueront les "cards".
JPanel panelDebutTournee, panelTrajet, panelFinTournee;
JPanel panelBouton;
JButton btDebutTournee, btTrajet, btFinTournee;
CardLayout cardLayout;
JPanel paneDebutTourneeNord, paneDebutTourneeCentre, paneDebutTourneeSud;
JPanel paneTrajetNord, paneTrajetCentre, paneTrajetSud;
JPanel paneFinTourneeNord, paneFinTourneeCentre, paneFinTourneeSud;
JButton boutonAnnulerFinTournee, boutonDebutTournee, boutonFinTourneeFin, boutonFinTourneeTrajet, boutonSuivantTrajet;
private JLabel textDateDebutTournee;
private JTextField textIndexKmBordDebut;
private JTextField textIndexKmBordFin;
private JTextField textTotKmBord;
private JTextField textIndexKmTxmtDebut;
private JTextField textIndexKmTxmtFin;
private JTextField textTotIndexKmTxmt;
private JTextField textNbPriseDebut;
private JTextField textNbPriseFin;
private JTextField textTotNbPrise;
private JTextField textIndexKmChrgDebut;
private JTextField textIndexKmChrgFin;
private JTextField textTotIndexKmChrg;
private JTextField textChuteDebut;
private JTextField textChuteFin;
private JTextField textTotChute;
private JTextControlKey textTotRecetteJrnl, textTotRecetteTrnee;
private JLabel titres, textDateFinTournee, textDur�eInterruptionTournee, labDateDebutTrnee, labDateFinTournee, labInterrup, labelIndexKmBordD�but, labIndexKmBordS, labIndexKmTxmtE, labIndexKmTxmtS, labNbPriseS, labNbPriseE, labTotNbPrise, labChuteE, labChuteS, labTotChute, labIndexKmChrgE, labIndexKmChrgS, labTotIndexKmChrg, labIndexKmTotE, labIndexKmTotS, labTotRecette;
private JPanel titre, paneFinTournee;
private JLabel labChauffeur, labVoiture;
private JDialog aDialog;// R�f�rence � la boite de dialogue.
static Font titreFont = new Font("Tahoma", 1, 12);
/**
* @see Tournee
*/
Tournee tourn�e = new Tournee();
/**
* La liste des trajets.
* @see Trajet
*/
ArrayList<Trajet> trajets = new ArrayList<Trajet>();
private Date dateDebutTournee = null;
private Date dateFinTournee = null;
private Date dateInterruptionTournee = null;
private JComboBox cmbChauffeur, cmbVoiture;
JButton boutonPrecedentTrajet;
/**
* Panel Trajet
*/
private JTextControlKey textAdresseD�part;
private JTextControlKey textKilom�trageD�part;
private JTextControlKey textAdresseArriv�e;
private JTextControlKey textKilom�trageArriv�e;
private JTextField textPrixTrajet, textPrixSupl�mentaireTrajet;
private JLabel textHeureFinTrajet, textHeureD�butTrajet;
private JTextField txtTotKmTrajet, txtTotPrixTraj, txtTotHrTraj;
private JPanel PaneTotaux = null;
private JLabel labAdrDep, labAdrFin, labKmDep, labKmFin, labHrDep, labHrFin, labPrix, labSupPrix, labTotKmTrajet, labTotHrTrajet;
private JLabel labTotPrix;
protected boolean okFlag;
private JLabel labTitreNouveauTrajet;
public boolean OK_Button() {
return okFlag;
}
/**
* construit les informations du d�but de la tourn�e
*/
private void infoDebutTournee() {
textIndexKmBordDebut = new JTextField();
textIndexKmTxmtDebut = new JTextField();
textIndexKmChrgDebut = new JTextField();
textNbPriseDebut = new JTextField();
textChuteDebut = new JTextField();
cmbChauffeur = new JComboBox(getListeChauffeur());
cmbVoiture = new JComboBox(getListeVoiture());
cmbVoiture.addItemListener(new ItemListener() {
public void itemStateChanged(ItemEvent e) {
initializeKilom�trageD�butTourn�e((VoitureAffichable)e.getItem());
}
});
initializeKilom�trageD�butTourn�e((VoitureAffichable)cmbVoiture.getSelectedItem());
dateDebutTournee = null;
textDateDebutTournee = TaxiGuiUtil.cr�eChampDate(MotsCleProjet.DATE_TIME_FORMAT, new IRetourneDate() {
public void onDate(Date date) {
dateDebutTournee = date;
}
}, DateCalendar.Mode.DATE_ET_HEURE);
}
/**
* initialise le kilom�trage d�but tourn�e avec le dernier kilom�trage de la voiture
* @param voitureAffichable
*/
private void initializeKilom�trageD�butTourn�e(VoitureAffichable voitureAffichable) {
textIndexKmBordDebut.setText(Long.toString(voitureAffichable.getVoiture().getKilometrage()));
}
/**
* construit les informations de la fin de la tourn�e
*/
private void infoFinTournee() {
dateFinTournee = null;
textDateFinTournee = TaxiGuiUtil.cr�eChampDate(MotsCleProjet.DATE_TIME_FORMAT, new IRetourneDate() {
public void onDate(Date date) {
if (date.after(new Date())) {
MessageBox(MainWindow.desktop(), "DATE INVALIDE...");
} else {
dateFinTournee = date;
textDateFinTournee.setText(new SimpleDateFormat(MotsCleProjet.DATE_TIME_FORMAT).format(date));
}
}
}, DateCalendar.Mode.DATE_ET_HEURE);
ImageIcon ani = new ImageIcon(getClass().getClassLoader().getResource("images/logoCalender.jpg"));
textDur�eInterruptionTournee= new JLabel();
textDur�eInterruptionTournee.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textDur�eInterruptionTournee.setIcon(ani);
textDur�eInterruptionTournee.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
DateCalendar fen = new DateCalendar(MainWindow.cadrePrincipal(), DateCalendar.Mode.HEURE_SEULEMENT);
fen.affiche();
if (fen.okFlag) {
Date date = fen.retourDate();
textDur�eInterruptionTournee.setText(new SimpleDateFormat(gui.MotsCleProjet.TIME_FORMAT).format(date));
} else {
textDur�eInterruptionTournee.setText("");
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
textIndexKmBordFin = new JTextField();
textIndexKmTxmtFin = new JTextField();
textIndexKmChrgFin = new JTextField();
textNbPriseFin = new JTextField();
textChuteFin = new JTextField();
getTotalKmBord();
getTotalKmTaxisMetre();
getTotalNombreDePrise();
getTotalKmEnCharge();
getTotalChute();
textTotRecetteJrnl = new JTextControlKey("", 10, IsLong);
textTotRecetteTrnee = new JTextControlKey("", 10, IsLong);
}
/**
*
* @return kilom�trage d�but tourn�e
*/
public String renvoiKmBordDebut() {
return textIndexKmBordDebut.getText();
}
/**
*
* @return kilom�trage fin tourn�e
*/
public String renvoiKmBordFin() {
return textIndexKmBordFin.getText();
}
/**
* calcule le toTal du kilom�trage de bord
* @return total kilom�trage de bord parcouru
*/
private JTextField getTotalKmBord() {
if (textTotKmBord == null) {
textTotKmBord = new JTextField();
textTotKmBord.setFont(titreFont);
textTotKmBord.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textTotKmBord.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
Long kmBordDeb = 0L;
Long kmBordFin= 0L;
Long totalKmBordFin= 0L;
kmBordDeb = Long.parseLong(renvoiKmBordDebut());
kmBordFin = Long.valueOf(renvoiKmBordFin());
totalKmBordFin = kmBordFin.longValue() - kmBordDeb;
textTotKmBord.setText("" +totalKmBordFin);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
textTotKmBord.setPreferredSize(new java.awt.Dimension(70, 20));
textTotKmBord.setEditable(false);
}
return textTotKmBord;
}
/**
* retourne kilom�trage taxim�tre d�but
* @return textIndexKmTxmtDebut
*/
public String renvoiKmTaximetreDebut() {
return textIndexKmTxmtDebut.getText();
}
/**
* Retourne kilom�trage taxim�tre fin tourn�e
* @return textIndexKmTxmtFin
*/
public String renvoiKmTaximetreFin() {
return textIndexKmTxmtFin.getText();
}
/**
* calcule le total du kilom�trage de taxim�tre parcouru
* @return textTotIndexKmTxmt
*/
private JTextField getTotalKmTaxisMetre() {
if (textTotIndexKmTxmt == null) {
textTotIndexKmTxmt = new JTextField();
textTotIndexKmTxmt.setFont(titreFont);
textTotIndexKmTxmt.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textTotIndexKmTxmt.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
Long kmTaximetreDeb = 0L;
Long kmTaximetreFin= 0L;
Long totalKmTaximetre= 0L;
kmTaximetreDeb = Long.parseLong(renvoiKmTaximetreDebut());
kmTaximetreFin = Long.valueOf(renvoiKmTaximetreFin());
totalKmTaximetre = kmTaximetreFin.longValue() - kmTaximetreDeb;
textTotIndexKmTxmt.setText("" +totalKmTaximetre);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
textTotIndexKmTxmt.setPreferredSize(new java.awt.Dimension(70, 20));
textTotIndexKmTxmt.setEditable(false);
}
return textTotIndexKmTxmt;
}
/**
* retourne kilom�trage en charge d�but
* @return textIndexKmChrgDebut
*/
public String renvoiKmEnChargeDebut() {
return textIndexKmChrgDebut.getText();
}
/**
* retourne kilom�trage en charge fin
* @return textIndexKmChrgFin
*/
public String renvoiKmEnChargeFin() {
return textIndexKmChrgFin.getText();
}
/**
* retourne total kilom�trage en charge parcouru
* @return textTotIndexKmChrg
*/
private JTextField getTotalKmEnCharge() {
if (textTotIndexKmChrg == null) {
textTotIndexKmChrg = new JTextField();
textTotIndexKmChrg.setFont(titreFont);
textTotIndexKmChrg.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textTotIndexKmChrg.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
Long kmEnChargeDeb = 0L;
Long kmEnChargeFin= 0L;
Long totalKmEnCharge= 0L;
kmEnChargeDeb = Long.valueOf(renvoiKmEnChargeDebut());
kmEnChargeFin = Long.valueOf(renvoiKmEnChargeFin());
totalKmEnCharge = kmEnChargeFin.longValue() - kmEnChargeDeb;
textTotIndexKmChrg.setText("" +totalKmEnCharge);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
textTotIndexKmChrg.setPreferredSize(new java.awt.Dimension(70, 20));
textTotIndexKmChrg.setEditable(false);
}
return textTotIndexKmChrg;
}
/**
* retourne nombre de prise d�but
* @return textNbPriseDebut
*/
public String renvoiNombreDePriseDebut() {
return textNbPriseDebut.getText();
}
/**
* retourne nombre de prise fin
* @return textNbPriseFin
*/
public String renvoiKmNombreDePriseFin() {
return textNbPriseFin.getText();
}
/**
* retourne total nombre de prise
* @return textTotNbPrise
*/
private JTextField getTotalNombreDePrise() {
Tournee tournee;
if (textTotNbPrise == null) {
textTotNbPrise = new JTextField();
textTotNbPrise.setFont(titreFont);
textTotNbPrise.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textTotNbPrise.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
int nombrePriseDebut = 0;
int nombrePriseFin= 0;
int totalNombrePrise= 0;
nombrePriseDebut = Integer.parseInt(renvoiNombreDePriseDebut());
nombrePriseFin = Integer.parseInt(renvoiKmNombreDePriseFin());
totalNombrePrise = nombrePriseFin - nombrePriseDebut;
textTotNbPrise.setText("" +totalNombrePrise);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
textTotNbPrise.setPreferredSize(new java.awt.Dimension(70, 20));
textTotNbPrise.setEditable(false);
}
return textTotNbPrise;
}
/**
* Retourne chute d�but
* @return textChuteDebut
*/
public String renvoiChuteDebut() {
return textChuteDebut.getText();
}
/**
* Retourne chute fin
* @return textChuteFin
*/
public String renvoiChuteFin() {
return textChuteFin.getText();
}
/**
* Retourne total chute
* @return textTotChute
*/
private JTextField getTotalChute() {
if (textTotChute == null) {
textTotChute = new JTextField();
textTotChute.setFont(titreFont);
textTotChute.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textTotChute.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
BigDecimal chuteDebut = null;
BigDecimal chuteFin= null;
BigDecimal totalChute= null;
chuteDebut = new BigDecimal(renvoiChuteDebut());
chuteFin = new BigDecimal(renvoiChuteFin());
totalChute = chuteFin.subtract(chuteDebut);
textTotChute.setText("" +totalChute);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
textTotChute.setPreferredSize(new java.awt.Dimension(70, 20));
textTotChute.setEditable(false);
}
return textTotChute;
}
/**
* construit les informations du trajet
*/
private void infoTrajet() {
textAdresseD�part = new JTextControlKey("", 50, IsNumString);
textKilom�trageD�part = new JTextControlKey("", 10, IsNum);
textHeureD�butTrajet = TaxiGuiUtil.cr�eChampDate(MotsCleProjet.TIME_FORMAT, null, DateCalendar.Mode.HEURE_SEULEMENT);
textAdresseArriv�e = new JTextControlKey("", 50, IsNumString);
textKilom�trageArriv�e = new JTextControlKey("", 10, IsNum);
textHeureFinTrajet = TaxiGuiUtil.cr�eChampDate(MotsCleProjet.TIME_FORMAT, null, DateCalendar.Mode.HEURE_SEULEMENT);
getTextPrixTraj();
getTxtPrixSuplTrajet();
getTxtTotPrixTraj();
getTxtTotKmTrajet();
}
/**
* Constructeur de la classe TourneeEditionCourse
*/
public TourneeEditionCourse() {
aDialog = new JDialog(MainWindow.cadrePrincipal(), " Tourn�e chauffeur...", true);
infoDebutTournee();
infoFinTournee();
infoTrajet();
}
/**
*
* @return liste de la r�f�rence des chauffeurs
*/
private Vector<ChauffeurAffichable<? extends IChauffeur>> getListeChauffeur() {
Vector<ChauffeurAffichable<? extends IChauffeur>> chauffeurAffichables = new Vector<ChauffeurAffichable<? extends IChauffeur>>();
ArrayList<ReferenceChauffeur> chauffeurs = getReferenceChauffeurDao().findAll();
for (ReferenceChauffeur echauffeur : chauffeurs) {
chauffeurAffichables.add(new ChauffeurAffichable<ReferenceChauffeur>(echauffeur));
}
return chauffeurAffichables;
}
/**
* Cr�e l'instance de de la classe dao qui impl�mente les m�thodes de l'interface IReadOnlyDao
* @return ReferenceChauffeur
*
*/
private IReadOnlyDao<ReferenceChauffeur> getReferenceChauffeurDao() {
try {
return GestionnaireDeStockage.getInstance().getReferenceChauffeurDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
/**
* retourne la liste des voitures
* @return la liste des voitures
*/
private Vector<VoitureAffichable> getListeVoiture() {
Vector<VoitureAffichable> voitureAffichables = new Vector<VoitureAffichable>();
ArrayList<Voiture> voitures = getVoitureDao().findAllActif();//.findAll();
for (Voiture evoiture : voitures) {
voitureAffichables.add(new VoitureAffichable(evoiture));
}
return voitureAffichables;
}
/**
* Cr�e l'instance de de la classe dao qui impl�mente les m�thodes de l'interface IDao<Voiture>
* @return ReferenceChauffeur
*
*/
private IVoitureDao getVoitureDao() {
try {
return GestionnaireDeStockage.getInstance().getVoitureDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
/**
* retourne la somme de deux entiers d�cimaux
* @param a : entierDecimal1
* @param b : entierDecimal2
* @return somme
*/
private BigDecimal calculeSomme(String a, String b) {
BigDecimal somme;
somme = new BigDecimal(a);
somme = somme.add(new BigDecimal(b));
return somme;
}
/**
* retourne textField total kilom�trage trajet
* @return txtTotKmTrajet
*/
private JTextField getTxtTotKmTrajet() {
if (txtTotKmTrajet == null) {
txtTotKmTrajet = new JTextField();
txtTotKmTrajet.setFont(titreFont);
txtTotKmTrajet.setForeground(new java.awt.Color(66, 79, 120));
txtTotKmTrajet.setPreferredSize(new java.awt.Dimension(70, 20));
txtTotKmTrajet.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
Long nb = 0L;
nb = calculeTotKmTrajet(textKilom�trageD�part.ChampsTxt.getText(), textKilom�trageArriv�e.ChampsTxt.getText());
txtTotKmTrajet.setText("" + nb);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
txtTotKmTrajet.setEditable(false);
}
return txtTotKmTrajet;
}
/**
* Retourne texte heure trajet *
*
* @return txtTotHrTraj
*/
private JTextField getTxtTotHrTrajet() {
if (txtTotHrTraj == null) {
txtTotHrTraj = new JTextField();
txtTotHrTraj.setFont(titreFont);
txtTotHrTraj.setForeground(new java.awt.Color(66, 79, 120));
txtTotHrTraj.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
int TailleHrDeb = (textHeureD�butTrajet.toString().length());
int TailleHrFin = (textHeureFinTrajet.toString().length());
int ps = (textHeureD�butTrajet.toString().lastIndexOf(":"));
Integer hrDeb = Integer.parseInt(textHeureD�butTrajet.toString().substring(0, 1));
Integer mmDeb = Integer.parseInt(textHeureD�butTrajet.toString().substring(3, ps)) - 1;
Integer ssDeb = Integer.parseInt(textHeureD�butTrajet.toString().substring(ps + 1), TailleHrDeb);
Integer hrFin = Integer.parseInt(textHeureFinTrajet.toString().substring(0, 1));
Integer mmFin = Integer.parseInt(textHeureFinTrajet.toString().substring(3, ps)) - 1;
Integer ssFin = Integer.parseInt(textHeureFinTrajet.toString().substring(ps + 1), TailleHrFin);
int hrTot = hrFin - hrDeb;
int mmTot = mmFin - mmDeb;
int ssTot = ssFin - ssDeb;
txtTotHrTraj.setText("" + hrTot + mmTot + ssTot);
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
txtTotHrTraj.setPreferredSize(new java.awt.Dimension(70, 20));
}
return txtTotHrTraj;
}
/**
* retourne total prix trajet
*
* @return txtTotPrixTraj
*/
private JTextField getTxtTotPrixTraj() {
if (txtTotPrixTraj == null) {
txtTotPrixTraj = new JTextField();
txtTotPrixTraj.setFont(titreFont);
txtTotPrixTraj.setForeground(Color.blue);
txtTotPrixTraj.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
BigDecimal nb = calculeSomme(textPrixTrajet.getText(), textPrixSupl�mentaireTrajet.getText());
txtTotPrixTraj.setText(nb.toString());
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
txtTotPrixTraj.setPreferredSize(new java.awt.Dimension(70, 20));
txtTotPrixTraj.setEditable(false);
}
return txtTotPrixTraj;
}
/**
* Calcule le total de kilom�trage du trajet
* soustrait le kilom�trage fin trajet moins le kilom�trage d�but
* @param a : kilom�trage d�but
* @param b : kilom�trage fin
*
* @return
*/
private Long calculeTotKmTrajet(String a, String b) {
Long n1=0L, n2=0L, somme=0L;
n1 = Long.parseLong(a);
n2 = Long.parseLong(b);
somme = n2 - n1;
txtTotKmTrajet.setText("" + somme);
return somme;
}
/**
* Retourne textField prix trajet
* @return txtPrixTrajet
*/
private JTextField getTextPrixTraj() {
if (textPrixTrajet == null) {
textPrixTrajet = new JTextField();
textPrixTrajet.setFont(titreFont);
textPrixTrajet.setForeground(new java.awt.Color(66, 79, 120));
textPrixTrajet.getText();
}
return textPrixTrajet;
}
/**
* Retourne textField prix trajet
* @return txtPrixTra
*/
JTextField getTxtPrixSuplTrajet() {
if (textPrixSupl�mentaireTrajet == null) {
textPrixSupl�mentaireTrajet = new JTextField();
textPrixSupl�mentaireTrajet.setFont(titreFont);
textPrixSupl�mentaireTrajet.setForeground(new java.awt.Color(66, 79, 120));
textPrixSupl�mentaireTrajet.getText();
}
return textPrixSupl�mentaireTrajet;
}
/**
* Retourne le panel adresse de d�part
* @return parameterPane
*
*/
private JPanel adrDepPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labAdrDep = new JLabel(" Adresse d�part trajet : *");
labAdrDep.setFont(titreFont);
labAdrDep.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labAdrDep);
// parameterPane.add(new JLabel("Adresse d�part trajet:"));
parameterPane.add(textAdresseD�part.ChampsTxt);
return parameterPane;
}
/**
* Retourne le panel kilom�trage de d�part
* @return parameterPane
*
*/
private JPanel kmDepPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labKmDep = new JLabel(" Km d�part trajet : *");
labKmDep.setFont(titreFont);
labKmDep.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labKmDep);
// parameterPane.add(new JLabel("Km d�part trajet:"));
parameterPane.add(textKilom�trageD�part.ChampsTxt);
return parameterPane;
}
/**
* Retourne le panel heure de d�part
* @return parameterPane
*
*/
private JPanel hrDepPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labHrDep = new JLabel(" Heure d�part trajet : *");
labHrDep.setFont(titreFont);
labHrDep.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labHrDep);
// parameterPane.add(new JLabel("Heure d�part trajet:"));
// parameterPane.add(textHrDep.ChampsTxt);
parameterPane.add(textHeureD�butTrajet);
return parameterPane;
}
/**
* Retourne le panel adresse fin
* @return parameterPane
*
*/
private JPanel adrFinPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labAdrFin = new JLabel(" Adresse fin trajet :*");
labAdrFin.setFont(titreFont);
labAdrFin.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labAdrFin);
parameterPane.add(textAdresseArriv�e.ChampsTxt);
return parameterPane;
}
/**
* Panel km fin trajet
*
* @return
*/
private JPanel kmFinPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labKmFin = new JLabel(" Km Fin trajet :*");
labKmFin.setFont(titreFont);
labKmFin.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labKmFin);
parameterPane.add(textKilom�trageArriv�e.ChampsTxt);
return parameterPane;
}
/**
* retourne le panel heure fin trajet
*
* @return parameterPane
*/
private JPanel hrFinPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labHrFin = new JLabel(" Heure fin trajet : *");
labHrFin.setFont(titreFont);
labHrFin.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labHrFin);
parameterPane.add(textHeureFinTrajet);
return parameterPane;
}
/**
* retourne le panel prix course
*
* @return parameterPane
*/
private JPanel prixCoursePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labPrix = new JLabel(" Prix trajet : *");
labPrix.setFont(titreFont);
labPrix.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labPrix);
parameterPane.add(getTextPrixTraj());
return parameterPane;
}
/**
* retourne le panel suppl�ment course trajet
*
* @return parameterPane
*/
private JPanel supplementCoursePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labSupPrix = new JLabel(" Suppl�ment prix trajet : *");
labSupPrix.setFont(titreFont);
labSupPrix.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labSupPrix);
parameterPane.add(getTxtPrixSuplTrajet());
return parameterPane;
}
/**
* on place les composants des trajets dans le panel centre
*
* @return parameterPane : le panel centre
*/
private JPanel paneCentre() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(Color.WHITE);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setPreferredSize(new Dimension(800, 400));
parameterPane.add(adrDepPane());
parameterPane.add(kmDepPane());
parameterPane.add(hrDepPane());
parameterPane.add(adrFinPane());
parameterPane.add(kmFinPane());
parameterPane.add(hrFinPane());
parameterPane.add(prixCoursePane());
parameterPane.add(supplementCoursePane());
return parameterPane;
}
/**
* retourne le panel total kilom�tragem trajet
* @return parameterPane: panel km trajet
*/
private JPanel totalKmTrajetPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(200, 25));
labTotKmTrajet = new JLabel("Total Km trajet :");
labTotKmTrajet.setFont(titreFont);
labTotKmTrajet.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labTotKmTrajet);
parameterPane.add(getTxtTotKmTrajet());
return parameterPane;
}
/**
* retourne le panel totale heure trajet
*
* @return parameterPane : panel totale heure trajet
*/
private JPanel totalHeureTrajetPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(200, 25));
labTotHrTrajet = new JLabel("Totale heure trajet :");
labTotHrTrajet.setFont(titreFont);
labTotHrTrajet.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labTotHrTrajet);
parameterPane.add(getTxtTotHrTrajet());
return parameterPane;
}
/**
* retourne le panel total prix trajet
* @return
*/
private JPanel totalPrixTrajetPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(200, 25));
labTotPrix = new JLabel("Total prix course:");
labTotPrix.setFont(titreFont);
labTotPrix.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labTotPrix);
parameterPane.add(getTxtTotPrixTraj());
return parameterPane;
}
/**
* retourne le panel totaux
* @return
*/
private JPanel getPanneauTotaux() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setPreferredSize(new Dimension(800, 100));
if (PaneTotaux == null) {
PaneTotaux = new JPanel();
PaneTotaux.setBackground(Color.white);
PaneTotaux.add(totalKmTrajetPane(), null);
PaneTotaux.add(totalHeureTrajetPane(), null);
PaneTotaux.add(totalPrixTrajetPane(), null);
}
return PaneTotaux;
}
/**
* retourne le panel chauffeur
* @return parameterPane: panel chauffeur
*/
private JPanel codeChauffeurPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labChauffeur = new JLabel(" Chauffeur : *");
labChauffeur.setFont(titreFont);
labChauffeur.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labChauffeur);
parameterPane.add(cmbChauffeur);
return parameterPane;
}
/**
* retourne le panel voiture
* @return parameterPane : panel voiture
*/
private JPanel codeVoiturePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labVoiture = new JLabel(" Voiture : *");
labVoiture.setFont(titreFont);
labVoiture.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labVoiture);
parameterPane.add(cmbVoiture);
return parameterPane;
}
/**
* retourne panel date tourn�e
* @return parameterPane : panel date d�but tourn�e
*/
private JPanel dateDebutTrneePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labDateDebutTrnee = new JLabel(" Date d�but service : *");
labDateDebutTrnee.setFont(titreFont);
labDateDebutTrnee.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labDateDebutTrnee);
textDateDebutTournee.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(textDateDebutTournee);
return parameterPane;
}
/**
* Retourne panel date fin service
* @return parameterPane : panel datefin service
*/
private JPanel dateFinServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labDateFinTournee = new JLabel(" Date fin service : *");
labDateFinTournee.setFont(titreFont);
labDateFinTournee.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labDateFinTournee);
parameterPane.add(textDateFinTournee);
return parameterPane;
}
/**
* Retourne panel date interruption service
* @return parameterPane : panel heure interruption service
*/
private JPanel dateInterruptionServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labInterrup = new JLabel(" dur�e interruption service : *");
labInterrup.setFont(titreFont);
labInterrup.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labInterrup);
parameterPane.add(textDur�eInterruptionTournee);
return parameterPane;
}
/**
* Retourne panel index kilom�tratrage de bord d�but service
* @return parameterPane : panel km bord d�but
*/
private JPanel indexKmBordDebServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));;
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labelIndexKmBordD�but = new JLabel(" index km de bord d�but : *");
labelIndexKmBordD�but.setFont(titreFont);
labelIndexKmBordD�but.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labelIndexKmBordD�but);
parameterPane.add(textIndexKmBordDebut);
return parameterPane;
}
/**
* Retourne panel index kilom�trage de bord fin service
* @return parameterPane : km de bord fin service
*/
private JPanel indexKmBordFinServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labIndexKmBordS= new JLabel(" index km de bord fin : *");
labIndexKmBordS.setFont(titreFont);
labIndexKmBordS.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIndexKmBordS);
parameterPane.add(textIndexKmBordFin);
return parameterPane;
}
/**
* Retourne panel total kilom�trage de bord parcouru
* @return parameterPane : total km bord
*/
private JPanel totalKmBordServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 30));
labIndexKmTotE = new JLabel(" Total km bord :");
labIndexKmTotE.setFont(titreFont);
labIndexKmTotE.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIndexKmTotE);
parameterPane.add(getTotalKmBord());
return parameterPane;
}
/**
* Retourne panel index kilom�trage taxim�tre d�but service
* @return parameterPane : index km taxim�re d�but service
*/
private JPanel indexKmTxmtDebServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labIndexKmTxmtE = new JLabel(" Index km taxim�tre d�but : *");
labIndexKmTxmtE.setFont(titreFont);
labIndexKmTxmtE.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIndexKmTxmtE);
parameterPane.add(textIndexKmTxmtDebut);
return parameterPane;
}
/**
* Retourne panel index kilom�trage taxim�tre fin service
* @return parameterPane : km taxim�re fin service
*/
private JPanel indexKmTxmtFinServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labIndexKmTxmtS = new JLabel(" Index km taxim�tre fin : *");
labIndexKmTxmtS.setFont(titreFont);
labIndexKmTxmtS.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIndexKmTxmtS);
parameterPane.add(textIndexKmTxmtFin);
return parameterPane;
}
/**
* Retourne panel total kilom�trage taxim�tre
* @return parameterPane : total km taxim�tre
*/
private JPanel totalKmTxmtServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
// parameterPane.setBackground(Color.white);
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 30));
labIndexKmTotS = new JLabel(" Total km taxim�tre :");
labIndexKmTotS.setFont(titreFont);
labIndexKmTotS.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIndexKmTotS);
parameterPane.add(getTotalKmTaxisMetre());
return parameterPane;
}
/**
* Retourne panel kilom�trage en charge d�but service
* @return km en charge d�but service
*/
private JPanel kmChargeDebServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labIndexKmChrgE = new JLabel(" Km en Charge d�but : *");
labIndexKmChrgE.setFont(titreFont);
labIndexKmChrgE.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIndexKmChrgE);
parameterPane.add(textIndexKmChrgDebut);
return parameterPane;
}
/**
* Retourne panel km en charge fin service
* @return parameterPane : km en charge fin service
*/
private JPanel kmChargeFinServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labIndexKmChrgS = new JLabel(" Km en charge fin : *");
labIndexKmChrgS.setFont(titreFont);
labIndexKmChrgS.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIndexKmChrgS);
parameterPane.add(textIndexKmChrgFin);
return parameterPane;
}
/**
* Retourne panel total km en charge service
* @return parameterPane : total km en charge
*/
private JPanel totKmChargeServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 30));
labTotIndexKmChrg = new JLabel(" Total km en charge :");
labTotIndexKmChrg.setFont(titreFont);
labTotIndexKmChrg.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labTotIndexKmChrg);
parameterPane.add(getTotalKmEnCharge());
return parameterPane;
}
/**
* Retourne panel nombre de prises d�but service
* @return parameterPane : nombre de prises d�but service
*/
private JPanel nombrePriseDebServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labNbPriseE = new JLabel(" Nombre de prises d�but : *");
labNbPriseE.setFont(titreFont);
labNbPriseE.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labNbPriseE);
parameterPane.add(textNbPriseDebut);
return parameterPane;
}
/**
* Retourne panel nombre de prises fin service
* @return parameterPane : nombre de prises fin service
*/
private JPanel nombrePriseFinServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labNbPriseS = new JLabel(" Nombre de prises fin : *");
labNbPriseS.setFont(titreFont);
labNbPriseS.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labNbPriseS);
parameterPane.add(textNbPriseFin);
return parameterPane;
}
/**
* Retourne panel total nombre de prises service
* @return parameterPane : total nombre de prises
*/
private JPanel totNombrePriseServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 30));
labTotNbPrise = new JLabel(" Total nombre de prises :");
labTotNbPrise.setFont(titreFont);
labTotNbPrise.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labTotNbPrise);
parameterPane.add(getTotalNombreDePrise());
return parameterPane;
}
/**
* Retourne panel chute d�but service
* @return parameterPane : chute d�but service
*/
private JPanel chuteDebServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labChuteE = new JLabel(" Chute d�but : *");
labChuteE.setFont(titreFont);
labChuteE.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labChuteE);
parameterPane.add(textChuteDebut);
return parameterPane;
}
/**
* Retourne panel chute fin service
* @return parameterPane : chute fin service
*/
private JPanel chuteFinServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 30));
labChuteS = new JLabel(" Chute fin : *");
labChuteS.setFont(titreFont);
labChuteS.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labChuteS);
parameterPane.add(textChuteFin);
return parameterPane;
}
/**
* Retourne panel total chute service
* @return parameterPane : total chute service
*/
private JPanel totChuteServicePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 30));
labTotChute = new JLabel(" Total chute :");
labTotChute.setFont(titreFont);
labTotChute.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labTotChute);
parameterPane.add(getTotalChute());
return parameterPane;
}
/**
* Retourne panel recette tourn�e
* @return parameterPane : recette de la tourn�e
*/
private JPanel recetteTrneePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 30));
labTotRecette = new JLabel(" Recette tourn�e : *");
labTotRecette.setFont(titreFont);
labTotRecette.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labTotRecette);
parameterPane.add(textTotRecetteJrnl.ChampsTxt);
return parameterPane;
}
/**
* Retourne panel titre de la fen�tre
* @return titre
*/
private JPanel getTitre() {
if (titre == null) {
GridBagConstraints gridBagTitre = new GridBagConstraints();
gridBagTitre.gridx = 0;
gridBagTitre.gridy = 0;
titres = new JLabel();
titres.setText("FEUILLE DE ROUTE ");
titres.setFont(new java.awt.Font("Comic Sans MS", 1, 30));
titres.setForeground(new java.awt.Color(255, 255, 255));
titre = new JPanel();
titre.setLayout(new GridBagLayout());
titre.setPreferredSize(new Dimension(50, 45));
titre.setBackground(new java.awt.Color(66, 79, 120));
titre.add(titres, gridBagTitre);
}
return titre;
}
/**
* Ajoute les composants de la fin de la tourn�e dans le panel fin tourn�e
* @return paneFinTournee
*/
private JPanel getPanelFinTournee() {
paneFinTournee = new JPanel();
paneFinTournee.setPreferredSize(new Dimension(800, 400));
//paneFinTournee.setBorder(BorderFactory.createTitledBorder(" FIN TOURNEE CHAUFFEUR : "));
paneFinTournee.setBackground(new java.awt.Color(170, 207, 249));
paneFinTournee.add(dateFinServicePane());
paneFinTournee.add(dateInterruptionServicePane());
paneFinTournee.add(indexKmBordFinServicePane());
paneFinTournee.add(indexKmTxmtFinServicePane());
paneFinTournee.add(kmChargeFinServicePane());
paneFinTournee.add(nombrePriseFinServicePane());
paneFinTournee.add(chuteFinServicePane());
paneFinTournee.add(totalKmBordServicePane());
paneFinTournee.add(totalKmTxmtServicePane());
paneFinTournee.add(totKmChargeServicePane());
paneFinTournee.add(totNombrePriseServicePane());
paneFinTournee.add(totChuteServicePane());
paneFinTournee.add(recetteTrneePane());
return paneFinTournee;
}
/**
* D�finit la fen�tre et ses composants
*/
public void affiche() {
init();
}
/**
* cr�e le panel qui contiendra les trois cardLayout
*/
private void init() {
JToolBar toolBar = new JToolBar("Outils...");
panelCardLayout = new JPanel();
panelCardLayout.setBackground(new java.awt.Color(170, 207, 249));
panelCardLayout.setLayout(new FlowLayout());
panelCardLayout.setPreferredSize(new Dimension(900, 550));
// cr�e l'objet CardLayout
cardLayout = new CardLayout();
// associe le cardLayout au panel
panelCardLayout.setLayout(cardLayout);
JLabel labTitreDebutTournee = new JLabel("Nouvelle tourn�e");
labTitreDebutTournee.setForeground(new java.awt.Color(66, 79, 120));
labTitreDebutTournee.setFont(new java.awt.Font("Comic Sans MS", 1, 20));
// cr�e les trois panel � montrer
// 1. Panel nouvelle tourn�e
panelDebutTournee = new JPanel();
panelDebutTournee.setPreferredSize(new Dimension(800, 400));
panelDebutTournee.setBackground(new java.awt.Color(170, 207, 249));
panelDebutTournee.add(codeChauffeurPane());
panelDebutTournee.add(codeVoiturePane());
panelDebutTournee.add(dateDebutTrneePane());
panelDebutTournee.add(indexKmBordDebServicePane());
panelDebutTournee.add(indexKmTxmtDebServicePane());
panelDebutTournee.add(kmChargeDebServicePane());
panelDebutTournee.add(nombrePriseDebServicePane());
panelDebutTournee.add(chuteDebServicePane());
paneDebutTourneeNord = new JPanel();
paneDebutTourneeNord.setBackground(new java.awt.Color(255, 255, 255));
paneDebutTourneeNord.add(labTitreDebutTournee);
paneDebutTourneeCentre = new JPanel();
paneDebutTourneeCentre.setBackground(new java.awt.Color(0, 128, 255));
paneDebutTourneeCentre.add(panelDebutTournee);
JPanel panelNouvelleTournee = new JPanel();
panelNouvelleTournee.setBackground(new java.awt.Color(255, 255, 255));
panelNouvelleTournee.add(paneDebutTourneeNord, BorderLayout.NORTH);
panelNouvelleTournee.add(paneDebutTourneeCentre, BorderLayout.CENTER);
// 2. Panel trajets
labTitreNouveauTrajet = new JLabel("Nouveau trajet");
labTitreNouveauTrajet.setBackground(new java.awt.Color(255, 255, 255));
labTitreNouveauTrajet.setForeground(new java.awt.Color(66, 79, 120));
labTitreNouveauTrajet.setFont(new java.awt.Font("Comic Sans MS", 1, 20));
panelTrajet = new JPanel();
panelTrajet.setBackground(new java.awt.Color(0, 64, 128));
panelTrajet.add(paneCentre());
paneTrajetNord = new JPanel();
paneTrajetNord.setBackground(new java.awt.Color(255, 255, 255));
paneTrajetNord.add(labTitreNouveauTrajet);
paneTrajetCentre = new JPanel();
paneTrajetCentre.add(panelTrajet);
JPanel panelNouveauTrajet = new JPanel();
panelNouveauTrajet.setBackground(new java.awt.Color(255, 255, 255));
panelNouveauTrajet.add(paneTrajetNord, BorderLayout.NORTH);
panelNouveauTrajet.add(paneTrajetCentre, BorderLayout.CENTER);
// 3. Panel fin tourn�e
JLabel labTitreFinTournee = new JLabel("Fin tourn�e");
labTitreFinTournee.setForeground(new java.awt.Color(66, 79, 120));
labTitreFinTournee.setFont(new java.awt.Font("Comic Sans MS", 1, 20));
paneFinTourneeNord = new JPanel();
paneFinTourneeNord.setBackground(new java.awt.Color(255, 255, 255));
paneFinTourneeNord.add(labTitreFinTournee);
panelFinTournee = new JPanel();
panelFinTournee.setBackground(new java.awt.Color(255, 128, 64));
panelFinTournee.add(getPanelFinTournee());
paneFinTourneeCentre = new JPanel();
paneFinTourneeCentre.add(panelFinTournee);
JPanel panelFinTournee = new JPanel();
panelFinTournee.setBackground(new java.awt.Color(255, 255, 255));
panelFinTournee.add(paneFinTourneeNord, BorderLayout.NORTH);
panelFinTournee.add(paneFinTourneeCentre, BorderLayout.CENTER);
//panelCardLayout.setBorder(BorderFactory.createTitledBorder(" Infos courses "));
panelCardLayout.add(panelNouvelleTournee, CARD_LAYOUT_NAME_DEBUT_TOURNEE); // blue
panelCardLayout.add(panelNouveauTrajet, CARD_LAYOUT_NAME_TRAJET); // yellow
panelCardLayout.add(panelFinTournee, CARD_LAYOUT_NAME_FIN_TOURNEE); // green
toolBar.setBackground(new Color(66, 79, 120));
// 4. Boutons
toolBar.add(FabricationButton("D�but tourn�e", CMD_DEBUT_TOURNEE, "D�but tourn�e...", this));
toolBar.add(FabricationButton("Pr�cedent", CMD_PRECEDENT, "Pr�cedent...", this));
toolBar.add(FabricationButton("Suivant", CMD_SUIVANT, "Suivant...", this));
toolBar.add(FabricationButton("Fin tourn�e", CMD_FIN_TOURNEE, "Fin tourn�e...", this));
toolBar.add(FabricationButton("Enregistrer", CMD_OK, "OK...", this));
toolBar.add(FabricationButton("ANNULER", CMD_CANCEL, "Annuler...", this));
aDialog.getContentPane().add(getTitre(), BorderLayout.NORTH);
aDialog.getContentPane().add(panelCardLayout, BorderLayout.CENTER);
aDialog.getContentPane().add(toolBar, BorderLayout.PAGE_END);
Point p = MainWindow.cadrePrincipal().getLocation();
aDialog.setLocation((p.x + 250), (p.y +80));
aDialog.pack();
aDialog.setVisible(true);
aDialog.setSize(900, 700);
}
/**
* Affiche les diff�rentes �tapes
*/
private void afficheEtape() {
Etape �tapeCourante = gestionnaireEtape.courante();
cardLayout.show(panelCardLayout, �tapeCourante.getCardLayoutName());
if (�tapeCourante.getCardLayoutName().equals(CARD_LAYOUT_NAME_TRAJET)) {
int indexCourant = gestionnaireEtape.getIndexCourant();
afficheTrajet(trajets.get(indexCourant - 1));
labTitreNouveauTrajet.setText("Nouveau trajet (" + indexCourant + ")");
}
}
/**
* Gestionnaire des �v�nements
*/
public void actionPerformed(ActionEvent event) {
try {
resetErreurDeValidation();
String cmd = event.getActionCommand();
Etape �tapeCourante = gestionnaireEtape.courante();
if (CMD_FIN_TOURNEE.equals(cmd)) {
if (validate(�tapeCourante)) {
stockeEtapeEnM�moire();
gestionnaireEtape.allerFinTourn�e();
afficheEtape();
}
} else if (CMD_DEBUT_TOURNEE.equals(cmd)) {
if (validate(�tapeCourante)) {
stockeEtapeEnM�moire();
gestionnaireEtape.allerDebutTourn�e();
afficheEtape();
}
} else if (CMD_PRECEDENT.equals(cmd)) {
if (validate(�tapeCourante)) {
stockeEtapeEnM�moire();
if (gestionnaireEtape.aUneEtapePr�c�dente()) {
gestionnaireEtape.allerEtapePr�c�dente();
afficheEtape();
}
}
} else if (CMD_SUIVANT.equals(cmd)) {
if (validate(�tapeCourante)) {
stockeEtapeEnM�moire();
if (gestionnaireEtape.aUneEtapeSuivante()) {
gestionnaireEtape.allerEtapeSuivante();
if (gestionnaireEtape.courante().equals(GestionnaireEtape.FIN_TOURNEE)) {
trajets.add(new Trajet());
gestionnaireEtape.ajouteEtape(new Etape(CARD_LAYOUT_NAME_TRAJET));
afficheEtape();
} else {
afficheEtape();
}
}
}
} else if (CMD_OK.equals(cmd)) {
if (validate(�tapeCourante)) {
stockeEtapeEnM�moire();
// ...
okFlag = true;
aDialog.setVisible(false);
}
} else if (CMD_CANCEL.equals(cmd)) {
okFlag = false;
aDialog.setVisible(false);
}
} catch (Exception e) {
TaxiGuiUtil.MessageBox(MainWindow.desktop(), e.getMessage());
}
}
/**
* <p>Stocke les diff�rentes �tapes en m�moire</p>
* <ul>
* <li> Information d�but tourn�e</li>
* <li> Information fin tourn�e</li>
* <li> Information trajets</li>
* </ul
*
*/
private void stockeEtapeEnM�moire() {
Etape �tapeCourante = gestionnaireEtape.courante();
if (�tapeCourante == GestionnaireEtape.DEBUT_TOURNEE) {
// Stocke les informations du d�but de la tourn�e
tourn�e.setChauffeur(((ChauffeurAffichable<ReferenceChauffeur>)cmbChauffeur.getSelectedItem()).getChauffeur());
tourn�e.setVoiture(((VoitureAffichable)cmbVoiture.getSelectedItem()).getVoiture());
try {
tourn�e.setDateDebutService(new SimpleDateFormat(MotsCleProjet.DATE_TIME_FORMAT).parse(textDateDebutTournee.getText()));
} catch (ParseException e) {
throw new RuntimeException(e);
}
tourn�e.setKilometrageVoitureDebutTournee(Long.parseLong(textIndexKmBordDebut.getText()));
tourn�e.setKmTaximetreDebut(Long.parseLong(textIndexKmTxmtDebut.getText()));
tourn�e.setKmEnChargeDebut(Long.parseLong(textIndexKmChrgDebut.getText()));
tourn�e.setNombrePriseDebut(Integer.parseInt(textNbPriseDebut.getText()));
tourn�e.setChuteDebut(new BigDecimal(textChuteDebut.getText()));
} else if (�tapeCourante == GestionnaireEtape.FIN_TOURNEE) {
// Stocke les informations de la fin de la tourn�e
try {
tourn�e.setDateFinService(new SimpleDateFormat(MotsCleProjet.DATE_TIME_FORMAT).parse(textDateFinTournee.getText()));
} catch (ParseException e) {
throw new RuntimeException(e);
}
try {
tourn�e.setDateInterruptionService(new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).parse(textDur�eInterruptionTournee.getText()));
} catch (ParseException e) {
throw new RuntimeException(e);
}
tourn�e.setKilometrageVoitureFinTournee(Long.parseLong(textIndexKmBordFin.getText()));
tourn�e.setKmTaximetreFin(Long.parseLong(textIndexKmTxmtFin.getText()));
tourn�e.setKmEnChargeFin(Long.parseLong(textIndexKmChrgFin.getText()));
tourn�e.setNombrePriseFin(Integer.parseInt(textNbPriseFin.getText()));
tourn�e.setChuteFin(new BigDecimal(textChuteFin.getText()));
tourn�e.setRecetteJournali�re(new BigDecimal(textTotRecetteJrnl.ChampsTxt.getText()));
} else {
// Stocke les informations des trajets
Trajet trajet = trajets.get(gestionnaireEtape.getIndexCourant() - 1);
trajet.setAddresseDepart(textAdresseD�part.ChampsTxt.getText());
trajet.setKilometrageTaximetreDepart(Long.parseLong(textKilom�trageD�part.ChampsTxt.getText()));
trajet.setAddresseArrivee(textAdresseArriv�e.ChampsTxt.getText());
try {
trajet.setHeureDepart(new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).parse(textHeureD�butTrajet.getText()));
trajet.setHeureArrivee(new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).parse(textHeureFinTrajet.getText()));
} catch (ParseException e) {
throw new RuntimeException(e);
}
trajet.setKilometrageTaximetreArrivee(Long.parseLong(textKilom�trageArriv�e.ChampsTxt.getText()));
trajet.setPrixCourse(new BigDecimal(textPrixTrajet.getText()));
trajet.setPrixSupplementaire(new BigDecimal(textPrixSupl�mentaireTrajet.getText()));
trajet.setTournee(tourn�e);
}
}
/**
* <p> si la chaine source est diff�rent de null, il retourne la chaine source </p>
* <p> sinon il retourne la chaine vide
*
* @param source
* @return chaine source ou chaine vide
*/
private String chaineVideSiNull(String source) {
return (source != null ? source : "");
}
/**
* <p>si l'entier d�cimal est vide, il retourne la chaine "0.0"</p>
* <p> sinon il retourne la chaine d�cimale
*
* @param bigDecimal
* @return bidDecimal ou 0.0
*/
private String bigDecimalVideSiNull(BigDecimal bigDecimal) {
if (bigDecimal == null) {
return "0.0";
} else {
return bigDecimal.toString();
}
}
/**
* affiche le trajet
* @param trajet
*/
private void afficheTrajet(Trajet trajet) {
textAdresseD�part.ChampsTxt.setText(chaineVideSiNull(trajet.getAddresseDepart()));
textKilom�trageD�part.ChampsTxt.setText(Long.toString(trajet.getKilometrageTaximetreDebut()));
textHeureD�butTrajet.setText(trajet.getHeureDepart() == null ? "" : new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).format(trajet.getHeureDepart()));
textAdresseArriv�e.ChampsTxt.setText(chaineVideSiNull(trajet.getAddresseArrivee()));
textKilom�trageArriv�e.ChampsTxt.setText(Long.toString(trajet.getKilometrageTaximetreFin()));
textHeureFinTrajet.setText(trajet.getHeureArrivee() == null ? "" : new SimpleDateFormat( MotsCleProjet.TIME_FORMAT).format(trajet.getHeureArrivee()));
textPrixTrajet.setText(bigDecimalVideSiNull(trajet.getPrixCourse()));
textPrixSupl�mentaireTrajet.setText(bigDecimalVideSiNull(trajet.getPrixSupplementaire()));
}
/**
* remet � blanc les champs
*
*/
private void resetErreurDeValidation() {
for (JComponent composant : Arrays.<JComponent> asList(
textAdresseD�part.ChampsTxt,
textKilom�trageD�part.ChampsTxt,
textHeureD�butTrajet,
textAdresseArriv�e.ChampsTxt,
textKilom�trageArriv�e.ChampsTxt,
textHeureFinTrajet,
textPrixTrajet,
textPrixSupl�mentaireTrajet,
cmbChauffeur,
cmbVoiture,
textDateDebutTournee,
textIndexKmBordDebut,
textIndexKmTxmtDebut,
textIndexKmChrgDebut,
textNbPriseDebut,
textChuteDebut,
textDateFinTournee,
textDur�eInterruptionTournee,
textIndexKmBordFin,
textIndexKmTxmtFin,
textIndexKmChrgFin,
textNbPriseFin,
textChuteFin
)) {
composant.setBackground(Color.WHITE);
composant.setToolTipText("");
}
}
/**
* <p>Valide l'�tape courante</p>
* <p> il peut s'agir de soit de l'�tape d�but tourn�e, trajets ou fin de tourn�e
*
* @param �tape
* @return
*/
private boolean validate(Etape �tape) {
Collection<ErreurDeValidation> erreursDeValidation = new ArrayList<ErreurDeValidation>();
if (�tape.getCardLayoutName().equals(CARD_LAYOUT_NAME_DEBUT_TOURNEE)) {
erreursDeValidation.addAll(validateDebutTourn�e());
} else if (�tape.getCardLayoutName().equals(CARD_LAYOUT_NAME_FIN_TOURNEE)) {
erreursDeValidation.addAll(validateFinTourn�e());
} else {
erreursDeValidation.addAll(validateTrajet());
}
if (!erreursDeValidation.isEmpty()) {
StringBuffer erreurAffichee = new StringBuffer();
for (ErreurDeValidation erreurDeValidation : erreursDeValidation) {
erreurAffichee.append(erreurDeValidation.getMessageErreur());
erreurAffichee.append("\n");
erreurDeValidation.getComposant().setBackground(Color.RED);
erreurDeValidation.getComposant().setToolTipText(erreurDeValidation.getMessageErreur());
}
TaxiGuiUtil.MessageBox(MainWindow.desktop(), erreurAffichee.toString(), "ERREUR");
return false;
}
return true;
}
/**
* <p> Valide les champs du trajet effectu�
* @return la liste des erreurs de validation
*/
private Collection<ErreurDeValidation> validateTrajet() {
Collection<ErreurDeValidation> erreurDeValidations = new ArrayList<ErreurDeValidation>();
if (textAdresseD�part.ChampsTxt.getText().trim().equals("")) {
erreurDeValidations.add(new ErreurDeValidation(textAdresseD�part.ChampsTxt, "le champ 'addresse d�part' est vide"));
}
try {
Long.parseLong(textKilom�trageD�part.ChampsTxt.getText().trim());
} catch (NumberFormatException e) {
erreurDeValidations.add(new ErreurDeValidation(textKilom�trageD�part.ChampsTxt, "le champ 'kilom�trage d�part' doit �tre un num�rique'"));
}
if (textAdresseArriv�e.ChampsTxt.getText().trim().equals("")) {
erreurDeValidations.add(new ErreurDeValidation(textAdresseArriv�e.ChampsTxt, "le champ 'addresse arriv�e' est vide"));
}
Long kmFinTrajet= Long.parseLong(textKilom�trageArriv�e.ChampsTxt.getText());
Long kmDepTrajet = Long.parseLong(textKilom�trageD�part.ChampsTxt.getText());
Long kmBordDeb = Long.parseLong(textIndexKmBordDebut.getText());
if ( kmDepTrajet > kmFinTrajet){
erreurDeValidations.add(new ErreurDeValidation(textKilom�trageArriv�e.ChampsTxt, "le champ 'kilom�trage arriv�e' doit sup�rieur au km d�but'"));
}
if ( kmDepTrajet < kmBordDeb){
erreurDeValidations.add(new ErreurDeValidation(textKilom�trageD�part.ChampsTxt, "le champ 'kilom�trage d�part trajet ' doit > = au km de bord d�but'"));
}
try {
Long.parseLong(textKilom�trageArriv�e.ChampsTxt.getText().trim());
} catch (NumberFormatException e) {
erreurDeValidations.add(new ErreurDeValidation(textKilom�trageArriv�e.ChampsTxt, "le champ 'kilom�trage arriv�e' doit �tre un num�rique'"));
}
Date heureFinTrajet=null;
try {
heureFinTrajet =new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).parse(textHeureFinTrajet.getText());
} catch (ParseException e1) {
e1.printStackTrace();
erreurDeValidations.add(new ErreurDeValidation(textHeureD�butTrajet, "Date/Heure de d�but du trajet' invalide"));
}
Date heureDebutTraj=null;
try {
heureDebutTraj =new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).parse(textHeureD�butTrajet.getText());
} catch (ParseException e1) {
e1.printStackTrace();
erreurDeValidations.add(new ErreurDeValidation(textHeureFinTrajet, "Date/Heure de fin du trajet' invalide"));
}
if (heureDebutTraj.after(heureFinTrajet)){
erreurDeValidations.add(new ErreurDeValidation(textHeureFinTrajet, "Date/Heure de fin du trajet' doit �tre apr�s date/heure d�but"));
}
if (textPrixTrajet.getText().trim().equals("")) {
erreurDeValidations.add(new ErreurDeValidation(textPrixTrajet, "le champ 'prix du trajet' est obligatoire."));
}
try {
new BigDecimal(textPrixTrajet.getText());
} catch (NumberFormatException e) {
erreurDeValidations.add(new ErreurDeValidation(textPrixTrajet, "le champ 'prix du trajet' ne contient pas un nombre valide."));
}
if (!textPrixSupl�mentaireTrajet.getText().trim().equals("")) {
try {
new BigDecimal(textPrixSupl�mentaireTrajet.getText());
} catch (NumberFormatException e) {
erreurDeValidations.add(new ErreurDeValidation(textPrixSupl�mentaireTrajet, "le champ 'prix suppl�mentaire' ne contient pas un nombre valide."));
}
}
return erreurDeValidations;
}
/**
* <p> Valide les champs de la fin de la tourn�e
* @return la liste des erreurs de validation
*/
private Collection<ErreurDeValidation> validateFinTourn�e() {
//return new ArrayList<ErreurDeValidation>();
Collection<ErreurDeValidation> erreursDeValidation = new ArrayList<ErreurDeValidation>();
try {
new SimpleDateFormat(MotsCleProjet.DATE_TIME_FORMAT).parse(textDateFinTournee.getText());
} catch (ParseException e) {
erreursDeValidation.add(new ErreurDeValidation(textDateFinTournee, "la date de fin de tourn�e est invalide"));
}
try {
new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).parse(textDur�eInterruptionTournee.getText());
} catch (ParseException e) {
erreursDeValidation.add(new ErreurDeValidation(textDur�eInterruptionTournee, "la dur�e interruption de tourn�e est invalide"));
}
if (textIndexKmBordFin.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmBordFin, "le kilom�trage tableau de bord de fin de tourn�e est obligatoire"));
}
try {
Long.parseLong(textIndexKmBordFin.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmBordDebut, "le kilom�trage tableau de bord de fin de tourn�e n'est pas un nombre"));
}
Long kmBordDeb = Long.parseLong(textIndexKmBordDebut.getText());
Long kmBordFin = Long.parseLong(textIndexKmBordFin.getText());
if (kmBordFin.longValue() < kmBordDeb ) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmBordFin, "km de bord fin doit �tre sup�rieur ou �gal au Km bord d�but "));
}
if (textIndexKmTxmtFin.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmTxmtFin, "le kilom�trage taxim�tre de fin de tourn�e est obligatoire"));
}
try {
Long.parseLong(textIndexKmTxmtFin.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmTxmtFin, "le kilom�trage taxim�tre de fin de tourn�e n'est pas un nombre"));
}
Long kmTaxiMtDeb = Long.parseLong(textIndexKmTxmtDebut.getText());
Long kmTaxiMtFin = Long.parseLong(textIndexKmTxmtFin.getText());
if ((kmTaxiMtFin.longValue() < kmBordDeb) && (kmTaxiMtFin.longValue() < kmTaxiMtDeb)) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmTxmtFin, "km taxim�tre fin doit �tre >= au Km bord d�but et doit �tre >= km taxim�tre d�but "));
}
if (textIndexKmChrgFin.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgFin, "le kilom�trage en charge de fin de tourn�e est obligatoire"));
}
try {
Long.parseLong(textIndexKmChrgFin.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgFin, "le kilom�trage en charge de fin de tourn�e n'est pas un nombre"));
}
Long kmChargeDeb = Long.parseLong(textIndexKmChrgDebut.getText());
Long kmChargeFin = Long.parseLong(textIndexKmChrgFin.getText());
if (kmChargeFin.longValue() > kmTaxiMtFin){
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgFin, "km en charge fin doit �tre < = km taxim�tre fin "));
}
if (kmChargeFin.longValue() < kmChargeDeb) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgFin, "km en charge fin doit �tre >= au Km en charge d�but "));
}
if (textNbPriseFin.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textNbPriseFin, "Le nombre de prise en charge de Fin de tourn�e est obligatoire"));
}
try {
Integer.parseInt(textNbPriseFin.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textNbPriseFin, "Le nombre de prise en charge de Fin de tourn�e n'est pas un nombre"));
}
Integer nbrePriseDeb = Integer.parseInt(textNbPriseDebut.getText());
Integer nbrePriseFin = Integer.parseInt(textNbPriseFin.getText());
if (nbrePriseFin.intValue() < nbrePriseDeb) {
erreursDeValidation.add(new ErreurDeValidation(textNbPriseFin, "Le nombre de prise fin doit �tre >= au nombre de prise d�but "));
}
if (textChuteFin.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textChuteFin, "L'index de chute de bord de Fin de tourn�e est obligatoire"));
}
try {
BigDecimal chuteFin = new BigDecimal(textChuteFin.getText());
if (chuteFin.compareTo(tourn�e.getChuteDebut()) < 0 ) {
erreursDeValidation.add(new ErreurDeValidation(textChuteFin, "La chute de fin doit �tre sup�rieure � la chute de d�but"));
}
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textChuteFin, "L'index de chute de Fin de tourn�e n'est pas un nombre"));
}
return erreursDeValidation;
}
/**
* Valide les champs du d�but de la tourn�e
* @return la liste des erreurs de validation
*/
private Collection<ErreurDeValidation> validateDebutTourn�e() {
Collection<ErreurDeValidation> erreursDeValidation = new ArrayList<ErreurDeValidation>();
if (cmbChauffeur.getSelectedIndex() == -1) {
erreursDeValidation.add(new ErreurDeValidation(cmbChauffeur, "le chauffeur est obligatoire"));
}
if (cmbVoiture.getSelectedIndex() == -1) {
erreursDeValidation.add(new ErreurDeValidation(cmbVoiture, "la voiture est obligatoire"));
}
try {
new SimpleDateFormat(MotsCleProjet.DATE_TIME_FORMAT).parse(textDateDebutTournee.getText());
} catch (ParseException e) {
erreursDeValidation.add(new ErreurDeValidation(textDateDebutTournee, "la date de d�but de tourn�e est invalide"));
}
if (textIndexKmBordDebut.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textDateDebutTournee, "le kilom�trage tableau de bord de d�but de tourn�e est obligatoire"));
}
try {
Long.parseLong(textIndexKmBordDebut.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmBordDebut, "le kilom�trage tableau de bord de d�but de tourn�e n'est pas un nombre"));
}
if (textIndexKmTxmtDebut.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmTxmtDebut, "le kilom�trage taxim�tre de d�but de tourn�e est obligatoire"));
}
try {
Long.parseLong(textIndexKmTxmtDebut.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmTxmtDebut, "le kilom�trage taxim�tre de d�but de tourn�e n'est pas un nombre"));
}
Long kmBord = Long.parseLong(textIndexKmBordDebut.getText());
Long kmTaxiMtDeb = Long.parseLong(textIndexKmTxmtDebut.getText());
if (kmTaxiMtDeb.longValue() > kmBord ) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmTxmtDebut, "km taxim�tre de d�but doit �tre inf�rieur ou �gal au Km bord d�but "));
}
if (textIndexKmChrgDebut.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgDebut, "le kilom�trage en charge de d�but de tourn�e est obligatoire"));
}
try {
Long.parseLong(textIndexKmChrgDebut.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgDebut, "le kilom�trage en charge de d�but de tourn�e n'est pas un nombre"));
}
Long kmCharge = Long.parseLong(textIndexKmChrgDebut.getText());
if (kmCharge.longValue() > kmBord) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgDebut, "km charge d�but doit �tre inf�rieur ou �gal au Km bord d�but "));
}
if (kmCharge.longValue() > kmTaxiMtDeb) {
erreursDeValidation.add(new ErreurDeValidation(textIndexKmChrgDebut, "km charge d�but doit �tre < = km taxim�tre d�but"));
}
if (textNbPriseDebut.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textNbPriseDebut, "Le nombre de prise en charge de d�but de tourn�e est obligatoire"));
}
try {
Integer.parseInt(textNbPriseDebut.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textNbPriseDebut, "Le nombre de prise en charge de d�but de tourn�e n'est pas un nombre"));
}
if (textChuteDebut.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textChuteDebut, "L'index de chute de bord de d�but de tourn�e est obligatoire"));
}
try {
new BigDecimal(textChuteDebut.getText());
} catch (NumberFormatException e) {
erreursDeValidation.add(new ErreurDeValidation(textChuteDebut, "L'index de chute de d�but de tourn�e n'est pas un nombre"));
}
return erreursDeValidation;
}
public Tournee renvoiTournee() {
return tourn�e;
}
/**
* <p> Retourne la liste des trajet
* @return trajets
*/
public Collection<Trajet> renvoieTrajets() {
return trajets;
}
/**
* initialise les donn�es de la tourn�e
* @param tournee
*/
public void initializeDonnee(Tournee tournee) {
this.tourn�e = tournee;
this.trajets = new ArrayList<Trajet>(tournee.getTrajets());
this.gestionnaireEtape.initialise(tournee);
//cmbChauffeur.setSelectedItem(tournee.getChauffeur().getId());
selectionneChauffeur(tourn�e.getChauffeur());
//cmbVoiture.setSelectedItem(tournee.getVoiture().getId());
selectionneVoiture(tourn�e.getVoiture());
dateDebutTournee = tournee.getDateDebutService();
textDateDebutTournee.setText(new SimpleDateFormat(MotsCleProjet.DATE_TIME_FORMAT).format(dateDebutTournee));
textIndexKmBordDebut.setText(Long.toString(tournee.getKilometrageVoitureDebutTournee()));
textIndexKmTxmtDebut.setText(Long.toString(tournee.getKmTaximetreDebut()));
textIndexKmChrgDebut.setText(Long.toString(tournee.getKmEnChargeDebut()));
textNbPriseDebut.setText(Integer.toString(tournee.getNombrePriseDebut()));
textChuteDebut.setText(BigDecimalFormatter.format(tournee.getChuteDebut()));
dateFinTournee = tournee.getDateFinService();
textDateFinTournee.setText(new SimpleDateFormat(MotsCleProjet.DATE_TIME_FORMAT).format(dateFinTournee));
dateInterruptionTournee = tournee.getDateInterruptionService();
textDur�eInterruptionTournee.setText(new SimpleDateFormat(MotsCleProjet.TIME_FORMAT).format(dateInterruptionTournee));
textIndexKmBordFin.setText(Long.toString(tournee.getKilometrageVoitureFinTournee()));
textIndexKmTxmtFin.setText(Long.toString(tournee.getKmTaximetreFin()));
textIndexKmChrgFin.setText(Long.toString(tournee.getKmEnChargeFin()));
textNbPriseFin.setText(Integer.toString(tournee.getNombrePriseFin()));
textChuteFin.setText(BigDecimalFormatter.format(tournee.getChuteFin()));
textTotKmBord.setText(Long.toString(tournee.getKilometrageParcouruVoiture()));
textTotIndexKmTxmt.setText(Long.toString(tournee.getIndexKilometrageParcouruTaximetre()));
textTotNbPrise.setText(Integer.toString(tournee.getTotalNombreDePrise()));
textTotIndexKmChrg.setText(Long.toString(tournee.getKilometrageParcouruEnCharge()));
textTotChute.setText(BigDecimalFormatter.format(tournee.getTotalChute()));
textTotRecetteJrnl.ChampsTxt.setText(BigDecimalFormatter.format(tournee.getRecetteJournali�re()));
}
private void selectionneChauffeur(ReferenceChauffeur referenceChauffeur) {
int nbChauffeur = cmbChauffeur.getItemCount();
for (int i = 0; i<nbChauffeur; i++) {
if (((ChauffeurAffichable)cmbChauffeur.getItemAt(i)).getChauffeur().getId().equals(referenceChauffeur.getId())) {
cmbChauffeur.setSelectedIndex(i);
break;
}
}
}
private void selectionneVoiture(Voiture voiture) {
int nbVoiture = cmbVoiture.getItemCount();
for (int i = 0; i<nbVoiture; i++) {
if (((VoitureAffichable)cmbVoiture.getItemAt(i)).getVoiture().getId().equals(voiture.getId())) {
cmbVoiture.setSelectedIndex(i);
break;
}
}
}
}