package gui.voiture.ficheentretien;
import static gui.MotsCleProjet.*;
import static gui.util.TaxiGuiUtil.FabricationButton;
import static gui.util.TaxiGuiUtil.MessageBox;
import gui.*;
import gui.commun.etat.EtatAffichable;
import gui.commun.unite.TypeUniteAffichable;
import gui.util.TaxiGuiUtil;
import gui.voiture.gestionvoiture.VoitureAffichable;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.swing.*;
import modele.commun.TypeUnite;
import modele.voiture.FicheEntretien;
import modele.voiture.TypeEntretien;
import modele.voiture.Voiture;
import dao.GestionnaireDeStockage;
import dao.IDao;
class FicheEntretienEditionFenetre implements ActionListener{
private JDialog aDialog;//R�f�rence � la boite de dialogue.
private JTextControlKey textKmDernierEntret;
private JTextControlKey textKmPrevenirAnte;
private JTextControlKey textCoutEntret;
// private JTextField textProchainKmEntret;
private JComboBox cmbVoiture;
private JComboBox cmbIdTypeEntret;
//private JTextControlKey textdateDernierEntret, textdateProchainEntret;
private JLabel labKmDernierEntret, labLibelle,
labKmPrevenirAnte, labCoutEntret, labIdVoit, labIdTypeFicheEntret, titres,
textKmProchainEntret, textdateDernierEntret, textdateProchainEntret,
labDtProchainEntret, labDtDernierEntret, labUnite, labNbreUnite, labProchainKmEntret;
private JPanel titre;
static Font titreFont=new Font("Tahoma", 1, 12);
private JComboBox cmbUnite;
private JTextControlKey textNbreUnite, textLibelle;
Date current = new Date(new GregorianCalendar().getTime().getTime());
ImageIcon ani;
private FicheEntretien ficheEntretien = new FicheEntretien();
private JPanel getTitre() {
if (titre == null) {
GridBagConstraints gridBagTitre = new GridBagConstraints();
gridBagTitre.gridx = 0;
gridBagTitre.gridy = 0;
titres = new JLabel();
titres.setText("Formulaire fiche entretien");
titres.setFont(new java.awt.Font("Comic Sans MS", 1,20));
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;
}
private boolean okFlag;
protected boolean OK_Button() {
return okFlag;
}
/**
* Constructeur
*/
public FicheEntretienEditionFenetre() {
aDialog = new JDialog(MainWindow.cadrePrincipal(), "...FICHE ENTRETIEN VOITURE...", true);
cmbVoiture = new JComboBox(getListeVoiture());
textLibelle = new JTextControlKey("",30,IsNumString);
ani = new ImageIcon(getClass().getClassLoader().getResource("images/logoCalender.jpg"));
textdateDernierEntret= new JLabel();
textdateDernierEntret.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textdateDernierEntret.setIcon(ani);
textdateDernierEntret.setFont(titreFont);
textdateDernierEntret.setForeground(new java.awt.Color(66, 79, 120));
textdateDernierEntret.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
DateCalendar fen = new DateCalendar(MainWindow.cadrePrincipal(), 0, DateCalendar.Mode.DATE_SEULEMENT);
fen.affiche();
if (fen.okFlag) {
Date dateEntretien = fen.retourDate();
if (dateEntretien.after(new Date())) {
MessageBox(MainWindow.desktop(), "DATE INVALIDE...");
} else {
ficheEntretien.setDateDernierEntretien(dateEntretien);
textdateDernierEntret.setText(new SimpleDateFormat(MotsCleProjet.DATE_FORMAT).format(dateEntretien));
Calendar calendar = Calendar.getInstance();
calendar.setTime(dateEntretien);
calendar.add(Calendar.MONTH, 6);
textdateProchainEntret.setText(new SimpleDateFormat(MotsCleProjet.DATE_FORMAT).format(calendar.getTime()));
}
} else {
textdateDernierEntret.setText(DATE_ERREUR_TEXTE);
MessageBox(MainWindow.desktop(), "DATE INVALIDE...");
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
ani = new ImageIcon(getClass().getClassLoader().getResource("images/logoCalender.jpg"));
textdateProchainEntret= new JLabel();
textdateProchainEntret.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textdateProchainEntret.setIcon(ani);
textdateProchainEntret.setFont(titreFont);
textdateProchainEntret.setForeground(new java.awt.Color(66, 79, 120));
cmbIdTypeEntret = new JComboBox(getListeTypeEntretien());
textKmDernierEntret = new JTextControlKey("",10,IsNum);
textKmProchainEntret= new JLabel();
textKmProchainEntret.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textKmProchainEntret.setEnabled(false);
textKmProchainEntret.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
long kmProchain = calculeKmProchainEntretien( textKmDernierEntret.ChampsTxt.getText(), 15000);
textKmProchainEntret.setText(kmProchain+"");
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
textKmPrevenirAnte = new JTextControlKey("",10,IsNum);
textCoutEntret = new JTextControlKey("",10,IsDecimal);
textNbreUnite = new JTextControlKey("",10,IsNum);
cmbUnite = new JComboBox(getListeTypeUnite());
okFlag = false;
}
long calculeKmProchainEntretien(String kmDernier, long indicatif){
long som= Long.parseLong(kmDernier)+indicatif;
return som;
}
/**
* initialise les donn�es
* @param ficheEntretien
*/
public void initializeDonnee(FicheEntretien ficheEntretien) {
this.ficheEntretien = ficheEntretien;
selectionneVoiture(ficheEntretien.getVoiture());
textLibelle.ChampsTxt.setText(ficheEntretien.getLibelle());
textdateDernierEntret.setText(new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).format(ficheEntretien.getDateDernierEntretien()));
textdateProchainEntret.setText(new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).format(ficheEntretien.getDateProchaineEntretien()));
selectionneTypeEntretien(ficheEntretien.getTypeEntretien());
textKmDernierEntret.ChampsTxt.setText(ficheEntretien.getKmDernierEntretien()+"");
//long kmProchain= calculeKmProchainEntretien(ficheEntretien.getKmDernierEntretien(), 15000);
textKmProchainEntret.setText(ficheEntretien.getKmProchainEntretien()+"");
textKmPrevenirAnte.ChampsTxt.setText(ficheEntretien.getKmPrevenirAvantEntretien()+"");
textCoutEntret.ChampsTxt.setText(ficheEntretien.getCoutEntretien()+"");
textNbreUnite.ChampsTxt.setText(ficheEntretien.getNbUnite()+"");
selectionneTypeUnite(ficheEntretien.getTypeUnite());
}
/**
* Selectionn
* @param typeEntretien
*/
private void selectionneTypeEntretien(TypeEntretien typeEntretien) {
int nbTypeEntretien = cmbIdTypeEntret.getItemCount();
for (int i = 0; i<nbTypeEntretien; i++) {
if (((TypeEntretienAffichable)cmbIdTypeEntret.getItemAt(i)).getTypeEntretien().getId().equals(typeEntretien.getId())) {
cmbIdTypeEntret.setSelectedIndex(i);
break;
}
}
}
/**
* Selectionne voiture
* @param voiture
*/
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;
}
}
}
/**
* Selectionne Etat
* @param etat
*/
private void selectionneTypeUnite(TypeUnite typeUnite) {
int nbTypeUnite = cmbUnite.getItemCount();
for (int i = 0; i<nbTypeUnite; i++) {
if (((TypeUniteAffichable)cmbUnite.getItemAt(i)).getTypeUnite().getId().equals(typeUnite.getId())) {
cmbUnite.setSelectedIndex(i);
break;
}
}
}
/**
* renvoie FicheEntretien
* @return
*/
public FicheEntretien renvoiFicheEntretien() {
return ficheEntretien;
}
/**
* Panel cde voiture
* @return
*/
private JPanel codeVoitPane()
{
JPanel parameterPane = new JPanel(false);
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labIdVoit = new JLabel(" Voiture :");
labIdVoit.setFont(titreFont);
labIdVoit.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add( labIdVoit);
parameterPane.add(cmbVoiture);
return parameterPane;
}
private JPanel creeLibellePane()
{
JPanel parameterPane = new JPanel(false);
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labLibelle = new JLabel(" Description entretien :");
labLibelle.setFont(titreFont);
labLibelle.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labLibelle);
parameterPane.add(textLibelle.ChampsTxt);
return parameterPane;
}
/**
* Panel date dernier entretien
* @return
*/
private JPanel dateDernierEntretVoitPane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labDtDernierEntret = new JLabel(" Date dernier entretien :");
labDtDernierEntret.setFont(titreFont);
labDtDernierEntret.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labDtDernierEntret);
parameterPane.add(textdateDernierEntret);
return parameterPane;
}
/**
* Panel date prochain entretien
* @return
*/
private JPanel dateProchainEntretVoitPane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labDtProchainEntret = new JLabel(" Date prochain entretien :");
labDtProchainEntret.setFont(titreFont);
labDtProchainEntret.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labDtProchainEntret);
parameterPane.add(textdateProchainEntret);
return parameterPane;
}
/**
* Panel cde type entretien
* @return
*/
private JPanel codeTypeEntretVoitPane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labIdTypeFicheEntret = new JLabel(" Type entretien :");
labIdTypeFicheEntret.setFont(titreFont);
labIdTypeFicheEntret.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add( labIdTypeFicheEntret);
parameterPane.add(cmbIdTypeEntret);
return parameterPane;
}
/**
* Panel km dernier entretien voiture
* @return
*/
private JPanel kmDernierEntretVoitPane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labKmDernierEntret = new JLabel(" Dernier km entretien :");
labKmDernierEntret.setFont(titreFont);
labKmDernierEntret.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labKmDernierEntret);
parameterPane.add(textKmDernierEntret.ChampsTxt);
return parameterPane;
}
/**
* Panel km prochain entretien
* @return
*/
private JPanel prochainKmEntretienPane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labProchainKmEntret = new JLabel(" Prochain Km Entretien :");
labProchainKmEntret.setFont(titreFont);
labProchainKmEntret.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labProchainKmEntret);
parameterPane.add(textKmProchainEntret);
return parameterPane;
}
/**
* Panel prevenir km prochain entretien
* @return
*/
private JPanel kmPrevenirAvantEntretienPane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labKmPrevenirAnte = new JLabel(" Pr�venir km avant entretien :");
labKmPrevenirAnte.setFont(titreFont);
labKmPrevenirAnte.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labKmPrevenirAnte);
parameterPane.add(textKmPrevenirAnte.ChampsTxt);
return parameterPane;
}
/**
* Panel co�t entretien voiture
* @return
*/
private JPanel coutEntretienVoitPane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
// parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labCoutEntret = new JLabel(" Co�t entretien :");
labCoutEntret.setFont(titreFont);
labCoutEntret.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labCoutEntret);
parameterPane.add(textCoutEntret.ChampsTxt);
return parameterPane;
}
/**
* Panel nombre nombre Unite
* @return
*/
private JPanel nombreUnitePane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labNbreUnite = new JLabel(" Nombre unit� : *");
labNbreUnite.setFont(titreFont);
labNbreUnite.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labNbreUnite);
parameterPane.add(textNbreUnite.ChampsTxt);
return parameterPane;
}
/**
* Panel code TypeUnite
* @return
*/
private JPanel codeUnitePane()
{
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(Color.white);
//parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(600, 25));
labUnite = new JLabel(" Type unit� : *");
labUnite.setFont(titreFont);
labUnite.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labUnite);
parameterPane.add(cmbUnite);
return parameterPane;
}
/**
* D�finit la fen�tre et ses composants
*/
public void affiche() {
JToolBar toolBar = new JToolBar("Outils...");
JPanel parameterPane = new JPanel(false);
//parameterPane.setBackground(new Color(170, 207, 249));
parameterPane.setLayout(new FlowLayout());
parameterPane.setPreferredSize(new Dimension(900, 400));
//parameterPane.setBorder(BorderFactory.createTitledBorder(" "));
parameterPane.add(codeVoitPane());
parameterPane.add(creeLibellePane());
parameterPane.add(dateDernierEntretVoitPane());
parameterPane.add(dateProchainEntretVoitPane());
parameterPane.add(codeTypeEntretVoitPane());
parameterPane.add(kmDernierEntretVoitPane());
parameterPane.add(prochainKmEntretienPane());
parameterPane.add(kmPrevenirAvantEntretienPane());
parameterPane.add(coutEntretienVoitPane());
parameterPane.add(nombreUnitePane());
parameterPane.add(codeUnitePane());
aDialog.getContentPane().add(getTitre(), BorderLayout.NORTH);
aDialog.getContentPane().add(parameterPane, BorderLayout.CENTER);
aDialog.getContentPane().add(toolBar, BorderLayout.PAGE_END);
toolBar.setBackground(new Color(66, 79, 120));
toolBar.add(FabricationButton("OK", CMD_OK, "OK...", this));
toolBar.add(FabricationButton("ANNULER", CMD_CANCEL, "Annuler...", this));
Point p = MainWindow.cadrePrincipal().getLocation();
aDialog.setLocation((p.x + 450), (p.y + 200));
aDialog.pack();
aDialog.setVisible(true);
}
/**
* Gestionnaire des �v�nements
*/
public void actionPerformed(ActionEvent e) {
String cmd = e.getActionCommand();
if (CMD_OK.equals(cmd)) {
ficheEntretien.setVoiture(getVoitureSelectionne());
Date dateDernierEntret;
try {
dateDernierEntret = new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).parse(textdateDernierEntret.getText());
ficheEntretien.setDateDernierEntretien(dateDernierEntret);
}
catch (ParseException e1) {
TaxiGuiUtil.MessageBox(MainWindow.desktop(), "Le format de date est invalide : attendu " + gui.MotsCleProjet.DATE_FORMAT, "Erreur");
}
//textdateDernierEntret.setText(new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).format(ficheEntretien.getDateDernierEntretien()));
Date dateProchainEntret;
try {
dateProchainEntret = new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).parse(textdateProchainEntret.getText());
ficheEntretien.setDateProchaineEntretien(dateProchainEntret);
}
catch (ParseException e1) {
TaxiGuiUtil.MessageBox(MainWindow.desktop(), "Le format de date est invalide : attendu " + gui.MotsCleProjet.DATE_FORMAT, "Erreur");
}
//textdateProchainEntret.setText(new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).format(ficheEntretien.getDateProchaineEntretien()));
ficheEntretien.setTypeEntretien(getTypeEntretienSelectionne());
ficheEntretien.setKmDernierEntretien(Long.parseLong(textKmDernierEntret.ChampsTxt.getText()));
ficheEntretien.setKmProchainEntretien(Long.parseLong(textKmProchainEntret.getText()));
ficheEntretien.setKmPrevenirAvantEntretien(Long.parseLong(textKmPrevenirAnte.ChampsTxt.getText()));
ficheEntretien.setCoutEntretien(Double.parseDouble(textCoutEntret.ChampsTxt.getText()));
ficheEntretien.setNbUnite(Integer.parseInt(textCoutEntret.ChampsTxt.getText()));
ficheEntretien.setTypeUnite(getTypeUniteSelectionne());
okFlag = true;
aDialog.setVisible(false);
}
else if (CMD_CANCEL.equals(cmd)) {
okFlag = false;
aDialog.setVisible(false);
}
}
/**
* Semlectionne typeEntretien
* @return
*/
private TypeEntretien getTypeEntretienSelectionne() {
return ((TypeEntretienAffichable)cmbIdTypeEntret.getSelectedItem()).getTypeEntretien();
}
/**
* Selectionne la voiture
* @return
*/
private Voiture getVoitureSelectionne() {
return ((VoitureAffichable)cmbVoiture.getSelectedItem()).getVoiture();
}
/**
* Selectionne TypeUnite
* @return
*/
private TypeUnite getTypeUniteSelectionne() {
return ((TypeUniteAffichable)cmbUnite.getSelectedItem()).getTypeUnite();
}
private Vector<TypeEntretienAffichable> getListeTypeEntretien() {
Vector<TypeEntretienAffichable> typeEntretienAffichables = new Vector<TypeEntretienAffichable>();
ArrayList<TypeEntretien> typeEntretien = getTypeEntretienDao().findAll();
for (TypeEntretien etypeEntretien : typeEntretien) {
typeEntretienAffichables.add(new TypeEntretienAffichable(etypeEntretien));
}
return typeEntretienAffichables;
}
/**
* retourne l'instance de la classe MysqlTypeEntretienDao pour pouvoir
* utiliser les m�thodes de l'interface IDao
* @return IDao<TypeEntretien>
*/
private IDao<TypeEntretien> getTypeEntretienDao() {
try {
return GestionnaireDeStockage.getInstance().getTypeEntretienDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
private Vector<VoitureAffichable> getListeVoiture() {
Vector<VoitureAffichable> voitureAffichables = new Vector<VoitureAffichable>();
ArrayList<Voiture> voiture = getVoitureDao().findAll();
for (Voiture evoiture : voiture) {
voitureAffichables.add(new VoitureAffichable(evoiture));
}
return voitureAffichables;
}
/**
* retourne l'instance de la classe MysqlVoitureDao pour pouvoir
* utiliser les m�thodes de l'interface IDao
* @return IDao<Voiture>
*/
private IDao<Voiture> 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);
}
}
private Vector<TypeUniteAffichable> getListeTypeUnite() {
Vector<TypeUniteAffichable> typeUniteAffichables = new Vector<TypeUniteAffichable>();
ArrayList<TypeUnite> typeUnite = getTypeUniteDao().findAll();
for (TypeUnite etypeUnite : typeUnite) {
typeUniteAffichables.add(new TypeUniteAffichable(etypeUnite));
}
return typeUniteAffichables;
}
/**
* retourne l'instance de la classe MysqlTypeUniteDao pour pouvoir
* utiliser les m�thodes de l'interface IDao
* @return IDao<TypeUnite>
*/
private IDao<TypeUnite> getTypeUniteDao() {
try {
return GestionnaireDeStockage.getInstance().getTypeUniteDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}