Files
SAE32_2025/src/fr/iutfbleau/sae/ThreadSauvegardePIF.java
T

65 lines
2.3 KiB
Java
Raw Normal View History

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());
}
}
}