import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Questionnaire {
	private String nom;
	private Date dateCreation;
	private boolean estComplet;
	
	List<Question> questionTab; //tableau où on stocke toutes les questions

	
	
// --------- CONSTRUCTEUR ------------- //
	
	public Questionnaire(String name, int nbQuestion, Date Creation, boolean estComplet, List<Question> questionTab){
		this.nom = name;
		this.dateCreation = Creation;
		this.estComplet = estComplet;
		this.questionTab = questionTab;
	
	}
	

	public Questionnaire(){
		this.nom = "Questionnaire";
	// this.dateCreation = ;
		this.estComplet = false;
		this.questionTab =  new ArrayList<Question>();
	}
	
//---------- GETTERS & SETTERS ---------- //	

	public String getNom() {
		return nom;
	}
	
	public void setNom(String nom) {
		this.nom = nom;
	}
	
	
	public Date getDateCreation() {
		return dateCreation;
	}
	
	public void setDateCreation(Date dateCreation) {
		this.dateCreation = dateCreation;
	}
	
	public boolean isEstComplet() {
		return estComplet;
	}
	
	public void setEstComplet(boolean estComplet) {
		this.estComplet = estComplet;
	}
	

	public List<Question> getQuestionTab() {
		return questionTab;
	}

	public void setQuestionTab(List<Question> questionTab) {
		this.questionTab = questionTab;
	}
	
	
	//------------------------------------------------//
	
	public String toString(){
		return getNom();
	}
	
	
	//-----------------------------------------//
	
	public String demanderTitre(){
		
		String title = JOptionPane.showInputDialog(null, "Entrez le nom de votre questionnaire", "Titre", JOptionPane.QUESTION_MESSAGE);
		this.setNom(title);
		return this.toString();
		
	}
	
//Boucle pour afficher les questions 
		
	public void affichageQuestions(Fenetre fenetre, JPanel pan){  // /!\/!\/!\
		JButton boutonAddReponse = new JButton ("Ajouter une réponse");
		
		
		
		
		
		for (int i=0; i< this.getQuestionTab().size(); i++){ 
			Question question_i = this.getQuestionTab().get(i);
			
			JLabel afficherQuestion = new JLabel(question_i.getDescription()); //Intitulé de la question i
			pan.add(afficherQuestion); 
			
			if ((question_i.getType() == 1) || (question_i.getType() == 2)){ //QCM ou Choix unique
				
				pan.add(boutonAddReponse); //Un seul bouton AddReponse par question
				boutonAddReponse.addActionListener(new ButtonReponseListener(question_i, fenetre, pan));
			
			}
			
			else if (question_i.getType() == 3) { 
				pan.add(this.getQuestionTab().get(i).reponseNumerique());
			}
			
			else if (question_i.getType() == 4){ 
				pan.add(this.getQuestionTab().get(i).texte());
			}
			
			
		}
		
		
		
		fenetre.setContentPane(pan);
		fenetre.setVisible(true);
	}
	
	
	//Action quand on clique sur le bouton AddReponse pour les réponses fermées (type 1 ou 2)
	//Permet de créer des réponses que l'on stocke dans le tableau de réponses
	
	
		private class ButtonReponseListener implements ActionListener { // /!\/!\/!\
		
		private Question question;
		private Fenetre fenetre;
		private JPanel pan;
		
        public ButtonReponseListener(Question question, Fenetre fenetre, JPanel pan) {
        	this.question = question;
        	this.fenetre = fenetre;
        	this.pan = pan;
        }
        
        @Override
        public void actionPerformed(ActionEvent e){
        	
        	Reponse answer = new Reponse(); //On crée une réponse
    
	        answer.creerReponse(question); // on ajoute dans le tableau de réponse
	        question.afficherReponse(fenetre, pan);  		
        
        }
	}

}
