package testbdd2;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
//package testbdd2;
//import com.mysql.jdbc.Connection;
import java.sql.Statement;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.*;

public class Fenetre extends JFrame implements ActionListener {
    // attributs

    static final String ACTION_QUITTER = "Quitter";
    static final String ACTION_AJOUTER_FILM = "Ajouter Film";
    static final String ACTION_AJOUTER_REAL = "Ajouter Réalisateur";
    static final String ACTION_AJOUTER_GENRE = "Ajouter Genre";
    private JTable tableau;
    private Connection connec;

    // constructeur
    public Fenetre() {
        // appelle un constr du parent, en passant // une valeur de type chaîne de caractères // effet : donne un titre à la fenêtre
        super("Mediatheque");
        // permettre de quitter l'appli lorsque l'utilisateur // clique sur la croix en haut à droite de la fenêtre.
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


        //this.setSize(300,300);
        this.setVisible(true);
        this.setLayout(null);
        //this.setSize();

        // voir plus bas pour des expl. concernant cette méthode
        this.init();
        this.afficherTable();
        
        pack();
        this.setSize(400, 400);
    }

    private void init() {
        //Connection à la base de données
        //ConneionBDD cbdd =

        //on a besoin de créer une barre de menus
        JMenuBar menuBar;
        // et un menu
        JMenu menuFichier;
        JMenu menuConfig;

        //création de la barre de menus
        menuBar = new JMenuBar();

        //construisons le premier menu
        menuFichier = new JMenu("Fichier");
        menuFichier.setMnemonic(KeyEvent.VK_F);

        // création de la commande "quitter" (un JMenuItem)
        JMenuItem mnItemQuitter = new JMenuItem(ACTION_QUITTER, KeyEvent.VK_Q);

        mnItemQuitter.setActionCommand(ACTION_QUITTER);

        // le menu Fichier contient la commande Quitter
        menuFichier.add(mnItemQuitter);
        // on peut placer une barre de séparation pour
        // séparer des groupes logiques de commandes.
        // menu.addSeparator();
        // la barre de menus contient le menu Fichier
        menuBar.add(menuFichier);


        // plus un autre menu bidon, pour l'exemple
        menuConfig = new JMenu("Configuration");
        menuBar.add(menuConfig);
        menuConfig.setMnemonic(KeyEvent.VK_C);

        JMenuItem mnItemSetFilm = new JMenuItem(ACTION_AJOUTER_FILM, KeyEvent.VK_T);
        menuConfig.add(mnItemSetFilm);

        JMenuItem mnItemSetReal = new JMenuItem(ACTION_AJOUTER_REAL, KeyEvent.VK_T);
        menuConfig.add(mnItemSetReal);

        JMenuItem mnItemSetGenre = new JMenuItem(ACTION_AJOUTER_GENRE, KeyEvent.VK_T);
        menuConfig.add(mnItemSetGenre);


//        tableau = new JTable();
//        tableau.setBounds(20, 20, 360, 320);



//        this.getContentPane().add(tableau);


        // fournir à la fenêtre une barre de menus
        this.setJMenuBar(menuBar);
        // donnons une largeur et une hauteur à la fenêtre
        



        // evenement
        mnItemQuitter.addActionListener(this);
        mnItemSetFilm.addActionListener(this);
        mnItemSetReal.addActionListener(this);
        mnItemSetGenre.addActionListener(this);

        



    }

    public void afficherTable() {
        ConnectionBDD cbdd = ConnectionBDD.getInstance();
        connec = cbdd.getConnexion();

        String requete = "select f.nomFilm, g.nomGenre, r.nomRealisateur "
                + "from film as f, genre as g, realisateur as r "
                + "where f.idGenre = g.id "
                + "and f.idRealisateur = r.id "
                + "order by nomFilm asc";

        Statement st;
        try {
            st = connec.createStatement();
            ResultSet rs = st.executeQuery(requete);

            int nbr;

            rs.afterLast();
            rs.previous();
            nbr = rs.getRow();
            rs.beforeFirst();

            String[] titres = {"Film", "Genre", "Réalisateur"};
            String[][] infos = new String[nbr][3];

            tableau = new JTable(infos, titres);
            JScrollPane scroll = new JScrollPane(tableau);

            tableau.setLocation(10, 30);
            tableau.setSize(360, 310);
            super.getContentPane().add(tableau);

            int i = 0;

            while (rs.next()) {
                String nomFilm = rs.getString("nomFilm");
                String nomGenre = rs.getString("nomGenre");
                String nomRealisateur = rs.getString("nomRealisateur");
                infos[i][0] = nomFilm;
                infos[i][1] = nomGenre;
                infos[i][2] = nomRealisateur;

                i++;
            }

        } catch (SQLException ex) {
            System.out.println("Erreur d'insertion d'informations dans la Base de Données : " + ex.getMessage());
        }
        this.validate();
        System.out.println("test");
        

    }

    public void actionPerformed(ActionEvent evt) {
        String action = evt.getActionCommand();

        int temp = 0;

        if (action.equals(ACTION_QUITTER)) {
            System.exit(0);

        } else if (action.equals(ACTION_AJOUTER_FILM)) {
            Film film = new Film();
            this.afficherTable();
        } else if (action.equals(ACTION_AJOUTER_REAL)) {
            Realisateur real = new Realisateur();

        } else if (action.equals(ACTION_AJOUTER_GENRE)) {
            Genre genre = new Genre();
        }
    }
}


