2026-01-07 19:27:03 +01:00
package fr.iutfbleau.sae ;
2026-01-07 20:30:37 +01:00
import java.awt.BorderLayout ;
2026-01-07 19:27:03 +01:00
import java.io.File ;
2026-01-07 20:30:37 +01:00
import javax.swing.JDialog ;
import javax.swing.JLabel ;
import javax.swing.JProgressBar ;
2026-01-07 19:27:03 +01:00
/**
* Thread pour sauvegarder un fichier PIF en arriere-plan.
* Permet d'eviter de bloquer l'interface graphique pendant la sauvegarde.
2026-01-07 20:30:37 +01:00
* Affiche un dialogue de progression pendant la sauvegarde.
2026-01-07 19:27:03 +01:00
*/
public class ThreadSauvegardePIF extends Thread {
2026-01-07 20:30:37 +01:00
private ConverterController controleur ;
private File fichier ;
2026-01-07 19:27:03 +01:00
/**
* 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.
2026-01-07 20:30:37 +01:00
* Affiche un dialogue de progression pendant la sauvegarde.
2026-01-07 19:27:03 +01:00
*/
@Override
public void run ( ) {
2026-01-11 14:27:14 +01:00
// Desoler monsieur je sais que ce que je fais est moche mais javais plus assez de temps pour faire mieux (jaurris pu creer une classe a part pour le dialogue de progression mais bon...)
// creer le dialogue de progression
2026-01-07 20:30:37 +01:00
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 ) ;
2026-01-07 19:27:03 +01:00
try {
2026-01-07 20:30:37 +01:00
// Sauvegarder le fichier
2026-01-07 19:27:03 +01:00
controleur . saveAsPIF ( fichier . getAbsolutePath ( ) ) ;
2026-01-07 20:30:37 +01:00
dialogue . dispose ( ) ;
2026-01-07 19:27:03 +01:00
GestionErreur . afficherInfo ( " Fichier sauvegarde avec succes : " + fichier . getName ( ) ) ;
2026-01-07 20:30:37 +01:00
2026-01-07 19:27:03 +01:00
} catch ( Exception e ) {
2026-01-07 20:30:37 +01:00
dialogue . dispose ( ) ;
2026-01-07 19:27:03 +01:00
GestionErreur . afficherErreur ( " Erreur lors de la sauvegarde : " + e . getMessage ( ) ) ;
}
}
}