public PanelValidationReservation(JFrame frame, List<Reservation> listeReservations) {
		SimpleDateFormat formatterDeb = new SimpleDateFormat("'Le 'dd/MM/yyyy' de 'HH'h '");
		SimpleDateFormat formatterFin = new SimpleDateFormat("HH");
		infosPaiement = null;
		Date dateReservation = null;
		int duree;

		dateReservation = listeReservations.get(0).getDate();
		duree = listeReservations.get(0).getPlage();
		
		JScrollPane scrollpane;
		JLabel lNom = new JLabel("Nom");
		JLabel lPrenom = new JLabel("Prenom");
		JLabel lNumTel = new JLabel("Tel");
		lTypeSalle = new JLabel();
		lDate = new JLabel();
		lPrix = new JLabel();
		lTypeSalle.setOpaque(true);
		lTypeSalle.setBackground(Color.LIGHT_GRAY);
		lDate.setOpaque(true);
		lDate.setBackground(Color.LIGHT_GRAY);
		lPrix.setOpaque(true);
		lPrix.setBackground(Color.LIGHT_GRAY);
		lTypeSalle.setText("Type : " + (listeReservations.get(0).getSalle().getTypeSalle().getTypeSalle().equals("petite")?"Petite salle":(listeReservations.get(0).getSalle().getTypeSalle().getTypeSalle().equals("grande")?"Grande salle":"Salle equipee")));
		lDate.setText(formatterDeb.format(dateReservation) 
				+ "a " + (Integer.parseInt(formatterFin.format(dateReservation))+duree) + "h");

		
		cbForfait = new JComboBox();
		cbForfait.setRenderer(new RendererCBForfait());
		cbForfait.setMinimumSize(new Dimension(120, 20));
		cbForfait.setMaximumSize(new Dimension(120, 20));
		cbForfait.setPreferredSize(new Dimension(120, 20));
		cbForfait.addItem(null);
		
		checkFidelite = new JCheckBox();
		checkFidelite.setBackground(Color.LIGHT_GRAY);
		
		checkPaiement = new JCheckBox();
		checkPaiement.setBackground(Color.LIGHT_GRAY);
		
		bgChoixPaiement = new ButtonGroup();
		rbDiffere = new JRadioButton();
		rbImmediat = new JRadioButton();
		rbDiffere.setSelected(true);
		rbDiffere.setBackground(Color.LIGHT_GRAY);
		rbImmediat.setBackground(Color.LIGHT_GRAY);
		bgChoixPaiement.add(rbDiffere);
		bgChoixPaiement.add(rbImmediat);
		
		this.frame = frame;
		this.listeReservations = listeReservations;

		this.setLayout(new GridBagLayout());
		

		modelReservation = new DefaultListModel<Reservation>();
		jListeReservations = new JList<Reservation>(modelReservation);
		jListeReservations.setCellRenderer(new RendererJListReservation());
		
		for(Reservation r : listeReservations){
			modelReservation.addElement(r);
		}
		
		GridBagConstraints GBC = new GridBagConstraints();
		panelCenterRight = new JPanel();
		panelCenterRight.setLayout(new GridBagLayout());
		panelCenterRight.setBackground(Color.LIGHT_GRAY);
		//panelCenterRight.setPreferredSize(new Dimension(200, 300));
		
		panelOptionsPaiement = new JPanel();
		panelOptionsPaiement.setLayout(new FlowLayout(FlowLayout.CENTER));
		panelOptionsPaiement.setBackground(Color.LIGHT_GRAY);	
		panelOptionsPaiement.setVisible(false);
		
		bSendInfos = new JButton(" >> ");
		bSendInfos.setBackground(Color.WHITE);
		bEnregistrer = new JButton("Valider");
		bEnregistrer.setBackground(Color.WHITE);
		bEnregistrer.setMinimumSize(new Dimension(150, 20));
		bEnregistrer.setMaximumSize(new Dimension(150, 20));
		bEnregistrer.setPreferredSize(new Dimension(150, 20));
		bRetour = new JButton("Retour");
		bRetour.setBackground(Color.WHITE);
		bRetour.setMinimumSize(new Dimension(150, 20));
		bRetour.setMaximumSize(new Dimension(150, 20));
		bRetour.setPreferredSize(new Dimension(150, 20));
		bOptionsPaiement = new JButton("Forfaits et pts fidelite");
		bOptionsPaiement.setBackground(Color.WHITE);
		
		tfNom = new JTextField();
		tfNom.setMinimumSize(new Dimension(100, 20));
		tfNom.setMaximumSize(new Dimension(100, 20));
		tfNom.setPreferredSize(new Dimension(100, 20));
		tfNom.setBackground(Color.WHITE);
		tfPrenom = new JTextField();
		tfPrenom.setMinimumSize(new Dimension(100, 20));
		tfPrenom.setMaximumSize(new Dimension(100, 20));
		tfPrenom.setPreferredSize(new Dimension(100, 20));
		tfPrenom.setBackground(Color.WHITE);
		tfNumTel = new JTextField();
		tfNumTel.setMinimumSize(new Dimension(100, 20));
		tfNumTel.setMaximumSize(new Dimension(100, 20));
		tfNumTel.setPreferredSize(new Dimension(100, 20));
		tfNumTel.setBackground(Color.WHITE);

		lNom.setMinimumSize(new Dimension(50, 20));
		lNom.setMaximumSize(new Dimension(50, 20));
		lNom.setPreferredSize(new Dimension(50, 20));
		lPrenom.setMinimumSize(new Dimension(50, 20));
		lPrenom.setMaximumSize(new Dimension(50, 20));
		lPrenom.setPreferredSize(new Dimension(50, 20));
		lNumTel.setMinimumSize(new Dimension(50, 20));
		lNumTel.setMaximumSize(new Dimension(50, 20));
		lNumTel.setPreferredSize(new Dimension(50, 20));
		
		RechercheClient metierRechercheClient = new RechercheClient();
		listeClient = metierRechercheClient.listerClients();
		model = new DefaultListModel<Client>();
		for(Client clt : listeClient){
			model.addElement(clt);
		}
		
		jlClient = new JList<Client>(model);
		jlClient.setCellRenderer(new RendererJListClient());
		jlClient.setLayoutOrientation(JList.VERTICAL);
		jlClient.setSelectionMode (ListSelectionModel.SINGLE_SELECTION);
		
		scrollpane = new JScrollPane(jlClient);
		scrollpane.setPreferredSize(new Dimension(200, 300));
		scrollpane.setMinimumSize(new Dimension(200, 300));
		scrollpane.setMaximumSize(new Dimension(200, 300));
		
		panelOptionsPaiement.add(bOptionsPaiement);
		
		if(listeReservations.size()==1){
	
			infosPaiement = new ConfirmerReservation().getInfosApresPaiement(listeReservations.get(0), null, null, false);
			
			GBC.fill = GridBagConstraints.HORIZONTAL; 
			GBC.anchor = GridBagConstraints.NORTH;
			GBC.gridy = 0;
			GBC.gridx = 0;
			GBC.gridheight = 1;
			GBC.gridwidth = 2;
			GBC.weightx = 1;
			GBC.weighty = 1;
			panelCenterRight.add(lTypeSalle,GBC);
			
			GBC.gridy++;
			panelCenterRight.add(lDate,GBC);
			
			GBC.gridy++;
			lPrix.setText("Prix : " + infosPaiement[0] + " euro"+(infosPaiement[0]>1?"s":""));
			panelCenterRight.add(lPrix,GBC);
		} else {
			infosPaiement = new ConfirmerReservation().getInfosApresPaiement(listeReservations, null, null, false);
			
			GBC.fill = GridBagConstraints.HORIZONTAL; 
			GBC.anchor = GridBagConstraints.NORTH;
			GBC.gridy = 0;
			GBC.gridx = 0;
			GBC.gridheight = 1;
			GBC.gridwidth = 2;
			GBC.weightx = 1;
			GBC.weighty = 1;
			panelCenterRight.add(lTypeSalle,GBC);
			
			GBC.gridy++;
			JScrollPane scrollPaneReservations = new JScrollPane(jListeReservations);
			scrollPaneReservations.setPreferredSize(new Dimension(220, 100));
			scrollPaneReservations.setMinimumSize(new Dimension(220, 100));
			scrollPaneReservations.setMaximumSize(new Dimension(220, 100));
			panelCenterRight.add(scrollPaneReservations,GBC);
			
			GBC.gridy++;
			lPrix.setText("Prix : " + infosPaiement[0] + " euro"+(infosPaiement[0]>1?"s":""));
			panelCenterRight.add(lPrix,GBC);
		}
		
		GBC.gridy++;
		GBC.gridwidth = 1;
		panelCenterRight.add(new JLabel("Paiement :"),GBC);
		GBC.gridy++;
		panelCenterRight.add(new JLabel("Differe",JLabel.RIGHT),GBC);
		GBC.gridx++;
		panelCenterRight.add(rbDiffere,GBC);
		GBC.gridx=0;
		GBC.gridy++;
		panelCenterRight.add(new JLabel("Immediat",JLabel.RIGHT),GBC);
		GBC.gridx++;
		panelCenterRight.add(rbImmediat,GBC);
		GBC.gridx = 0;
		GBC.gridy++;
		GBC.gridwidth = 2;
		GBC.fill = GridBagConstraints.VERTICAL; 
		panelCenterRight.add(panelOptionsPaiement,GBC);
		GBC.gridy++;
		GBC.gridwidth = 1;
		GBC.fill = GridBagConstraints.HORIZONTAL; 
		panelCenterRight.add(lNom,GBC);
		GBC.gridx++;
		panelCenterRight.add(tfNom,GBC);
		GBC.gridx = 0;
		GBC.gridy++;
		panelCenterRight.add(lPrenom,GBC);
		GBC.gridx++;
		panelCenterRight.add(tfPrenom,GBC);
		GBC.gridx = 0;
		GBC.gridy++;
		panelCenterRight.add(lNumTel,GBC);
		GBC.gridx++;
		panelCenterRight.add(tfNumTel,GBC);
		GBC.gridx = 0;
		GBC.gridy++;
		GBC.gridwidth = 2;
		GBC.insets = new Insets(15, 5, 5, 5);
		panelCenterRight.add(bEnregistrer,GBC);
		GBC.gridy++;
		
		
		GBC.fill = GridBagConstraints.BOTH; 
		GBC.anchor = GridBagConstraints.NORTH;
		GBC.gridy = 0;
		GBC.gridx = 0;
		GBC.gridheight = 1;
		GBC.gridwidth = 3;
		GBC.weightx = 1;
		GBC.weighty = 1;
		GBC.insets = new Insets(0, 0, 0, 0);
		JLabel lTitreHaut = new JLabel("Validation de la reservation",JLabel.CENTER);
		lTitreHaut.setOpaque(true);
		lTitreHaut.setBackground(Color.GRAY);
		this.add(lTitreHaut,GBC);
		GBC.anchor = GridBagConstraints.EAST;
		GBC.fill = GridBagConstraints.BOTH; 
		GBC.gridy++;
		GBC.gridwidth=1;
		GBC.insets = new Insets(3, 10, 0, 0);
		this.add(scrollpane,GBC);
		GBC.fill = GridBagConstraints.NONE;
		GBC.anchor = GridBagConstraints.CENTER;
		GBC.gridx++;
		GBC.weightx = 0.1;
		GBC.weighty = 0.1;
		GBC.insets = new Insets(3, 5, 0, 5);
		this.add(bSendInfos,GBC);
		GBC.fill = GridBagConstraints.BOTH;
		GBC.anchor = GridBagConstraints.EAST;
		GBC.gridx++;
		GBC.weightx = 1;
		GBC.weighty = 1;
		GBC.insets = new Insets(3, 0, 0, 10);
		this.add(panelCenterRight,GBC);
		GBC.gridy++;
		GBC.gridx = 0;
		GBC.gridwidth = 3;
		GBC.fill = GridBagConstraints.NONE;
		GBC.anchor = GridBagConstraints.CENTER;
		GBC.insets = new Insets(5, 0, 3, 0);
		this.add(bRetour,GBC);
		
		
		bSendInfos.addActionListener(this);
		bEnregistrer.addActionListener(this);
		bRetour.addActionListener(this);
		bOptionsPaiement.addActionListener(this);
		cbForfait.addActionListener(this);
		checkFidelite.addActionListener(this);
		rbDiffere.addActionListener(this);
		rbImmediat.addActionListener(this);
		tfNom.getDocument().addDocumentListener(this);
		tfPrenom.getDocument().addDocumentListener(this);
		tfNumTel.getDocument().addDocumentListener(this);
	}