mirror of
https://github.com/mitb-archive/filebot
synced 2024-11-11 11:55:03 -05:00
792c729d54
* use MigLayout in AnalyzePanel and ProgressDialog
130 lines
2.8 KiB
Java
130 lines
2.8 KiB
Java
|
|
package net.sourceforge.tuned.ui;
|
|
|
|
|
|
import java.awt.Window;
|
|
import java.awt.event.ActionEvent;
|
|
import java.awt.event.ActionListener;
|
|
import java.beans.PropertyChangeEvent;
|
|
|
|
import javax.swing.Icon;
|
|
import javax.swing.SwingWorker;
|
|
import javax.swing.Timer;
|
|
|
|
|
|
public class SwingWorkerProgressMonitor {
|
|
|
|
public static final String PROPERTY_TITLE = "title";
|
|
public static final String PROPERTY_NOTE = "note";
|
|
public static final String PROPERTY_PROGRESS_STRING = "progress string";
|
|
|
|
private final SwingWorker<?, ?> worker;
|
|
private final ProgressDialog progressDialog;
|
|
|
|
private int millisToPopup = 2000;
|
|
|
|
|
|
public SwingWorkerProgressMonitor(Window owner, SwingWorker<?, ?> worker, Icon progressDialogIcon) {
|
|
this.worker = worker;
|
|
|
|
progressDialog = new ProgressDialog(owner);
|
|
progressDialog.setIcon(progressDialogIcon);
|
|
|
|
worker.addPropertyChangeListener(listener);
|
|
|
|
progressDialog.getCancelButton().addActionListener(cancelListener);
|
|
}
|
|
|
|
|
|
public ProgressDialog getProgressDialog() {
|
|
return progressDialog;
|
|
}
|
|
|
|
|
|
public void setMillisToPopup(int millisToPopup) {
|
|
this.millisToPopup = millisToPopup;
|
|
}
|
|
|
|
|
|
public int getMillisToPopup() {
|
|
return millisToPopup;
|
|
}
|
|
|
|
private final SwingWorkerPropertyChangeAdapter listener = new SwingWorkerPropertyChangeAdapter() {
|
|
|
|
private Timer popupTimer = null;
|
|
|
|
|
|
@Override
|
|
public void propertyChange(PropertyChangeEvent evt) {
|
|
if (evt.getPropertyName().equals(PROPERTY_PROGRESS_STRING))
|
|
progressString(evt);
|
|
else if (evt.getPropertyName().equals(PROPERTY_NOTE))
|
|
note(evt);
|
|
else if (evt.getPropertyName().equals(PROPERTY_TITLE))
|
|
title(evt);
|
|
else
|
|
super.propertyChange(evt);
|
|
}
|
|
|
|
|
|
@Override
|
|
protected void started(PropertyChangeEvent evt) {
|
|
popupTimer = TunedUtil.invokeLater(millisToPopup, new Runnable() {
|
|
|
|
@Override
|
|
public void run() {
|
|
if (!worker.isDone() && !progressDialog.isVisible()) {
|
|
progressDialog.setVisible(true);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
@Override
|
|
protected void done(PropertyChangeEvent evt) {
|
|
if (popupTimer != null) {
|
|
popupTimer.stop();
|
|
}
|
|
|
|
progressDialog.close();
|
|
}
|
|
|
|
|
|
@Override
|
|
protected void progress(PropertyChangeEvent evt) {
|
|
progressDialog.getProgressBar().setValue((Integer) evt.getNewValue());
|
|
}
|
|
|
|
|
|
protected void progressString(PropertyChangeEvent evt) {
|
|
progressDialog.getProgressBar().setString(evt.getNewValue().toString());
|
|
}
|
|
|
|
|
|
protected void note(PropertyChangeEvent evt) {
|
|
progressDialog.setNote(evt.getNewValue().toString());
|
|
}
|
|
|
|
|
|
protected void title(PropertyChangeEvent evt) {
|
|
String title = evt.getNewValue().toString();
|
|
|
|
progressDialog.setHeader(title);
|
|
progressDialog.setTitle(title);
|
|
}
|
|
|
|
};
|
|
|
|
private final ActionListener cancelListener = new ActionListener() {
|
|
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
worker.cancel(false);
|
|
}
|
|
|
|
};
|
|
|
|
}
|