package gui;
import gui.models.CurrentDateModel;
import gui.vues.MainMenuPanel;
import java.awt.BorderLayout;
import java.awt.Container;
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.Arrays;
import java.util.Vector;
import java.util.prefs.Preferences;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTabbedPane;
import javax.swing.ToolTipManager;
import com.jgoodies.looks.plastic.theme.ExperienceBlue;
import metier.GestionConnection;
import misc.GU;
/**
*
* Classe graphique principale du projet. La classe contenant le point d'entrée (méthode main)
*
* @author Ait Elhaj Brahim
*
*/
public class Ntp extends JFrame{
/** La version du software */
public final static String VERSION = "1.0";
protected static Preferences pref = Preferences.userRoot();
/** Le panel central, principal */
private JPanel main = null;
/* */
private JTabbedPane tabs;
private CurrentDateModel dateModel;
private MainMenuPanel menuPanel;
/**
* le modèle qui permet de récupérer la date courante
* @return Renvoie le modèle de la date courante
*/
public CurrentDateModel getDateModel(){
return dateModel;
}
/**
* Crée les objets graphiques et lance l'interface principale du projet.
*
*/
public Ntp(){
super("NTP");
/* La date utilisée dans le projet */
dateModel = new CurrentDateModel();
//On change le skin
GU.changeUiSkin(new ExperienceBlue(),this);
Container cp = getContentPane();
// Préférences
ToolTipManager.sharedInstance().setEnabled(
pref.getBoolean("tooltips", true));
ToolTipManager.sharedInstance().setInitialDelay(1500);
ToolTipManager.sharedInstance().setReshowDelay(1500);
setJMenuBar(new MenuBarGUI(this));
setMain(getDefaultView());
// La vue par défaut (tree + icônes/détails/liste/etc.)
getContentPane().add(getDefaultView());
//setMain(getDefaultView());
// La vue principale
this.main = getDefaultView();
// Un border pour toolbar (en haut), statusbar (en bas), main (central)
cp.setLayout(new BorderLayout());
cp.add(new ToolBarGUI(this,dateModel), BorderLayout.NORTH);
cp.add(main, BorderLayout.CENTER);
cp.add(new StatusBarGUI(this), BorderLayout.SOUTH);
// Une taille raisonnable au départ (dans un fichier de config après
// sans doute) Mode maximisé ?
setSize(new Dimension(600, 550));
GU.center(this);
setDefaultCloseOperation(this.shutdown());
setVisible(true);
}
/**
* Créer et renvoie le panel principal de l'inteface du projet.
* Ce panel contient entre autres 3 onglets :
* <ul>
* <li> Le premier permet de gérer le cas d'utilisation 1 : demande de réservation </li>
* <li> Le seconde permet de gérer l'annulation de réservation </li>
* <li> Le troisième permet de gérer la validation </li>
* </ul>
* @return Le panel principal découpé en onglet
*/
private JPanel getDefaultView() {
// Coupure en deux
JPanel defaultView = new JPanel(new GridLayout(1, 2));
// Barre de split
//JSplitPane splitpane = new JSplitPane();
//splitpane.setDividerLocation(200);
// Des look 'n feels balance une NullPointerException avec ça. :D
// ie: Tonic
//splitpane.setOneTouchExpandable(true);
this.menuPanel = new MainMenuPanel(this);
tabs = new JTabbedPane();
JScrollPane viewReservation = new JScrollPane(menuPanel.getTabOne().getContentPane());
JScrollPane viewAnnulation = new JScrollPane(menuPanel.getTabTwo().getContentPane());
JScrollPane viewValidation = new JScrollPane(menuPanel.getTabThree().getContentPane());
//Tabluation du cas principal : Réservation
tabs.addTab("Reservation", viewReservation);
//Cas de validation de réservation
tabs.add("Annulation",viewAnnulation);
//Cas d'annulation de réservation
tabs.add("Validation",viewValidation);
//splitpane.setTopComponent(getLeftPanel());
//splitpane.setBottomComponent(tabs);
defaultView.add(tabs);
//panel.add(new MainMenuPanel(this));
return defaultView;
}
private void setMain(JPanel main) {
this.main = main;
getContentPane().add(main, BorderLayout.CENTER);
main.repaint();
main.revalidate();
}
private int shutdown(){
GestionConnection gc = new GestionConnection();
gc.shutDown();
return JFrame.EXIT_ON_CLOSE;
}
/**
* Point d'entrée du projet
*
* @param args Les arguments de la ligne de commande
*/
public static void main(String[]args){
new Ntp();
}
}