package gui.commun.localite;
import static gui.MotsCleProjet.CMD_CANCEL;
import static gui.MotsCleProjet.CMD_OK;
import static gui.MotsCleProjet.IsNum;
import static gui.MotsCleProjet.IsNumString;
import static gui.util.TaxiGuiUtil.FabricationButton;
import gui.*;
import gui.commun.ville.VilleAffichable;
import gui.util.ErreurDeValidation;
import gui.util.TaxiGuiUtil;
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.chauffeur.Localite;
import modele.chauffeur.Ville;
import dao.GestionnaireDeStockage;
import dao.IDao;
/**
* class LocaliteEditionFenetre
* cr�e l'interface utilisateur qui permet d'ajouter et modifier un enregistrement
* @author Kasandra
*
*/
public class LocaliteEditionFenetre implements ActionListener {
protected boolean okFlag;
public boolean OK_Button() {
return okFlag;
}
private JDialog aDialog;// R�f�rence � la boite de dialogue.
private JTextControlKey textCp, textLocalite;
private JLabel titres, labCp, labLocalite, labIdVille;
private JComboBox cmbVille;
private JPanel titre;
private Localite localite= new Localite();
static Font titreFont = new Font("Tahoma", 1, 12);
/**
* Constructeur
*/
public LocaliteEditionFenetre() {
aDialog = new JDialog(MainWindow.cadrePrincipal(), " Localit�..", true);
textCp = new JTextControlKey("", 5, IsNum);
textLocalite = new JTextControlKey("", 30, IsNumString);
cmbVille = new JComboBox(getListeVille());
cmbVille.setForeground(new java.awt.Color(66, 79, 120));
okFlag = false;
}
/**
* Initialise les donn�es
* @param localite
*/
public void initializeDonnee(Localite localite) {
this.localite = localite;
textCp.ChampsTxt.setText(""+localite.getCp());
textLocalite.ChampsTxt.setText(localite.getCommune());
selectionneVille(localite.getVille());
}
/**
* Selectionne la ville
* @param ville
*/
private void selectionneVille(Ville ville) {
int nbLocalite = cmbVille.getItemCount();
for (int i = 0; i<nbLocalite; i++) {
if (((VilleAffichable)cmbVille.getItemAt(i)).getVille().equals(ville)) {
cmbVille.setSelectedIndex(i);
break;
}
}
}
/**
*
* @return localite
*/
public Localite renvoiLocalite() {
return localite;
}
/**
* Cr�e panel code postal
*
* @return panel code postal
*/
private JPanel creeCodePostalPane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 25));
labCp = new JLabel(" Code postal : *");
labCp.setFont(titreFont);
labCp.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labCp);
parameterPane.add(textCp.ChampsTxt);
return parameterPane;
}
/**
* Cr�e panel nom localit�
*
* @return panel nom localit�
*/
private JPanel creeNomLocalitePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 25));
labLocalite = new JLabel(" Localit� : *");
labLocalite.setFont(titreFont);
labLocalite.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labLocalite);
parameterPane.add(textLocalite.ChampsTxt);
return parameterPane;
}
/**
* Cr�e panel ville
* @return panel ville
*/
private JPanel creeVillePane() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(300, 25));
labIdVille = new JLabel(" Ville : *");
labIdVille.setFont(titreFont);
labIdVille.setForeground(new java.awt.Color(66, 79, 120));
parameterPane.add(labIdVille);
parameterPane.add(cmbVille);
return parameterPane;
}
/**
*
* @return titre du formulaire
*/
private JPanel getTitre() {
if (titre == null) {
GridBagConstraints gridBagTitre = new GridBagConstraints();
gridBagTitre.gridx = 0;
gridBagTitre.gridy = 0;
titres = new JLabel();
titres.setText(" Fiche Localit�");
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, ses composants et l'affiche
*/
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(500, 200));
parameterPane.setBorder(BorderFactory.createTitledBorder(" "));
parameterPane.add(creeCodePostalPane());
parameterPane.add(creeNomLocalitePane());
parameterPane.add(creeVillePane());
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) {
try {
// Restaure la couleur de fonds par d�faut.
for (JComponent composant : Arrays.asList(textCp.ChampsTxt, textLocalite.ChampsTxt)) {
composant.setBackground(Color.WHITE);
composant.setToolTipText("");
}
String cmd = e.getActionCommand();
if (CMD_OK.equals(cmd)) {
Vector<ErreurDeValidation> erreursDeValidation = new Vector<ErreurDeValidation>();
if (textCp.ChampsTxt.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textCp.ChampsTxt, "le champ 'CP' est obligatoire."));
}
try {
localite.setCp(Integer.parseInt(textCp.ChampsTxt.getText()));
} catch (NumberFormatException ee) {
erreursDeValidation.add(new ErreurDeValidation(textCp.ChampsTxt, "le champ 'CP' ne contient pas un nombre valide."));
}
if (textLocalite.ChampsTxt.getText().trim().equals("")) {
erreursDeValidation.add(new ErreurDeValidation(textLocalite.ChampsTxt, "le champ 'localit�' 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{
localite.setCommune(textLocalite.ChampsTxt.getText());
localite.setVille(getVilleSelectionne());
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");
}
}
/**
* Renvoie ville selectionn�e
* @return
*/
private Ville getVilleSelectionne() {
return ((VilleAffichable)cmbVille.getSelectedItem()).getVille();
}
private Vector<VilleAffichable> getListeVille() {
Vector<VilleAffichable> villeAffichables = new Vector<VilleAffichable>();
ArrayList<Ville> ville = getVilleDao().findAll();
for (Ville eville : ville) {
villeAffichables.add(new VilleAffichable(eville));
}
return villeAffichables;
}
private IDao<Ville> getVilleDao() {
try {
return GestionnaireDeStockage.getInstance().getVilleDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}