package model.progressbar;
import java.awt.Dimension;
import java.awt.Point;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
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.MP3GainThread;
import model.util.WindowUtils;
public class ChangeAlbumGainProgressBar extends MP3GainThread {
/**
* the given inputstream
*/
private InputStream is;
/**
* number of max files
*/
private int files;
/**
* closing delay
*/
private int delay;
/**
* Constructor
*
* @param files
* number of files
* @param delay
* closing delay
*/
public ChangeAlbumGainProgressBar(int files, int delay) {
super();
this.files = files;
this.delay = delay;
}
/*
* (non-Javadoc)
*
* @see java.lang.Thread#run()
*/
@Override
public void run() {
try {
// if only less than 3 files, do not open a progress bar
if (files < 3)
return;
JProgressBar pb = new JProgressBar(0, files);
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.setVisible(true);
Point p = WindowUtils.getCenteredWindowCoordinates(frame);
frame.setLocation(p);
int currFile = 0;
pb.setValue(0);
statusJL.setText(currFile + "/" + files);
BufferedReader br = new BufferedReader(new InputStreamReader(this.is));
String line = br.readLine();
while ((line = br.readLine()) != null) {
if (line.trim().equalsIgnoreCase("done")) {
currFile++;
pb.setValue(currFile);
statusJL.setText(currFile + "/" + files);
}
}
Timer timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
frame.dispose();
}
}, delay);
} catch (IOException e1) {
e1.printStackTrace();
}
}
/*
* (non-Javadoc)
*
* @see
* model.progressbar.interfaces.MP3GainThread#setInputStream(java.io.InputStream
* )
*/
@Override
public void setInputStream(InputStream is) {
// unused;
}
/*
* (non-Javadoc)
*
* @see
* model.progressbar.interfaces.MP3GainThread#setErrorStream(java.io.InputStream
* )
*/
@Override
public void setErrorStream(InputStream es) {
this.is = es;
}
/*
* (non-Javadoc)
*
* @see model.progressbar.interfaces.IProgressBar#stopBar()
*/
@Override
public void stopBar() {
}
/*
* (non-Javadoc)
*
* @see model.progressbar.interfaces.IProgressBar#nextStep()
*/
@Override
public void nextStep() {
}
/*
* (non-Javadoc)
*
* @see model.progressbar.interfaces.IProgressBar#setMax(int)
*/
@Override
public void setMax(int max) {
}
/*
* (non-Javadoc)
*
* @see model.progressbar.interfaces.MP3GainThread#reset()
*/
@Override
public void reset() {
}
@Override
public boolean isRunning() {
return false;
}
}