package model.progressbar; import java.awt.Dimension; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JProgressBar; import net.miginfocom.swing.MigLayout; import model.progressbar.interfaces.IProgressBar; import model.util.WindowUtils; public class CounterProgressBar extends IProgressBar { /** * true if progressbar is running, else false */ private boolean en; /** * closing delay */ private int closeDelay; /** * the current file */ private int currFile; /** * max number of files */ private int maxFiles; /** * Constructor */ public CounterProgressBar() { super(); this.closeDelay = 200; } /* * (non-Javadoc) * * @see java.lang.Thread#run() */ @Override public void run() { // if less than 10 files, dont show a progress bar if (maxFiles < 10) return; JProgressBar pb = new JProgressBar(0, maxFiles); final JFrame frame = new JFrame(); JLabel statusJL = mls.generateJLabel("statusJL"); JLabel progressJL = mls.generateJLabel("progressJL"); frame.setPreferredSize(new Dimension(350, 140)); frame.setLayout(new MigLayout("insets 5", "[grow][shrink]", "[shrink][grow][shrink]")); frame.add(progressJL, "span 2, wrap"); frame.add(pb, "grow"); frame.add(cancelB, "gapleft 5, grow, wrap"); frame.add(statusJL, "span 2"); frame.pack(); pb.setStringPainted(true); frame.pack(); frame.setVisible(true); frame.setLocation(WindowUtils.getCenteredWindowCoordinates(frame)); currFile = 0; pb.setValue(0); statusJL.setText("file: " + currFile + "/" + maxFiles); en = true; while (en) { pb.setValue(currFile); statusJL.setText("file: " + currFile + "/" + maxFiles); } Timer timer = new Timer(); timer.schedule(new TimerTask() { @Override public void run() { frame.dispose(); } }, closeDelay); } /* * (non-Javadoc) * * @see model.progressbar.interfaces.IProgressBar#nextStep() */ @Override public void nextStep() { currFile++; } /* * (non-Javadoc) * * @see model.progressbar.IProgressBar#stopBar() */ @Override public void stopBar() { en = false; } /* * (non-Javadoc) * * @see model.progressbar.interfaces.IProgressBar#setMax(int) */ @Override public void setMax(int max) { this.maxFiles = max; } }