1
0
mirror of https://github.com/mitb-archive/filebot synced 2024-12-23 16:28:51 -05:00

Improved UI

This commit is contained in:
Reinhard Pointner 2016-05-02 00:32:40 +08:00
parent 8c8695d528
commit 7e272915e5

View File

@ -18,6 +18,7 @@ import java.beans.PropertyChangeListener;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.Charset; import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Comparator; import java.util.Comparator;
import java.util.List; import java.util.List;
import java.util.concurrent.CancellationException; import java.util.concurrent.CancellationException;
@ -40,16 +41,6 @@ import javax.swing.ListModel;
import javax.swing.SwingUtilities; import javax.swing.SwingUtilities;
import javax.swing.border.LineBorder; import javax.swing.border.LineBorder;
import net.filebot.ResourceManager;
import net.filebot.Settings;
import net.filebot.subtitle.SubtitleFormat;
import net.filebot.ui.subtitle.SubtitlePackage.Download.Phase;
import net.filebot.ui.transfer.DefaultTransferHandler;
import net.filebot.util.ExceptionUtilities;
import net.filebot.util.ui.ListView;
import net.filebot.util.ui.SwingUI;
import net.filebot.vfs.MemoryFile;
import net.miginfocom.swing.MigLayout;
import ca.odell.glazedlists.BasicEventList; import ca.odell.glazedlists.BasicEventList;
import ca.odell.glazedlists.EventList; import ca.odell.glazedlists.EventList;
import ca.odell.glazedlists.FilterList; import ca.odell.glazedlists.FilterList;
@ -62,6 +53,17 @@ import ca.odell.glazedlists.matchers.MatcherEditor;
import ca.odell.glazedlists.swing.DefaultEventListModel; import ca.odell.glazedlists.swing.DefaultEventListModel;
import ca.odell.glazedlists.swing.DefaultEventSelectionModel; import ca.odell.glazedlists.swing.DefaultEventSelectionModel;
import ca.odell.glazedlists.swing.TextComponentMatcherEditor; import ca.odell.glazedlists.swing.TextComponentMatcherEditor;
import net.filebot.ResourceManager;
import net.filebot.Settings;
import net.filebot.UserFiles;
import net.filebot.subtitle.SubtitleFormat;
import net.filebot.ui.subtitle.SubtitlePackage.Download.Phase;
import net.filebot.ui.transfer.DefaultTransferHandler;
import net.filebot.util.ExceptionUtilities;
import net.filebot.util.ui.ListView;
import net.filebot.util.ui.SwingUI;
import net.filebot.vfs.MemoryFile;
import net.miginfocom.swing.MigLayout;
class SubtitleDownloadComponent extends JComponent { class SubtitleDownloadComponent extends JComponent {
@ -300,7 +302,7 @@ class SubtitleDownloadComponent extends JComponent {
// just use default values when we can't use a JFC with accessory component (also Swing OSX LaF doesn't seem to support JFileChooser::setAccessory) // just use default values when we can't use a JFC with accessory component (also Swing OSX LaF doesn't seem to support JFileChooser::setAccessory)
if (Settings.isMacApp()) { if (Settings.isMacApp()) {
// COCOA || AWT // COCOA || AWT
selectedOutputFolder = showOpenDialogSelectFolder(null, "Export Subtitles to folder", new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "Export")); selectedOutputFolder = showOpenDialogSelectFolder(null, "Export Subtitles to Folder (SubRip / UTF-8)", new ActionEvent(this, ActionEvent.ACTION_PERFORMED, "Export"));
} else { } else {
// Swing // Swing
SubtitleFileChooser sfc = new SubtitleFileChooser(); SubtitleFileChooser sfc = new SubtitleFileChooser();
@ -314,6 +316,8 @@ class SubtitleDownloadComponent extends JComponent {
} }
if (selectedOutputFolder != null) { if (selectedOutputFolder != null) {
List<File> output = new ArrayList<File>();
for (Object object : selection) { for (Object object : selection) {
MemoryFile file = (MemoryFile) object; MemoryFile file = (MemoryFile) object;
@ -323,7 +327,11 @@ class SubtitleDownloadComponent extends JComponent {
SubtitleFormat targetFormat = selectedFormat.getFilter().accept(file.getName()) ? null : selectedFormat; // check if format conversion is necessary SubtitleFormat targetFormat = selectedFormat.getFilter().accept(file.getName()) ? null : selectedFormat; // check if format conversion is necessary
writeFile(exportSubtitles(file, targetFormat, selectedTimingOffset, selectedEncoding), destination); writeFile(exportSubtitles(file, targetFormat, selectedTimingOffset, selectedEncoding), destination);
output.add(destination);
} }
// reveal exported files
UserFiles.revealFiles(output);
} }
} catch (Exception e) { } catch (Exception e) {
log.log(Level.WARNING, e.getMessage(), e); log.log(Level.WARNING, e.getMessage(), e);
@ -439,38 +447,12 @@ class SubtitleDownloadComponent extends JComponent {
list.setSelectedIndex(index); list.setSelectedIndex(index);
} }
final Object[] selection = list.getSelectedValuesList().toArray(); Object[] selection = list.getSelectedValuesList().toArray();
if (selection.length > 0) { if (selection.length > 0) {
JPopupMenu contextMenu = new JPopupMenu(); JPopupMenu contextMenu = new JPopupMenu();
contextMenu.add(newAction("Preview", ResourceManager.getIcon("action.find"), evt -> open(selection))); // Open
// Open contextMenu.add(newAction("Save As...", ResourceManager.getIcon("action.save"), evt -> save(selection))); // Save As...
contextMenu.add(new AbstractAction("Preview", ResourceManager.getIcon("action.find")) { contextMenu.add(newAction("Export...", ResourceManager.getIcon("action.export"), evt -> export(selection))); // Export...
@Override
public void actionPerformed(ActionEvent evt) {
open(selection);
}
});
// Save As...
contextMenu.add(new AbstractAction("Save As...", ResourceManager.getIcon("action.save")) {
@Override
public void actionPerformed(ActionEvent evt) {
save(selection);
}
});
// Export...
contextMenu.add(new AbstractAction("Export...", ResourceManager.getIcon("action.export")) {
@Override
public void actionPerformed(ActionEvent evt) {
export(selection);
}
});
contextMenu.show(e.getComponent(), e.getX(), e.getY()); contextMenu.show(e.getComponent(), e.getX(), e.getY());
} }
} }