package gui.vues.demande;
import gui.vues.NtpPanel;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Collection;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import metier.reservations.AttributionPlaces;
import misc.GU;
import data.abonne.Abonne;
import data.programmation.Piece;
import data.programmation.Representation;
import data.reservation.Reservation;
import exceptions.metier.NombreTotalPlacesInsuffisantException;
/**
* Panel affichant des infos sur l'attribution des places.
*
* Point 8. 9. et 9a. du cas d'utilisation 1
*
* @author Ait Elhaj Brahim
*
*/
public class InfosAttribution extends NtpPanel implements ActionListener {
private JLabel message = new JLabel("Accepter cette configuration : ");
private JButton ok = new JButton("Oui");
private JButton non = new JButton("Non : Choix d'une autre séance");
private JButton arret = new JButton("Arrêter");
//JButton quitter = new JButton("Quitter");
private Piece p;
private Abonne a;
private Reservation res;
private Representation rep;
/**
* Construit un objet <code>InfosAttribution</code>.
*
*
* @param p
* La piéce
* @param a
* L'abonné
* @param res
* La réservation
* @param rep
* La représentation
* @param owner
* Le <code>JDialog</code> parent
* @param previous
* Le panel précédent
*/
public InfosAttribution(Piece p, Abonne a, Reservation res,Representation rep, JDialog owner,NtpPanel previous){
super(owner,previous);
this.p = p;
this.a = a;
this.res = res;
this.rep = rep;
owner.setTitle("Attribution des places ");
this.setLayout(new GridLayout(0,1));
JPanel panelBas = new JPanel();
//panelBas.add(quitter);
panelBas.add(message);
panelBas.add(ok);
panelBas.add(non);
panelBas.add(arret);
//On récupére la liste de fauteuil à attribuer
res.remplirFauteuils(this.getFauteuils());
String txt = GU.formatPlacesAttribuesToHtml(res, "Places attribuées");
JLabel infos = new JLabel(txt,JLabel.CENTER);
this.add(infos);
this.add(panelBas);
arret.addActionListener(this);
ok.addActionListener(this);
non.addActionListener(this);
}
/**
* Gestion des évenements
*
* @param e L'évenement déclencheur (ex : Click sur un bouton ...)
*/
public void actionPerformed(ActionEvent e) {
Object o = e.getSource();
if(o == non){
//On revient 2 écrans avant : Choix de la séance
this.displayPreviousScreen(2);
}else if(o == arret){
this.finishCase();
}else if(o == ok){
NtpPanel next = new ListePersonnes(p,a,res,rep,owner,this);
this.displayScreen(next);
}
}
/**
* Renvoie une liste de fauteuil disponibles attribuables.
*
*
* @return la liste de fauteuils attribués
*/
private Collection getFauteuils(){
AttributionPlaces ap = new AttributionPlaces();
Collection fauteuilsAttribues = null;
//System.out.println("[InfosAttribution] : nbPlacesRes = "+res.getNbPersonnes());
try{
fauteuilsAttribues = ap.proposeFauteuils(res.getIdZone(), rep.getIdSeance(), res.getNbPersonnes());
}catch(NombreTotalPlacesInsuffisantException ntpie ){
String message = "Il n'y a plus assez de places dans cette zone !";
}
return fauteuilsAttribues;
}
}