import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.awt.*;
import javax.swing.*;
/**
 * Projet :PaintRevolution
 * <p>Titre :Sauvegarder.java </p>
 * <p>Description :Classe permettant de sauvegarder le panel en objet serialisable</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 Sauvegarder extends JFileChooser{
    /**
     * Fenetre principale contenant l'appel à la sauvegarde
     */
    private JFramePrincipale fenetre;
    
    /**
     * Panel principale contenant le panel dessinable
     */
    private PanelJFramePrincipale panel;
    
    /**
     * Constructeur créant un JFileChooser permettant la sauvegarde
     * d'un dessin
     * @param frame fenetre principale
     * @param pjp panel princiâle
     */
    public Sauvegarder(JFramePrincipale frame,PanelJFramePrincipale pjp){
        
        fenetre=frame;
        panel=pjp;
        
        //panel dessinable
        DessinFigures dessin=panel.getDessin();
        //creation extension de fichier
        ExtensionFichier dess = new ExtensionFichier(new String[] { "dessin" }
        							,"Format dessin (*.dessin)");
        //ajout extension
        this.addChoosableFileFilter(dess);
        //selection fichier et repertoire
        this.setFileSelectionMode( JFileChooser.FILES_AND_DIRECTORIES);
        int test = this.showSaveDialog(fenetre);
        //fichier selectionné
        if ( test == JFileChooser.APPROVE_OPTION ) {
            File f = this.getSelectedFile();
            
            //fixe l'extension du fichier
            f= new File(f.getPath() + ".dessin");
            
            //traitement sur la sauvegarde
            try{
                FileOutputStream fileOUT = new FileOutputStream(f);
                ObjectOutputStream objOUT = new ObjectOutputStream( fileOUT );
                objOUT.writeObject( dessin.figures );
                objOUT.close();
                dessin.repaint();
                fenetre.setTitle(("PaintRevolution-"+f.getName()));
                JOptionPane.showMessageDialog(fenetre,"Sauvegarde reussie: "+f.getPath(),"Enregistrement",JOptionPane.INFORMATION_MESSAGE);
            }catch (IOException io){
                JOptionPane.showMessageDialog(fenetre,"Erreur enregistrement","Enregistrement",JOptionPane.WARNING_MESSAGE);
            }
        }
    }
}



