package gui.util;
import static gui.MotsCleProjet.APP_TITRE;
import static gui.MotsCleProjet.CMD_QUIT;
import static gui.MotsCleProjet.CMD_ADD;
import static gui.MotsCleProjet.CMD_IMPORT;
import static gui.MotsCleProjet.CMD_MOD;
import static gui.MotsCleProjet.CMD_SUP;
import static gui.MotsCleProjet.CMD_PAIE_FACT;
import static gui.MotsCleProjet.DATE_ERREUR_TEXTE;
import static gui.util.TaxiGuiUtil.MessageBox;
import gui.DateCalendar;
import gui.MainWindow;
import gui.MotsCleProjet;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDesktopPane;
import javax.swing.JInternalFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JToolBar;
import javax.swing.KeyStroke;
import util.Periode;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* <p>TaxiGuiUtil : c'est une classe utilitaire.</p>
* <p> Elle est utilis�e dans d'autres classe, elle fabrique le bouton de Toolbar,
* elle cr�e un mod�le de date, elle teste la validit� d'une date, elle cr�e la boite de Dialogue, elle cr�e le toolbar et internalFrame
* @author Kasandra
*
*/
public class TaxiGuiUtil {
public static JMenuItem createMenuItem(String leLabel, String laCommande,
int laCle, ActionListener actionListener) {
JMenuItem menuItem = new JMenuItem(leLabel);
menuItem.setMnemonic(laCle);
menuItem.setAccelerator(KeyStroke.getKeyStroke(laCle,
ActionEvent.ALT_MASK));
menuItem.setActionCommand(laCommande);
menuItem.addActionListener(actionListener);
return menuItem;
}
/**
* retourne le bouton
* @param altText
* @param laCommande
* @param aideText
* @param actionListener
* @return button
*/
public static JButton FabricationButton(String altText, String laCommande,
String aideText, ActionListener actionListener) {
JButton button = new JButton();
button.setToolTipText(aideText);
button.setFont(new java.awt.Font("Garamond", 1, 14));
button.setForeground(new java.awt.Color(66, 79, 120));
if (!laCommande.equals(MotsCleProjet.CMD_NOACTION)) {
button.setActionCommand(laCommande);
button.addActionListener(actionListener);
}
button.setText(altText);
return button;
}
/**
* Cr�e le label date
* @param dateFormat
* @param dateMinimum
* @param dateMaximum
*
* @return dateLabel
*/
public static JLabel creeDateLabel(final String dateFormat, final DateCalendar.Mode mode, final Date dateMinimum, final Date dateMaximum) {
final JLabel dateLabel = new JLabel();
dateLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(66, 79, 120), 2));
dateLabel.setIcon(new ImageIcon(TaxiGuiUtil.class.getClassLoader().getResource("images/logoCalender.jpg")));
dateLabel.setFont(new Font("Tahoma", 1, 12));
dateLabel.setForeground(new java.awt.Color(66, 79, 120));
dateLabel.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
DateCalendar fen = new DateCalendar(MainWindow.cadrePrincipal(), mode);
fen.affiche();
if (fen.okFlag) {
Date date = fen.retourDate();
if (dateValide(date)) {
dateLabel.setText(new SimpleDateFormat(dateFormat).format(date));
} else {
dateLabel.setText(DATE_ERREUR_TEXTE);
MessageBox(MainWindow.desktop(), "DATE INVALIDE...");
}
} else {
dateLabel.setText(DATE_ERREUR_TEXTE);
MessageBox(MainWindow.desktop(), "DATE INVALIDE...");
}
}
/**
* V�rifie la validit� d'une date
* @param date
*
* @return dateValide
*/
private boolean dateValide(Date date) {
boolean dateValide = new Periode(dateMinimum,dateMaximum).inclue(date);
return dateValide;
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
});
return dateLabel;
}
/**
* D�finit la boite de dialog
*
* @param desktop
* @param leMess
*/
public static void MessageBox(JDesktopPane desktop, String leMess) {
JOptionPane.showMessageDialog(desktop, leMess, "ATTENTION ...",
JOptionPane.ERROR_MESSAGE);
}
/**
* D�finit la boite de dialog
* @param desktop
* @param leMess
* @param leTitre
*/
public static void MessageBox(JDesktopPane desktop, String leMess,
String leTitre) {
JOptionPane.showMessageDialog(desktop, leMess, leTitre,
JOptionPane.ERROR_MESSAGE);
}
public static JToolBar CreationToolBarPaieFacture(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Ajouter", CMD_ADD, "Ajouter...", actionListener));
toolBar.add(FabricationButton("Modifier", CMD_MOD, "Modifier...", actionListener));
toolBar.add(FabricationButton("Supprimer", CMD_SUP, "Supprimer...", actionListener));
toolBar.add(FabricationButton("Payer facture", CMD_PAIE_FACT, "Payer facture...", actionListener));
toolBar.addSeparator();
return toolBar;
}
/**
* Cr�e le toolbar commun pour chaque fen�tre
* @param actionListener
* @return
*/
public static JToolBar CreationToolBar(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Ajouter", CMD_ADD, "Ajouter...", actionListener));
toolBar.add(FabricationButton("Modifier", CMD_MOD, "Modifier...", actionListener));
toolBar.add(FabricationButton("Supprimer", CMD_SUP, "Supprimer...", actionListener));
//toolBar.add(FabricationButton("Importer", CMD_IMPORT, "Importer...", actionListener));
toolBar.addSeparator();
return toolBar;
}
public static JToolBar CreationToolBarAjoutSup(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Ajouter", CMD_ADD, "Ajouter...", actionListener));
toolBar.add(FabricationButton("Supprimer", CMD_SUP, "Supprimer...", actionListener));
//toolBar.add(FabricationButton("Importer", CMD_IMPORT, "Importer...", actionListener));
toolBar.addSeparator();
return toolBar;
}
/**
* Cr�e le toolbar commun pour chaque fen�tre
* @param actionListener
* @return
*/
public static JToolBar CreationToolBarSansBouton(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
return toolBar;
}
public static JToolBar CreationToolBarSansBoutonSupression(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Ajouter", CMD_ADD, "Ajouter...", actionListener));
toolBar.add(FabricationButton("Modifier", CMD_MOD, "Modifier...", actionListener));
toolBar.addSeparator();
return toolBar;
}
public static JToolBar CreationToolBarImport(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Ajouter", CMD_ADD, "Ajouter...", actionListener));
toolBar.add(FabricationButton("Modifier", CMD_MOD, "Modifier...", actionListener));
toolBar.add(FabricationButton("Supprimer", CMD_SUP, "Supprimer...", actionListener));
toolBar.add(FabricationButton("Importer", CMD_IMPORT, "Importer...", actionListener));
toolBar.addSeparator();
return toolBar;
}
public static JToolBar creationToolBarSuppression(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Supprimer", CMD_SUP, "Supprimer...", actionListener));
toolBar.add(FabricationButton("Quitter", CMD_QUIT, "Quitter...", actionListener));
toolBar.addSeparator();
return toolBar;
}
public static JToolBar creationToolBarQuitter(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Quitter", CMD_QUIT, "Quitter...", actionListener));
toolBar.addSeparator();
return toolBar;
}
public static JToolBar creationToolBarSuppressionModification(ActionListener actionListener) {
JToolBar toolBar = new JToolBar("Outils...");
toolBar.setBackground(Color.BLUE);
toolBar.add(FabricationButton("Modifier", CMD_MOD, "Modifier...", actionListener));
toolBar.add(FabricationButton("Supprimer", CMD_SUP, "Supprimer...", actionListener));
toolBar.add(FabricationButton("Quitter", CMD_QUIT, "Quitter...", actionListener));
toolBar.addSeparator();
return toolBar;
}
private static int openFrameCount = 0;
private static final int X_OFFSET = 20, Y_OFFSET = 20;
/**
* <p>Initialise la taille par d�faut de la fen�tre.</p>
* <p>Pr�pare la disposition de la fen�tre dans le bureau
* et par rapport aux autres fen�tres d�j� ouvertes. </p>
*
* @param titreFenetre
* @return internalFrame
*/
public static JInternalFrame creeInternalFrame(String titreFenetre) {
JInternalFrame internalFrame;
internalFrame = new JInternalFrame(APP_TITRE + titreFenetre, true, // Redimentionable
true, // Closable
true, // Maximisable
true);// Iconifiable
internalFrame.setSize(1200, 660);// Initialise la taille par d�faut de
// la fen�tre.
// Pr�pare la disposition de la fen�tre dans le bureau
// et par rapport aux autres fen�tres d�j� ouvertes.
openFrameCount = openFrameCount + 1;
internalFrame.setLocation(X_OFFSET * openFrameCount, Y_OFFSET * openFrameCount);
return internalFrame;
}
public static JLabel cr�eChampDate(final String dateTimeFormat, final IRetourneDate retourneDate, final DateCalendar.Mode dateCalendarMode) {
final JLabel jLabel = new JLabel(DATE_ERREUR_TEXTE);
jLabel.setIcon(new ImageIcon(TaxiGuiUtil.class.getClassLoader().getResource("images/logoCalender.jpg")));
jLabel.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e) {
DateCalendar fen = new DateCalendar(MainWindow.cadrePrincipal(), 0, dateCalendarMode);
fen.affiche();
jLabel.setText(DATE_ERREUR_TEXTE);
if (fen.okFlag) {
Date dateTemp = fen.retourDate();
if (dateTemp.after(new Date())) {
MessageBox(MainWindow.desktop(), "DATE INVALIDE...");
} else {
if (retourneDate != null) {
retourneDate.onDate(dateTemp);
}
jLabel.setText(new SimpleDateFormat(dateTimeFormat).format(dateTemp));
}
} else {
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) {}
});
return jLabel;
}
}