/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package org.dlect.update.ui;
import org.dlect.update.Pair;
import java.io.File;
import java.util.List;
import javax.swing.JProgressBar;
import javax.swing.SwingUtilities;
import javax.swing.SwingWorker;
import org.dlect.update.UpdateImpl;
/**
*
* @author lee
*/
public abstract class DownloadUpdateWorker extends SwingWorker<File, Pair<String, Integer>> implements UpdateImpl.Listener {
private final JProgressBar p;
public DownloadUpdateWorker(JProgressBar p) {
this.p = p;
p.setStringPainted(true);
p.setString("");
}
@Override
protected void process(List<Pair<String, Integer>> chunks) {
Pair<String, Integer> pair = chunks.get(chunks.size() - 1);
if (pair.getA() != null && !pair.getA().isEmpty()) {
p.setString(pair.getA());
}
p.setValue(pair.getValue());
}
@Override
protected abstract void done();
@Override
public void setMax(final int max) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
p.setMaximum(max);
}
});
}
@Override
public void update(Pair<String, Integer> s) {
publish(s);
}
@Override
protected File doInBackground() throws Exception {
UpdateImpl.addListener(this);
try {
return UpdateImpl.downloadUpdate();
} finally {
UpdateImpl.removeListener(this);
}
}
}