package gui.voiture.modele;
import static gui.MotsCleProjet.CMD_CANCEL;
import static gui.MotsCleProjet.CMD_OK;
import static gui.MotsCleProjet.IsNumString;
import static gui.util.TaxiGuiUtil.FabricationButton;
import gui.*;
import gui.util.ErreurDeValidation;
import gui.util.TaxiGuiUtil;
import gui.voiture.marque.MarqueVoitureAffichable;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Vector;
import javax.swing.*;
import modele.voiture.MarqueVoiture;
import modele.voiture.ModeleVoiture;
import dao.GestionnaireDeStockage;
import dao.IDao;
/**
* Mod�le Voiture
* Cr�e interface graphique pour ajouter, modifier un enregistrement
* @author Kasandra
*
*/
public class ModeleVoitureEditionFenetre implements ActionListener {
protected boolean okFlag;
public boolean OK_Button() {
return okFlag;
}
private JDialog aDialog;// R�f�rence � la boite de dialogue.
private JTextControlKey textLibelle, textSerieMarq;
static Font titreFont = new Font("Tahoma", 1, 12);
private JLabel labLib, titres, labIdMarq;
JPanel titre = null;
private JComboBox cmbMarque;
private ModeleVoiture modeleVoiture = new ModeleVoiture();
/**
* Constructeur
*/
public ModeleVoitureEditionFenetre() {
aDialog = new JDialog(MainWindow.cadrePrincipal(), " Modele Voiture...", true);
cmbMarque = new JComboBox(getListeMarqueVoiture());
cmbMarque.setForeground(new java.awt.Color(66, 79, 120));
textLibelle = new JTextControlKey("", 20, IsNumString);
textLibelle.ChampsTxt.setForeground(new java.awt.Color(66, 79, 120));
okFlag = false;
}
/**
* initialise compte utilisateur
* @param pays
*/
public void initializeDonnee(ModeleVoiture modeleVoiture) {
this.modeleVoiture = modeleVoiture;
selectionneMarqueVoiture(modeleVoiture.getMarqueVoiture());
textLibelle.ChampsTxt.setText(modeleVoiture.getNomModele());
}
/**
* s�lectionne marque voiture
* @param marqueVoiture
*/
private void selectionneMarqueVoiture(MarqueVoiture marqueVoiture) {
int nbMarqueVoit = cmbMarque.getItemCount();
for (int i = 0; i<nbMarqueVoit; i++) {
if (((MarqueVoitureAffichable)cmbMarque.getItemAt(i)).getMarqueVoiture().getId().equals(marqueVoiture.getId())) {
cmbMarque.setSelectedIndex(i);
break;
}
}
}
/**
*
* @return modeleVoiture
*/
public ModeleVoiture renvoiModeleVoiture() {
return modeleVoiture;
}
/**
* cr�e panel libell�
*
* @return panel mod�le voiture
*/
private JPanel creeLibellePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(400, 25));
labLib = new JLabel(" Mod�le voiture : *");
labLib.setFont(titreFont);
labLib.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labLib);
parameterPane.add(textLibelle.ChampsTxt);
return parameterPane;
}
/**
* Cr�e marque voiture
* @return panel marque voiture
*/
private JPanel creeMarqueVoiturePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(400, 25));
labIdMarq = new JLabel(" Marque voiture :");
labIdMarq.setFont(titreFont);
labIdMarq.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIdMarq);
parameterPane.add(cmbMarque);
return parameterPane;
}
/**
* Renvoie titre formulaire
*
* @return
*/
private JPanel getTitre() {
if (titre == null) {
GridBagConstraints gridBagTitre = new GridBagConstraints();
gridBagTitre.gridx = 0;
gridBagTitre.gridy = 0;
titres = new JLabel();
titres.setText(" Fiche mod�le voiture");
titres.setFont(new java.awt.Font("Comic Sans MS", 1, 20));
titres.setForeground(new Color(255, 255, 255));
titre = new JPanel();
titre.setLayout(new GridBagLayout());
titre.setPreferredSize(new Dimension(50, 45));
titre.setBackground(new Color(66, 79, 120));
titre.add(titres, gridBagTitre);
}
return titre;
}
/**
* D�finit la fen�tre et ses composants
*/
public void affiche() throws PrjException {
try {
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(500, 200));
parameterPane.setBorder(BorderFactory.createTitledBorder(" "));
parameterPane.add(creeMarqueVoiturePane());
parameterPane.add(creeLibellePane());
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);
} catch (NullPointerException exc) {
throw new PrjException(exc.getMessage());
}
}
/**
* Gestionnaire des �v�nements
*/
public void actionPerformed(ActionEvent e) {
try {
// Restaure la couleur de fonds par d�faut.
for (JComponent composant : Arrays.asList(textLibelle.ChampsTxt)) {
composant.setBackground(Color.WHITE);
composant.setToolTipText("");
}
String cmd = e.getActionCommand();
if (CMD_OK.equals(cmd)) {
Vector<ErreurDeValidation> erreursDeValidation = new Vector<ErreurDeValidation>();
if (textLibelle.ChampsTxt.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textLibelle.ChampsTxt, "le champ 'mod�le voiture' est obligatoire."));
}
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;
}
else{
modeleVoiture.setMarqueVoiture(getMarqueVoitureSelectionne());
modeleVoiture.setNomModele(textLibelle.ChampsTxt.getText());
okFlag = true;
aDialog.setVisible(false);
}
}else if (CMD_CANCEL.equals(cmd)) {
okFlag = false;
aDialog.setVisible(false);
}
}catch(Exception ex) {
TaxiGuiUtil.MessageBox(MainWindow.desktop(), "Erreur syst�me : " + ex.getMessage(), "Erreur syst�me");
}
}
/**
*
* @return marque voiture s�lectionn�e
*/
private MarqueVoiture getMarqueVoitureSelectionne() {
return (( MarqueVoitureAffichable)cmbMarque.getSelectedItem()).getMarqueVoiture();
}
/**
*
* @return liste de marque de voiture
*/
private Vector< MarqueVoitureAffichable> getListeMarqueVoiture() {
Vector< MarqueVoitureAffichable> MarqueVoitureAffichables = new Vector<MarqueVoitureAffichable>();
ArrayList< MarqueVoiture> marqueVoiture = getMarqueVoitureDao().findAll();
for (MarqueVoiture emarque : marqueVoiture) {
MarqueVoitureAffichables.add(new MarqueVoitureAffichable(emarque));
}
return MarqueVoitureAffichables;
}
/**
* retourne l'instance de la classe MysqlMarqueVoitureDao pour pouvoir
* utiliser les m�thodes de l'interface IDao
* @return IDao<MarqueVoiture>
*/
private IDao<MarqueVoiture> getMarqueVoitureDao() {
try {
return GestionnaireDeStockage.getInstance().getMarqueVoitureDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}