package fr.iutfbleau.sae; import java.awt.BorderLayout; import java.io.File; import javax.swing.JDialog; import javax.swing.JLabel; import javax.swing.JProgressBar; /** * Thread pour sauvegarder un fichier PIF en arriere-plan. * Permet d'eviter de bloquer l'interface graphique pendant la sauvegarde. * Affiche un dialogue de progression pendant la sauvegarde. */ public class ThreadSauvegardePIF extends Thread { private ConverterController controleur; private File fichier; /** * Construit un nouveau thread de sauvegarde. * * @param controleur le controleur qui gere la sauvegarde * @param fichier le fichier dans lequel sauvegarder */ public ThreadSauvegardePIF(ConverterController controleur, File fichier) { this.controleur = controleur; this.fichier = fichier; } /** * Execute la sauvegarde du fichier PIF. * Affiche un dialogue de progression pendant la sauvegarde. */ @Override public void run() { // Creer le dialogue de progression JDialog dialogue = new JDialog(); dialogue.setTitle("Sauvegarde"); dialogue.setModal(false); dialogue.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialogue.setSize(300, 100); dialogue.setLocationRelativeTo(null); dialogue.setLayout(new BorderLayout(10, 10)); JLabel label = new JLabel("Sauvegarde en cours...", JLabel.CENTER); dialogue.add(label, BorderLayout.CENTER); JProgressBar barre = new JProgressBar(); barre.setIndeterminate(true); dialogue.add(barre, BorderLayout.SOUTH); dialogue.setVisible(true); try { // Sauvegarder le fichier controleur.saveAsPIF(fichier.getAbsolutePath()); dialogue.dispose(); GestionErreur.afficherInfo("Fichier sauvegarde avec succes : " + fichier.getName()); } catch (Exception e) { dialogue.dispose(); GestionErreur.afficherErreur("Erreur lors de la sauvegarde : " + e.getMessage()); } } }