/*
* Cree le 13 oct. 2004
*/
package misc;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.sql.Date;
import java.util.Collection;
import java.util.Iterator;
import javax.swing.BorderFactory;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.UIManager;
import javax.swing.border.Border;
import metier.Common;
import metier.reservations.Demande;
import data.programmation.Piece;
import data.reservation.Fauteuil;
import data.reservation.Reservation;
import com.jgoodies.looks.plastic.*;
import com.jgoodies.looks.plastic.theme.*;
import javax.swing.SwingUtilities;
/**
* Classe utilitaire ('Graphical Utilities' ho yeah) ne contenant que des
* méthodes statiques pour faciliter la gestion de divers éléments graphiques.
*
*
* @author Ait Elhaj Brahim
*/
public class GU {
/** Taille par défaut du texte Html */
public static int TAILLE_FONT_HTML = 2;
/** Couleurs des informations Html */
public static String COLOR_INFO_HTML = "green";
/** Couleurs des titres en Html */
public static String COLOR_TITRE_HTML = "blue";
/**
* Centre une JFrame sur l'écran.
*
* @param frame
* la JFrame à centrer
*/
public static void center(JFrame frame) {
Dimension screen = Toolkit.getDefaultToolkit().getScreenSize();
Dimension size = frame.getSize();
frame.setLocation((int) (screen.width - size.width) / 2,
(int) (screen.height - size.height) / 2);
}
/**
* Change le Look&Feel de l'interface graphique
*
*/
public static void changeUiSkin(PlasticTheme theme,JFrame frame){
PlasticLookAndFeel.setPlasticTheme(theme);//new ExperienceBlue()
PlasticLookAndFeel.set3DEnabled(true);
try {
UIManager.setLookAndFeel(new PlasticLookAndFeel());
//force chaque composant de la fenêtre à appeler sa méthode updateUI
SwingUtilities.updateComponentTreeUI(frame);
} catch (Exception e) {e.printStackTrace();}
}
/**
* La dimensions utilisée pour les panels principaux.
*
*
* @return Renvoie la dimension à utiliser pour les panels centraux
*/
public static Dimension getMainDimension(){
return new Dimension(400,200);
}
/**
* Affiche une information.
*
* @param s
* information
*/
public static void info(String s) {
JOptionPane.showMessageDialog(null, s, "Information",
JOptionPane.INFORMATION_MESSAGE);
}
/**
* Affiche un avertissement.
*
* @param s
* avertissement
*/
public static void warn(String s) {
JOptionPane.showMessageDialog(null, s, "Avertissement",
JOptionPane.WARNING_MESSAGE);
}
/**
* Demande la saisie d'un texte.
*
* @param s
* détail sur la chose à saisir
* @return la chose saisie
*/
public static String input(String s) {
return JOptionPane.showInputDialog(null, s, "Demande de saisie",
JOptionPane.QUESTION_MESSAGE);
}
/**
* Demande la confirmation d'un choix
*
* @param s
* le message pour lequel on attend confirmation ou infirmation
* @return true s'il y a eu confirmation, false sinon
*/
public static boolean confirm(String s) {
return JOptionPane.showConfirmDialog(null, s, "Confirmation",
JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == JOptionPane.YES_OPTION;
}
/**
* Cree une bordure avec titre et l'applique à un JComponent.
*
* @param title
* titre de la bordure
* @param c
* Le composant sur lequel on va fixer la bordure
*/
public static Border createBorder(String title, int top, int left, int bottom, int right){
return BorderFactory.createCompoundBorder(
BorderFactory.createTitledBorder(title),
BorderFactory.createEmptyBorder(top,left,bottom,right));
}
/**
* Formattage des places attribuées en Html pour un affichage plus jolie.
*
* @param res La réservation
* @param title Le titre du texte html à retourner
* @return La liste des places attribuées formatées en Html
*/
public static String formatPlacesAttribuesToHtml(Reservation res,String title){
int taille = GU.TAILLE_FONT_HTML;
String couleurTitre = GU.COLOR_TITRE_HTML;
String couleurInfo = GU.COLOR_INFO_HTML;
String txt = "<html><font color="+couleurTitre+" size=+"+taille+
"> "+title+" </font><ul>";
Collection fauteuils = res.getLesFauteuils();
Iterator itFauteuils = fauteuils.iterator();
while(itFauteuils.hasNext()){
txt+= "<font color="+couleurInfo+"" +
">"+(Fauteuil)itFauteuils.next()+"</font><br>";
}
txt+="</ul></html>";
return txt;
}
/**
* Formattage de la demande de validation en Html pour un affichage plus jolie.
*
* @param res La réservation
* @param title Le titre du texte html à retourner
* @return Le résumé de la demande de réservation formaté en Html
*/
public static String formatValidationDemandeToHtml(Reservation res,String title){
Common c = new Common();
Date dateConfirmation = c.getDateConfirmation(res.getDateReserv());
int taille = GU.TAILLE_FONT_HTML;
String couleurTitre = GU.COLOR_TITRE_HTML;
String couleurInfo = GU.COLOR_INFO_HTML;
String txt = "<html><font color="+couleurTitre+" size=+"+taille+
"> "+title+" </font><ul>"+
"Numéro de réservation : <font color="+couleurInfo+"" +
">"+res.getIdReserv()+"</font><br>"+
"Date Limite de confirmation : <font color="+couleurInfo+"" +
">"+Utils.formatDateToString(dateConfirmation)+"</font><br>";
/*Collection fauteuils = res.getLesFauteuils();
Iterator itFauteuils = fauteuils.iterator();
while(itFauteuils.hasNext()){
txt+= "<font color="+couleurInfo+"" +
">"+(Fauteuil)itFauteuils.next()+"</font><br>";
}*/
txt+="</ul></html>";
return txt;
}
/**
* Formatte les informations sur une réservation au format Html.
*
*
* @param res La réservation
* @param p La piéce associée à cette réservation
* @param title Le titre du texte à retourner
* @param msgSupp Le message supplémentaire à afficher dans certains cas
* @return Le texte Html résumant la réservation
*/
public static String formatReservationToHtml(Reservation res,Piece p,
String title,String msgSupp){
Demande d = new Demande();
String prixHtml = "";
Common c = new Common();
Date dateConfirmation = c.getDateConfirmation(res.getDateReserv());
int taille = GU.TAILLE_FONT_HTML;
String couleurTitre = GU.COLOR_TITRE_HTML;
String couleurInfo = GU.COLOR_INFO_HTML;
//Calcul du prix si possible
if(p!=null) {
double prix = d.calculerPrix(res, p);
prixHtml = "Prix : <font color="+couleurInfo+"" +
">"+prix+" Euros</font><br>";
}
String txt = "<html><font color="+couleurTitre+" size=+"+taille+
"> "+title+" </font><ul>"+
"Pièce : <font color="+couleurInfo+"" +
">"+d.getTitrePiece(res.getIdSeance())+"</font><br>"+
"Séance : <font color="+couleurInfo+"" +
">"+res.getIdSeance()+"</font><br>"+
"Zone : <font color="+couleurInfo+"" +
">"+res.getIdZone()+"</font><br>"+
"Nombre de personnes : <font color="+couleurInfo+"" +
">"+res.getNbPersonnes()+"</font><br>"+
//"Fauteuils attribués : <font color="+couleurInfo+"" +
// ">"+"TEXTE"+"</font><br>"+
"Date de réservation : <font color="+couleurInfo+"" +
">"+Utils.formatDateToString(res.getDateReserv())+"</font><br>"+
"Date Limite de confirmation : <font color="+couleurInfo+"" +
">"+Utils.formatDateToString(dateConfirmation)+"</font><br>"+
prixHtml+
"<br><br><font color=red size=+"+taille+">"+
msgSupp+"</font><br>"+
"</ul></html>";
return txt;
}
}