package gui.gestionCompteUser;
import static gui.MotsCleProjet.CMD_CANCEL;
import static gui.MotsCleProjet.CMD_OK;
import static gui.util.TaxiGuiUtil.FabricationButton;
import gui.MainWindow;
import gui.MotsCleProjet;
import gui.PrjException;
import gui.util.TaxiGuiUtil;
import java.awt.BorderLayout;
import java.awt.Color;
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.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.JComboBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JToolBar;
import modele.compteUser.AttributionRoleUser;
import modele.compteUser.CompteUser;
import modele.compteUser.RoleUser;
import dao.GestionnaireDeStockage;
import dao.ICompteUserDao;
import dao.IDao;
/**
* class AttributionRoleUserEditionFenetre
* cr�e l'interface utilisateur qui permet d'ajouter un enregistrement
* @author Kasandra
*
*/
class AttributionRoleUserEditionFenetre implements ActionListener {
private boolean modeEdition = false;
private JDialog aDialog;// R�f�rence � la boite de dialogue.
private JComboBox cmbCompteUser, cmbRoleUser;
private JPanel titre;
private JLabel titres, labCompteUser, labRoleUser, labAttributionRoleUser;
private AttributionRoleUser attributionRoleUser = new AttributionRoleUser();
private static Font titreFont = new Font("Tahoma", 1, 12);
private JLabel textdateAttributionRoleUser;
protected boolean okFlag;
public boolean OK_Button() {
return okFlag;
}
/**
* Constructeur de la classe AttributionRoleUserEditionFenetre
*/
public AttributionRoleUserEditionFenetre() {
aDialog = new JDialog(MainWindow.cadrePrincipal(), " Attribution des r�les des utilisateurs...", true);
cmbCompteUser = new JComboBox(getListeCompteUser());
cmbCompteUser.setFont(titreFont);
cmbCompteUser.setForeground(new java.awt.Color(66, 79, 120));
cmbRoleUser = new JComboBox(getListeRoleUser());
cmbRoleUser.setFont(titreFont);
cmbRoleUser.setForeground(new java.awt.Color(66, 79, 120));
textdateAttributionRoleUser = new JLabel();
textdateAttributionRoleUser.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
textdateAttributionRoleUser.setFont(titreFont);
textdateAttributionRoleUser.setForeground(new java.awt.Color(66, 79, 120));
textdateAttributionRoleUser.setText(new SimpleDateFormat(MotsCleProjet.DATE_FORMAT).format(new Date()));
textdateAttributionRoleUser.setEnabled(false);
okFlag = false;
}
/**
* Initialise r�le utilisateur attribu�
* @param attributionRoleUser
*/
void initializeDonnee(AttributionRoleUser attributionRoleUser) {
modeEdition = true;
this.attributionRoleUser = attributionRoleUser;
selectionneCompteUser(attributionRoleUser.getCompteUser());
selectionneRoleUser(attributionRoleUser.getRoleUser());
textdateAttributionRoleUser.setText(new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).format(attributionRoleUser.getDateAttributionRoleUser()));
}
/**
* Selectionne CompteUser
* @param compteUser
*/
private void selectionneCompteUser(CompteUser compteUser) {
int nbCompteUser = cmbCompteUser.getItemCount();
for (int i = 0; i<nbCompteUser; i++) {
if (((CompteUserAffichable)cmbCompteUser.getItemAt(i)).getCompteUser().getId().equals(compteUser.getId())) {
cmbCompteUser.setSelectedIndex(i);
break;
}
}
}
/**
* Selectionne RoleUser
* @param roleUser
*/
private void selectionneRoleUser(RoleUser roleUser) {
int nbRoleUser = cmbRoleUser.getItemCount();
for (int i = 0; i<nbRoleUser; i++) {
if (((RoleUserAffichable)cmbRoleUser.getItemAt(i)).getRoleUser().getId().equals(roleUser.getId())) {
cmbRoleUser.setSelectedIndex(i);
break;
}
}
}
/**
*
* @return r�le utilisateur attribu�
*/
AttributionRoleUser renvoiAttributionRoleUser() {
return attributionRoleUser;
}
/**
* Cr�e panel date attribution r�le
* @return
*/
private JPanel creeDateAttributionRoleUser() {
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(450, 25));
labAttributionRoleUser = new JLabel(" Date attribution r�le utilisateur : ");
labAttributionRoleUser.setForeground(new java.awt.Color(66, 79, 120));
labAttributionRoleUser.setFont(titreFont);
parameterPane.add(labAttributionRoleUser);
parameterPane.add(textdateAttributionRoleUser);
return parameterPane;
}
/**
* Cr�e panel compte utilisateur
* @return panel compte utilisateur
*/
private JPanel creeCompteUserPane(boolean editable)
{
JPanel parameterPane = new JPanel(false);
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setLayout(new GridLayout());
parameterPane.setPreferredSize(new Dimension(450, 25));
labCompteUser = new JLabel("Compte utilisateur : *");
labCompteUser.setForeground(new java.awt.Color(66, 79, 120));
labCompteUser.setFont(titreFont);
parameterPane.add(labCompteUser);
parameterPane.add(cmbCompteUser);
cmbCompteUser.setEnabled(editable);
return parameterPane;
}
/**
* Cr�e panel r�le utilisateur
* @return
*/
private JPanel creeRoleUserPane(boolean editable)
{
JPanel parameterPane = new JPanel(false);
parameterPane.setLayout(new GridLayout());
parameterPane.setBackground(new java.awt.Color(170, 207, 249));
parameterPane.setPreferredSize(new Dimension(450, 25));
labRoleUser = new JLabel(" R�le utilisateur : *");
labRoleUser.setForeground(new java.awt.Color(66, 79, 120));
labRoleUser.setFont(titreFont);
parameterPane.add(labRoleUser);
parameterPane.add(cmbRoleUser);
cmbRoleUser.setEnabled(editable);
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 attribution r�le utilisateur");
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(creeCompteUserPane(!modeEdition));
parameterPane.add(creeRoleUserPane(!modeEdition));
parameterPane.add(creeDateAttributionRoleUser());
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) {
String cmd = e.getActionCommand();
if (CMD_OK.equals(cmd)) {
attributionRoleUser.setCompteUser(getCompteUserSelectionne());
attributionRoleUser.setRoleUser(getRoleUserSelectionne());
Date dateAttribution;
try {
dateAttribution = new SimpleDateFormat(gui.MotsCleProjet.DATE_FORMAT).parse(textdateAttributionRoleUser.getText());
attributionRoleUser.setDateAttributionRoleUser(dateAttribution);
} catch (ParseException e1) {
TaxiGuiUtil.MessageBox(MainWindow.desktop(), "Le format de date est invalide : attendu " + gui.MotsCleProjet.DATE_FORMAT, "Erreur");
}
okFlag = true;
aDialog.setVisible(false);
} else if (CMD_CANCEL.equals(cmd)) {
okFlag = false;
aDialog.setVisible(false);
}
}
/**
* Selectionne le compte user et renvoie ce compte
* @return
*/
private CompteUser getCompteUserSelectionne() {
return ((CompteUserAffichable)cmbCompteUser.getSelectedItem()).getCompteUser();
}
/**
* Selectionne le role user et renvoie ce r�le
* @return
*/
private RoleUser getRoleUserSelectionne() {
return ((RoleUserAffichable)cmbRoleUser.getSelectedItem()).getRoleUser();
}
/*
private Vector<CompteUserAffichable> getListeCompteUser() {
Vector<CompteUserAffichable> compteUserAffichables = new Vector<CompteUserAffichable>();
ArrayList<CompteUser> compteUser = getCompteUserDao().findAllActif();//findAll();
for (CompteUser ecompteUser : compteUser) {
compteUserAffichables.add(new CompteUserAffichable(ecompteUser));
}
return compteUserAffichables;
}
private ICompteUserDao getCompteUserDao() {
try {
return GestionnaireDeStockage.getInstance().getCompteUserDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
*/
private Vector<CompteUserAffichable> getListeCompteUser() {
Vector<CompteUserAffichable> compteUserAffichables = new Vector<CompteUserAffichable>();
ArrayList<CompteUser> compteUser = getCompteUserDao().findAllActif();//.findAll();
for (CompteUser ecompteUser : compteUser) {
compteUserAffichables.add(new CompteUserAffichable(ecompteUser));
}
return compteUserAffichables;
}
private ICompteUserDao getCompteUserDao() {
try {
return GestionnaireDeStockage.getInstance().getCompteUserDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
private Vector<RoleUserAffichable> getListeRoleUser() {
Vector<RoleUserAffichable> roleUserAffichables = new Vector<RoleUserAffichable>();
ArrayList<RoleUser> roleUser = getRoleUserDao().findAll();
for (RoleUser eroleUser : roleUser) {
roleUserAffichables.add(new RoleUserAffichable(eroleUser));
}
return roleUserAffichables;
}
private IDao<RoleUser> getRoleUserDao() {
try {
return GestionnaireDeStockage.getInstance().getRoleUserDao();
} catch (ClassNotFoundException e) {
throw new RuntimeException(e);
} catch (InstantiationException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}