import java.awt.event.*;
import javax.swing.*;
import java.awt.*;
/**
 * Projet: PaintRevolution
 * <p>Titre :DialogueNouveauPanel.java </p>
 * <p>Description :Classe créant un composant d'interaction 
 *  pour la création du panel principal et le choix des couleurs</p>
 * <p>Copyright : Copyright (c) 2005</p>
 * <p>Société : IUT CHARLEMAGNE II</p>
 * @author VIGNERON GEOFFROY && GANGANELLI DORIAN
 * @version 3.0
 */

public class DialogueNouveauPanel implements ActionListener{
    
    /**
     * Fentre principale reliant le composant des election
     */
    private JFramePrincipale frame;
    
    /**
     * Panel dessinable
     */
    private DessinFigures dessin;
    
    /**
     * JLabel indiquant le libellé de saisie
     */
    private JLabel coul,couleurFigure,couleurTrace,couleurFond;
    
    /**
     * JButton permettant la créatio,l'annulation ou le choix d'une couleur
     */
    private JButton appliquer,annuler,parcourir,parcourir1,parcourir2;
    
    /**
     * Panel visualisant la couleur choisie par l'utilisateur
     */
    private JPanel panel,panel1,panel2;
    
    /**
     * Couleurs des differents composants
     */
    private  Color cfond,ctrace,cfigure,couleur;
    
    /**
     * Constructeur creant un componentDialog en fonction de la fenetre
     * principale
     * @param fenetre la fenetre principale
     */
    public DialogueNouveauPanel(JFramePrincipale fenetre){
        frame=fenetre;
        
        //creation des boutons
        dessin= new DessinFigures();
        appliquer=new JButton("Creer");
        annuler=new JButton("Annuler");
        parcourir=new JButton("Parcourir");
        parcourir1=new JButton("Parcourir");
        parcourir2=new JButton("Parcourir");
        
        //creation des labelS
        couleurFond=new JLabel("Couleur de fond :");
        couleurTrace=new JLabel("Couleur de trace :");
        couleurFigure=new JLabel("Couleur figure :");
        coul=new JLabel("Choix de vos couleur:");
        coul.setFont(new Font("font/verdana.ttf", Font.BOLD, 12));
        coul.setForeground(Color.red);
        couleurFond.setFont(new Font("font/verdana.ttf", Font.BOLD, 12));
        couleurTrace.setFont(new Font("font/verdana.ttf", Font.BOLD, 12));
        couleurFigure.setFont(new Font("font/verdana.ttf", Font.BOLD, 12));
        
        //creation des panels
        panel=new JPanel();
        panel.setBackground(Color.white);
        panel1=new JPanel();
        panel1.setBackground(Color.red);
        panel2=new JPanel();
        panel2.setBackground(Color.orange);
        
        //ajout des listeners
        parcourir.addActionListener(this);
        parcourir1.addActionListener(this);
        parcourir2.addActionListener(this);
        annuler.addActionListener(this);
        appliquer.addActionListener(this);
        
        //creation d'un ComponentDialog
        creationComponentDialog();
    }
    
    /**
     * Methode permettant l'interaction des boutons et
     * des actions à effectuer
     * @param e ActionEvent
     */
    public void actionPerformed(ActionEvent e){
        Object source=e.getSource();
        
        //couleur de fond
        if (source==parcourir){
            cfond = JColorChooser.showDialog((JFrame) frame, "Choix de la couleur de fond", Color.white);
            if(cfond==null)cfond=Color.white;
            panel.setBackground(cfond);
        }
        //couleur de trace
        if (source==parcourir1){
            ctrace = JColorChooser.showDialog((JFrame) frame, "Choix de la couleur de trace", Color.red);
            if(ctrace==null)ctrace=Color.red;
            panel1.setBackground(ctrace);
        }
        //couleur de figure
        if (source==parcourir2){
            cfigure = JColorChooser.showDialog((JFrame) frame, "Choix de la couleur de la figure", Color.orange);
            if(cfigure==null)cfigure=Color.orange;
            panel2.setBackground(cfigure);
        }
    }
    /**
     * Methode permettant de creer un componentDialog
     *
     */
    private  void creationComponentDialog() { 
        // Composant graphiques 
        Object[] message = new Object[10]; 
        message[0] = coul; 
        message[1] = couleurFond;
        message[2] = panel;
        message[3] = parcourir;
        message[4] = couleurTrace; 
        message[5] = panel1;
        message[6] = parcourir1;
        message[7] = couleurFigure; 
        message[8] = panel2;
        message[9] = parcourir2;
        // Boutons Options 
        String[] options ={"creer", "annuler", }; 
        int result = JOptionPane.showOptionDialog( 
                frame, //la fenetre comprenant le componentDialog 
                message,// le tableau de messages 
                "Nouveau Dessin", // le titre du dialogue 
                JOptionPane.DEFAULT_OPTION,// option type 
                JOptionPane.INFORMATION_MESSAGE,// message type 
                null, // icone optionelle 
                options,// boutons options 
                options[1] //bouton par default 
        ); 
        
        //Resultat en fonction de l'utilisateur
        switch(result) { 
        case 0: // creer
            if (cfond==null)cfond=Color.white;
            if (cfigure==null)cfigure=Color.orange;
            if (ctrace==null)ctrace=Color.red;
            
            //creation du panel principale comprenant le dessin,la barre outilse et la barre operations 
            PanelJFramePrincipale jp = new PanelJFramePrincipale(frame,new BarreOutils(frame,dessin,cfond,ctrace,cfigure),cfond);
            dessin=jp.getDessin();
            dessin.setBackground(cfond);
            
            //ajout du panelprincipal à la fenetre principale
            frame.setContentPane(jp);
            frame.getMenu().setCreation(true);
            frame.getMenu().setOuverture(false);
            frame.getMenu().setEnabledBarre(true);
            JOptionPane.showMessageDialog(frame, "Creation en cours"); 
            break; 
            
        case 1: // annuler
            JOptionPane.showMessageDialog(frame, "Aucun dessin crée"); 
            break; 
            
        default: 
            break; 
        } 
    } 
}
