/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package vue.terminal;
import controller.terminal.controller.TerminalController;
import controller.terminal.interfacesGUI.TerminalMainVue;
import controller.terminal.interfacesGUI.TerminalPay;
import controller.terminal.interfacesGUI.TerminalRentSummary;
import controller.terminal.interfacesGUI.TerminalRent;
import controller.terminal.interfacesGUI.TerminalReturn;
import controller.terminal.interfacesGUI.TerminalReturnSummary;
import controller.terminal.interfacesGUI.TerminalWelcome;
import java.awt.BorderLayout;
import java.awt.CardLayout;
import java.awt.Dimension;
import java.awt.GraphicsConfiguration;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import vue.common.BannerPanel;
/**
*
* @author Valentin SEITZ
*/
public class TerminalMainFrame extends JFrame implements TerminalMainVue {
private static final int BANNER_HEIGHT = 50;
private static final int BANNERSOUTH_MARGIN = 10;
public static final int ROW_HEIGHT = 32;
public static final int VERTICAL_GAP = 5;
public static final int HORIZONTAL_GAP = 5;
private static final String CARD_WELCOME = "WELCOME";
private static final String CARD_RENT = "RENT";
private static final String CARD_RENT_SUMMARY = "RENT_SUMMARY";
private static final String CARD_RETURN = "RETURN";
private static final String CARD_RETURN_SUMMARY = "RETURN_SUMMARY";
private static final String CARD_PAY = "PAY";
//The banner of application
JPanel banner;
JButton btnCancel;
//Vues are managed as cards
JPanel cards;
CardLayout cardsLayout;
//Vues
private TerminalWelcomePanel welcomeVue;
private TerminalRentPanel rentVue;
private TerminalRentSummaryPanel rentSummaryVue;
private TerminalReturnPanel returnVue;
private TerminalReturnSummaryPanel returnSummaryVue;
private TerminalPayPanel payVue;
public TerminalMainFrame() throws HeadlessException {
initialize();
}
public TerminalMainFrame(GraphicsConfiguration gc) {
super(gc);
initialize();
}
public TerminalMainFrame(String string) throws HeadlessException {
super(string);
initialize();
}
public TerminalMainFrame(String string, GraphicsConfiguration gc) {
super(string, gc);
initialize();
}
private void initialize() {
BorderLayout bdl = new BorderLayout();
JPanel top;
bdl.setVgap(BANNERSOUTH_MARGIN);
this.setLayout(bdl);
this.setPreferredSize(new Dimension(640, 480));
top = new JPanel();
{
top.setLayout(new BorderLayout());
//Initialize banner
this.banner = new BannerPanel();
{
this.banner.setPreferredSize(new Dimension((int) (this.banner.getPreferredSize().getWidth()), BANNER_HEIGHT));
}
top.add(this.banner, BorderLayout.CENTER);
this.btnCancel = new JButton("Annuler");
{
this.btnCancel.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent ae) {
TerminalController.doCancel();
}
});
}
top.add(this.btnCancel, BorderLayout.WEST);
}
this.add(top, BorderLayout.NORTH);
//Initialize cards
this.cards = new JPanel();
this.cardsLayout = new CardLayout();
this.cards.setLayout(this.cardsLayout);
{
//Welcome vue
this.welcomeVue = new TerminalWelcomePanel();
this.cards.add(this.welcomeVue, CARD_WELCOME);
//Rent vue
this.rentVue = new TerminalRentPanel();
this.cards.add(this.rentVue, CARD_RENT);
//Rent summary vue
this.rentSummaryVue = new TerminalRentSummaryPanel();
this.cards.add(this.rentSummaryVue, CARD_RENT_SUMMARY);
//Return vue
this.returnVue = new TerminalReturnPanel();
this.cards.add(this.returnVue, CARD_RETURN);
//ReturnSummary vue
this.returnSummaryVue = new TerminalReturnSummaryPanel();
this.cards.add(this.returnSummaryVue, CARD_RETURN_SUMMARY);
//Pay vue
this.payVue = new TerminalPayPanel();
this.cards.add(this.payVue, CARD_PAY);
}
this.add(this.cards, BorderLayout.CENTER);
//Just exit application
this.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
TerminalController.doExit();
}
});
}
@Override
public void displayTerminalWelcome() {
this.btnCancel.setVisible(false);
this.cardsLayout.show(this.cards, CARD_WELCOME);
}
@Override
public void displayTerminalRent() {
this.btnCancel.setVisible(true);
this.cardsLayout.show(this.cards, CARD_RENT);
}
@Override
public void displayTerminalRentSummary() {
this.btnCancel.setVisible(true);
this.cardsLayout.show(this.cards, CARD_RENT_SUMMARY);
}
@Override
public void displayTerminalReturn() {
this.btnCancel.setVisible(true);
this.cardsLayout.show(this.cards, CARD_RETURN);
}
@Override
public void displayTerminalReturnSummary() {
this.btnCancel.setVisible(true);
this.cardsLayout.show(this.cards, CARD_RETURN_SUMMARY);
}
@Override
public void displayTerminalPay() {
this.btnCancel.setVisible(true);
this.cardsLayout.show(this.cards, CARD_PAY);
}
@Override
public TerminalWelcome getTerminalWelcome() {
return this.welcomeVue;
}
@Override
public TerminalRent getTerminalRent() {
return this.rentVue;
}
@Override
public TerminalRentSummary getTerminalRentSummary() {
return this.rentSummaryVue;
}
@Override
public TerminalReturn getTerminalReturn() {
return this.returnVue;
}
@Override
public TerminalReturnSummary getTerminalReturnSummary() {
return returnSummaryVue;
}
@Override
public TerminalPay getTerminalPay() {
return payVue;
}
@Override
public void showInformation(String msg) {
JOptionPane.showMessageDialog(null, msg, "Information", JOptionPane.INFORMATION_MESSAGE);
}
@Override
public void showError(String msg) {
JOptionPane.showMessageDialog(null, msg, "Erreur", JOptionPane.ERROR_MESSAGE);
}
@Override
public void showWarning(String msg) {
JOptionPane.showMessageDialog(null, msg, "Avertissement", JOptionPane.WARNING_MESSAGE);
}
}