1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
class barreProgressionSwingWorker extends JDialog {
private static final long serialVersionUID = -6419612858688347140L;
private JLabel labelText;
private JProgressBar progressBar;
private List<Article> _listArticles;
public class MonSwingWorker extends SwingWorker<Integer, String> {
public MonSwingWorker() {
/* On ajoute un écouteur de barre de progression. */
addPropertyChangeListener(new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if("progress".equals(evt.getPropertyName())) {
progressBar.setValue((Integer) evt.getNewValue());
progressBar.setString ("Progression en cours " + ((Integer)evt.getNewValue()).toString() + "%");
}
}
});
}
@Override
public Integer doInBackground() {
return recalculStock(0, 100);
}
private int recalculStock(double progressStart, double progressEnd) {
double step = (progressEnd - progressStart) / _listArticles.size();
for (Article article:_listArticles){
try {
progressStart += step;
publish(article.toString());
article.setQteStock(article.getCalculQteEnStock());
ArticleIO.updateArticle(article);
setProgress((int) progressStart);
} catch (ControleurException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return _listArticles.size();
}
@Override
protected void process(List<String> strings) {
/* Affichage des publications reçues dans le textarea. */
for(String s : strings)
labelText.setText("Article en cours de traitement: " + s);
}
@Override
protected void done() {
/* Le traitement est terminé. */
barreProgressionSwingWorker.this.dispose();
JOptionPane.showMessageDialog(
ViewInterface.getMainFrame(),
"Mise à jour des stocks effectuée avec succés.",
"Information",
JOptionPane.INFORMATION_MESSAGE);
}
public barreProgressionSwingWorker(List<Article> listArticles) {
/* Construction de l'interface graphique. */
super(ViewInterface.getMainFrame(), "Mise à jour stocks",false);
Dimension dimension = new Dimension(350,80);
this.setPreferredSize(dimension);
this.setResizable(false);
_listArticles = listArticles;
setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
labelText = new JLabel();
labelText.setHorizontalAlignment(SwingConstants.CENTER);
progressBar = new JProgressBar(0,99);
progressBar.setStringPainted(true);
progressBar.setString ("Progression 1%");
JPanel content = new JPanel(new BorderLayout());
content.add(labelText,BorderLayout.CENTER);
JPanel south = new JPanel(new BorderLayout());
south.add(progressBar);
content.add(south, BorderLayout.SOUTH);
setContentPane(content);
pack();
setVisible(true);
Utils.centrer(this);
}
} |
Partager