import java.awt.Color;
import java.awt.Graphics;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;

import javax.swing.JFileChooser;
import javax.swing.JOptionPane;



/**
 * Projet :PaintRevolution
 * <p>Titre :Chargement.java </p>
 * <p>Description :Classe permettant de charger un objet serialisé </p>
 * <p>Copyright : Copyright (c) 2005</p>
 * <p>Société : IUT CHARLEMAGNE NANCY II</p>
 * @author VIGNERON GEOFFROY && GANGANELLI DORIAN
 * @version 3.0
 */
public class Chargement extends JFileChooser{
    /**
     * La fenetre principale contenant le chargement 
     */
    private JFramePrincipale fenetre;
    
    
    /**
     * Constructeur de la classe permettant de charger un dessin 
     * à partir d'un JFileChooser
     * @param frame la fenetre principale d'où sera appelé le chargement
     */
    public Chargement(JFramePrincipale frame){
        fenetre=frame;
        
        //creation panel dessinable
        DessinFigures dessin = new DessinFigures();
        
        //creation panel contenant les barres outils,operations et le panel dessinable
        PanelJFramePrincipale jp = new PanelJFramePrincipale(fenetre,new BarreOutils(fenetre,dessin,Color.white,Color.red,Color.orange),Color.white);
        dessin=jp.getDessin();
        dessin.setBackground(Color.white);
        
        //détermination et ajout des extensions du JFileChooser
        ExtensionFichier all = new ExtensionFichier(new String[] { "dessin"}, "Tous les dessins (*.dessin)");
        this.addChoosableFileFilter(all);
        this.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
        
        //choix et ouverture du fichier à charger
        try{
            int test = this.showOpenDialog(fenetre);
            if ( test == JFileChooser.APPROVE_OPTION ) {
                File f = this.getSelectedFile();
                if (!all.accept(f)){
                    JOptionPane.showMessageDialog(fenetre,"Le format du fichier n'est pas un dessin","Erreur chargement",JOptionPane.WARNING_MESSAGE);
                }
                else{
                    FileInputStream fileIN = new FileInputStream( f );
                    ObjectInputStream objIN = new ObjectInputStream( fileIN );
                    dessin.chargerFigureSauvegardee( ((FigureColoree[])objIN.readObject()) ) ;
                    fenetre.setContentPane(jp);
                    fenetre.setTitle("PaintRevolution-"+f.getName());
                    objIN.close();
                }
            }
        }catch(Exception excep){
            JOptionPane.showMessageDialog(frame,"Impossible d'ouvrir ce fichier","Erreur chargement",JOptionPane.WARNING_MESSAGE);  
        }
    }
}
