c217d06eeb
* added SeasonEpisodeSimilarityMetric which detects similarity based on known patterns * moved everything similarity/maching related to net.sourceforge.filebot.similarity Refactoring: * refactoring of all the matching-related stuff in rename panel * remove name2file and file2name maching selection because new maching algorithm works 2-ways from the start and doesn't need that hack * added console handler to ui logger that will log ui warnings and ui errors to console too * some refactoring on all SimilarityMetrics * use Interrupts in analyze tools to abort operation * refactoring of the rename process, if something goes wrong, we will now revert all already renamed files to their original filenames * static LINE_SEPARATOR pattern in FileTransferablePolicy * new maching icon, removed old ones
102 lines
2.0 KiB
Java
102 lines
2.0 KiB
Java
|
|
package net.sourceforge.tuned.ui;
|
|
|
|
|
|
import java.awt.Window;
|
|
import java.awt.event.ActionEvent;
|
|
|
|
import javax.swing.AbstractAction;
|
|
import javax.swing.Action;
|
|
import javax.swing.Icon;
|
|
import javax.swing.JButton;
|
|
import javax.swing.JDialog;
|
|
import javax.swing.JLabel;
|
|
import javax.swing.JPanel;
|
|
import javax.swing.JProgressBar;
|
|
|
|
import net.miginfocom.swing.MigLayout;
|
|
|
|
|
|
public class ProgressDialog extends JDialog {
|
|
|
|
private final JProgressBar progressBar = new JProgressBar(0, 100);
|
|
private final JLabel iconLabel = new JLabel();
|
|
private final JLabel headerLabel = new JLabel();
|
|
|
|
private final Cancellable cancellable;
|
|
|
|
|
|
public ProgressDialog(Window owner, Cancellable cancellable) {
|
|
super(owner, ModalityType.DOCUMENT_MODAL);
|
|
|
|
this.cancellable = cancellable;
|
|
|
|
// disable window close button
|
|
setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
|
|
|
|
headerLabel.setFont(headerLabel.getFont().deriveFont(18f));
|
|
progressBar.setIndeterminate(true);
|
|
progressBar.setStringPainted(true);
|
|
|
|
JPanel c = (JPanel) getContentPane();
|
|
|
|
c.setLayout(new MigLayout("insets dialog, nogrid, fill"));
|
|
|
|
c.add(iconLabel, "h pref!, w pref!");
|
|
c.add(headerLabel, "gap 3mm, wrap paragraph");
|
|
c.add(progressBar, "grow, wrap paragraph");
|
|
|
|
c.add(new JButton(cancelAction), "align center");
|
|
|
|
setSize(240, 155);
|
|
|
|
setLocation(TunedUtil.getPreferredLocation(this));
|
|
}
|
|
|
|
|
|
public void setIcon(Icon icon) {
|
|
iconLabel.setIcon(icon);
|
|
}
|
|
|
|
|
|
public void setNote(String text) {
|
|
progressBar.setString(text);
|
|
}
|
|
|
|
|
|
@Override
|
|
public void setTitle(String text) {
|
|
super.setTitle(text);
|
|
headerLabel.setText(text);
|
|
}
|
|
|
|
|
|
public JProgressBar getProgressBar() {
|
|
return progressBar;
|
|
}
|
|
|
|
|
|
public void close() {
|
|
setVisible(false);
|
|
dispose();
|
|
}
|
|
|
|
protected final Action cancelAction = new AbstractAction("Cancel") {
|
|
|
|
@Override
|
|
public void actionPerformed(ActionEvent e) {
|
|
cancellable.cancel();
|
|
}
|
|
};
|
|
|
|
|
|
public static interface Cancellable {
|
|
|
|
boolean isCancelled();
|
|
|
|
|
|
boolean cancel();
|
|
}
|
|
|
|
}
|