diff --git a/source/net/sourceforge/filebot/ui/FileBotList.java b/source/net/sourceforge/filebot/ui/FileBotList.java index 5c779b82..9252d89d 100644 --- a/source/net/sourceforge/filebot/ui/FileBotList.java +++ b/source/net/sourceforge/filebot/ui/FileBotList.java @@ -46,8 +46,8 @@ public class FileBotList extends JPanel implements Saveable, TransferablePolicyS private TransferablePolicy transferablePolicy = new NullTransferablePolicy(); - public FileBotList(boolean enableDrop, boolean enableDrag, boolean initRemoveAction) { - this(enableDrop, enableDrag, initRemoveAction, true); + public FileBotList(boolean enableDrop, boolean enableDrag, boolean enableRemoveAction) { + this(enableDrop, enableDrag, enableRemoveAction, true); } @@ -65,6 +65,7 @@ public class FileBotList extends JPanel implements Saveable, TransferablePolicyS list.setCellRenderer(new FancyListCellRenderer()); list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + add(listScrollPane, BorderLayout.CENTER); ImportHandler importHander = null; diff --git a/source/net/sourceforge/filebot/ui/FileBotPanelSelectionList.java b/source/net/sourceforge/filebot/ui/FileBotPanelSelectionList.java index fa080cd9..b2ecf9ec 100644 --- a/source/net/sourceforge/filebot/ui/FileBotPanelSelectionList.java +++ b/source/net/sourceforge/filebot/ui/FileBotPanelSelectionList.java @@ -32,7 +32,7 @@ import net.sourceforge.tuned.ui.GradientStyle; import net.sourceforge.tuned.ui.SimpleListModel; -public class FileBotPanelSelectionList extends JList { +class FileBotPanelSelectionList extends JList { private static final int SELECTDELAY_ON_DRAG_OVER = 300; diff --git a/source/net/sourceforge/filebot/ui/FileBotTree.java b/source/net/sourceforge/filebot/ui/FileBotTree.java index 0d00b9a0..240c7082 100644 --- a/source/net/sourceforge/filebot/ui/FileBotTree.java +++ b/source/net/sourceforge/filebot/ui/FileBotTree.java @@ -49,8 +49,11 @@ public class FileBotTree extends JTree implements TransferablePolicySupport { public void clear() { - DefaultMutableTreeNode root = (DefaultMutableTreeNode) getModel().getRoot(); + DefaultTreeModel model = (DefaultTreeModel) getModel(); + DefaultMutableTreeNode root = (DefaultMutableTreeNode) model.getRoot(); + root.removeAllChildren(); + model.reload(root); } @@ -194,7 +197,7 @@ public class FileBotTree extends JTree implements TransferablePolicySupport { Desktop.getDesktop().open(file); } catch (Exception e) { MessageManager.showWarning(e.getMessage()); - Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.toString(), e); + Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.WARNING, e.getMessage()); } } } diff --git a/source/net/sourceforge/filebot/ui/FileBotWindow.java b/source/net/sourceforge/filebot/ui/FileBotWindow.java index 7b11f9be..d1eab5b5 100644 --- a/source/net/sourceforge/filebot/ui/FileBotWindow.java +++ b/source/net/sourceforge/filebot/ui/FileBotWindow.java @@ -69,7 +69,9 @@ public class FileBotWindow extends JFrame implements ListSelectionListener { cardLayout.show(pagePanel, currentPanel.getTitle()); JComponent c = (JComponent) getContentPane(); - c.updateUI(); + + c.revalidate(); + c.repaint(); Settings.getSettings().putInt(Settings.SELECTED_PANEL, selectionListPanel.getSelectedIndex()); } diff --git a/source/net/sourceforge/filebot/ui/HeaderPanel.java b/source/net/sourceforge/filebot/ui/HeaderPanel.java index 58ceebdc..62633bd6 100644 --- a/source/net/sourceforge/filebot/ui/HeaderPanel.java +++ b/source/net/sourceforge/filebot/ui/HeaderPanel.java @@ -20,7 +20,7 @@ import net.sourceforge.tuned.ui.notification.SeparatorBorder; import net.sourceforge.tuned.ui.notification.SeparatorBorder.Position; -public class HeaderPanel extends JPanel { +class HeaderPanel extends JPanel { private JLabel titleLabel = new JLabel(); diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/FileTree.java b/source/net/sourceforge/filebot/ui/panel/analyze/FileTree.java index 2d41edc0..14e16819 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/FileTree.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/FileTree.java @@ -5,12 +5,15 @@ package net.sourceforge.filebot.ui.panel.analyze; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.SwingWorker; import javax.swing.tree.DefaultMutableTreeNode; +import javax.swing.tree.DefaultTreeModel; +import javax.swing.tree.TreeNode; import javax.swing.tree.TreePath; import net.sourceforge.filebot.ui.FileBotTree; @@ -19,7 +22,7 @@ import net.sourceforge.filebot.ui.transfer.FileTransferable; import net.sourceforge.filebot.ui.transfer.TransferablePolicyImportHandler; -public class FileTree extends FileBotTree { +class FileTree extends FileBotTree { public static final String LOADING_PROPERTY = "loading"; public static final String CONTENT_PROPERTY = "content"; @@ -28,7 +31,7 @@ public class FileTree extends FileBotTree { public FileTree() { - FileTreeTransferPolicy transferPolicy = new FileTreeTransferPolicy((DefaultMutableTreeNode) getModel().getRoot()); + FileTreeTransferPolicy transferPolicy = new FileTreeTransferPolicy(this); transferPolicy.addPropertyChangeListener(LOADING_PROPERTY, new LoadingPropertyChangeListener()); setTransferablePolicy(transferPolicy); @@ -37,15 +40,24 @@ public class FileTree extends FileBotTree { public void removeTreeItems(TreePath paths[]) { - firePropertyChange(LOADING_PROPERTY, null, true); + List changedNodes = new ArrayList(paths.length); for (TreePath element : paths) { DefaultMutableTreeNode node = (DefaultMutableTreeNode) (element.getLastPathComponent()); - node.removeFromParent(); + + if (!node.isRoot()) { + changedNodes.add(node.getParent()); + node.removeFromParent(); + } + } + + DefaultTreeModel model = (DefaultTreeModel) getModel(); + + for (TreeNode treeNode : changedNodes) { + model.reload(treeNode); } contentChanged(); - firePropertyChange(LOADING_PROPERTY, null, false); } @@ -68,14 +80,11 @@ public class FileTree extends FileBotTree { super.clear(); - if (!loading) { - contentChanged(); - } - // else, contentChanged() will be called after when loading is finished + contentChanged(); } - private void contentChanged() { + void contentChanged() { synchronized (this) { if (postProcessor != null) postProcessor.cancel(false); @@ -92,9 +101,10 @@ public class FileTree extends FileBotTree { public void propertyChange(PropertyChangeEvent evt) { Boolean loading = (Boolean) evt.getNewValue(); - if (loading) { - firePropertyChange(FileTree.LOADING_PROPERTY, null, true); - } else { + firePropertyChange(FileTree.LOADING_PROPERTY, null, loading); + + if (!loading) { + ((DefaultTreeModel) getModel()).reload(); contentChanged(); } } @@ -120,9 +130,6 @@ public class FileTree extends FileBotTree { } catch (Exception e) { Logger.getLogger(Logger.GLOBAL_LOGGER_NAME).log(Level.SEVERE, e.toString(), e); } - - FileTree.this.firePropertyChange(FileTree.LOADING_PROPERTY, null, false); - updateUI(); } } diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/FileTreePanel.java b/source/net/sourceforge/filebot/ui/panel/analyze/FileTreePanel.java index 849c51c9..9e86cf18 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/FileTreePanel.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/FileTreePanel.java @@ -22,7 +22,7 @@ import net.sourceforge.filebot.ui.transfer.LoadAction; import net.sourceforge.tuned.ui.LoadingOverlayPanel; -public class FileTreePanel extends JPanel { +class FileTreePanel extends JPanel { private FileTree fileTree = new FileTree(); @@ -58,7 +58,7 @@ public class FileTreePanel extends JPanel { Boolean loading = (Boolean) evt.getNewValue(); loadingOverlay.setOverlayVisible(loading); - loadingOverlay.updateOverlayUI(); + loadingOverlay.updateOverlay(); } }; @@ -85,7 +85,6 @@ public class FileTreePanel extends JPanel { int row = fileTree.getMinSelectionRow(); fileTree.removeTreeItems(fileTree.getSelectionPaths()); - fileTree.updateUI(); int maxRow = fileTree.getRowCount() - 1; diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/FileTreeTransferPolicy.java b/source/net/sourceforge/filebot/ui/panel/analyze/FileTreeTransferPolicy.java index 77e2e971..401160c7 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/FileTreeTransferPolicy.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/FileTreeTransferPolicy.java @@ -12,11 +12,11 @@ import net.sourceforge.filebot.ui.transferablepolicies.BackgroundFileTransferabl class FileTreeTransferPolicy extends BackgroundFileTransferablePolicy { - DefaultMutableTreeNode root; + private FileTree tree; - public FileTreeTransferPolicy(DefaultMutableTreeNode root) { - this.root = root; + public FileTreeTransferPolicy(FileTree tree) { + this.tree = tree; } @@ -28,12 +28,14 @@ class FileTreeTransferPolicy extends BackgroundFileTransferablePolicy chunks) { + DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot(); + for (DefaultMutableTreeNode node : chunks) { root.add(node); } diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/tools/FileTreeExportHandler.java b/source/net/sourceforge/filebot/ui/panel/analyze/tools/FileTreeExportHandler.java index cd6eae04..35b7a6ec 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/tools/FileTreeExportHandler.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/tools/FileTreeExportHandler.java @@ -16,7 +16,7 @@ import net.sourceforge.filebot.ui.transfer.ExportHandler; import net.sourceforge.filebot.ui.transfer.FileTransferable; -public class FileTreeExportHandler implements ExportHandler { +class FileTreeExportHandler implements ExportHandler { @Override public Transferable createTransferable(JComponent c) { diff --git a/source/net/sourceforge/filebot/ui/panel/analyze/tools/ToolPanel.java b/source/net/sourceforge/filebot/ui/panel/analyze/tools/ToolPanel.java index a52f5c3a..0a29b6f0 100644 --- a/source/net/sourceforge/filebot/ui/panel/analyze/tools/ToolPanel.java +++ b/source/net/sourceforge/filebot/ui/panel/analyze/tools/ToolPanel.java @@ -46,7 +46,7 @@ public abstract class ToolPanel extends JComponent { return; loadingOverlay.setOverlayVisible(loading); - loadingOverlay.updateOverlayUI(); + loadingOverlay.updateOverlay(); } }; diff --git a/source/net/sourceforge/filebot/ui/panel/rename/FilesRenameList.java b/source/net/sourceforge/filebot/ui/panel/rename/FilesRenameList.java index aaea9fc6..c9a0c4d1 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/FilesRenameList.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/FilesRenameList.java @@ -7,7 +7,7 @@ import java.util.List; import net.sourceforge.filebot.ui.panel.rename.entry.FileEntry; -public class FilesRenameList extends RenameList { +class FilesRenameList extends RenameList { public FilesRenameList() { setTitle("Files"); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java b/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java index 866a9223..2f6af91d 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/MatchAction.java @@ -16,17 +16,18 @@ import net.sourceforge.filebot.ui.panel.rename.match.Match; import net.sourceforge.filebot.ui.panel.rename.match.Matcher; import net.sourceforge.filebot.ui.panel.rename.similarity.LengthEqualsMetric; import net.sourceforge.filebot.ui.panel.rename.similarity.MultiSimilarityMetric; -import net.sourceforge.filebot.ui.panel.rename.similarity.SimilarityMetric; import net.sourceforge.filebot.ui.panel.rename.similarity.StringEqualsMetric; import net.sourceforge.filebot.ui.panel.rename.similarity.StringSimilarityMetric; -public class MatchAction extends AbstractAction { +class MatchAction extends AbstractAction { private NamesRenameList namesList; private FilesRenameList filesList; - private Matcher matcher; - private SimilarityMetric metric; + + private MultiSimilarityMetric metrics; + + private Matcher matcher = new Matcher(); private boolean matchName2File; @@ -40,15 +41,8 @@ public class MatchAction extends AbstractAction { this.namesList = namesList; this.filesList = filesList; - MultiSimilarityMetric multiMetric = new MultiSimilarityMetric(); - multiMetric.addMetric(new StringSimilarityMetric()); - multiMetric.addMetric(new StringEqualsMetric()); - // length similarity will only effect torrent <-> file matches - multiMetric.addMetric(new LengthEqualsMetric()); - - matcher = new Matcher(); - metric = multiMetric; + metrics = new MultiSimilarityMetric(new StringSimilarityMetric(), new StringEqualsMetric(), new LengthEqualsMetric()); setMatchName2File(true); } @@ -67,8 +61,8 @@ public class MatchAction extends AbstractAction { } - public SimilarityMetric getMetric() { - return metric; + public MultiSimilarityMetric getMetrics() { + return metrics; } @@ -90,7 +84,7 @@ public class MatchAction extends AbstractAction { listA = filesList.getListEntries(); } - List matches = matcher.match(listA, listB, metric); + List matches = matcher.match(listA, listB, metrics); List> names = new ArrayList>(); List> files = new ArrayList>(); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java b/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java index 1e0dd617..1029b164 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/NamesListTransferablePolicy.java @@ -6,11 +6,13 @@ import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; +import java.util.Collection; import java.util.logging.Level; import java.util.logging.Logger; import net.sourceforge.filebot.FileFormat; import net.sourceforge.filebot.torrent.Torrent; +import net.sourceforge.filebot.ui.panel.rename.entry.ListEntry; import net.sourceforge.filebot.ui.panel.rename.entry.StringEntry; import net.sourceforge.filebot.ui.panel.rename.entry.TorrentEntry; import net.sourceforge.filebot.ui.transferablepolicies.FileTransferablePolicy; @@ -31,6 +33,11 @@ class NamesListTransferablePolicy extends MultiTransferablePolicy { addPolicy(new TextPolicy()); } + + private void submit(Collection> entries) { + this.listModel.addAll(entries); + } + private class FilePolicy extends FileTransferablePolicy { diff --git a/source/net/sourceforge/filebot/ui/panel/rename/NamesRenameList.java b/source/net/sourceforge/filebot/ui/panel/rename/NamesRenameList.java index 770f07a0..a124ae30 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/NamesRenameList.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/NamesRenameList.java @@ -7,7 +7,7 @@ import java.util.List; import net.sourceforge.filebot.ui.panel.rename.entry.ListEntry; -public class NamesRenameList extends RenameList { +class NamesRenameList extends RenameList { public NamesRenameList() { setTitle("Names"); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/RenameList.java b/source/net/sourceforge/filebot/ui/panel/rename/RenameList.java index 4ea57ec8..b44cbed7 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/RenameList.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/RenameList.java @@ -20,7 +20,7 @@ import net.sourceforge.filebot.ui.FileBotList; import net.sourceforge.filebot.ui.transfer.LoadAction; -public abstract class RenameList extends FileBotList { +abstract class RenameList extends FileBotList { public RenameList() { super(true, false, true); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java b/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java index 4ce61b36..cdf32594 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/RenamePanel.java @@ -60,7 +60,7 @@ public class RenamePanel extends FileBotPanel { similarityPanel = new SimilarityPanel(list1, list2); similarityPanel.setVisible(false); - similarityPanel.setMetrics(matchAction.getMetric()); + similarityPanel.setMetrics(matchAction.getMetrics()); Box box = new Box(BoxLayout.X_AXIS); @@ -215,6 +215,7 @@ public class RenamePanel extends FileBotPanel { private class MatchPopupListener extends MouseAdapter { + @Override public void mouseReleased(MouseEvent e) { if (SwingUtilities.isRightMouseButton(e)) { MatcherSelectPopup popup = new MatcherSelectPopup(); diff --git a/source/net/sourceforge/filebot/ui/panel/rename/SelectionSynchroniser.java b/source/net/sourceforge/filebot/ui/panel/rename/SelectionSynchroniser.java index 7904a5e8..fbc551da 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/SelectionSynchroniser.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/SelectionSynchroniser.java @@ -7,7 +7,7 @@ import javax.swing.event.ListSelectionEvent; import javax.swing.event.ListSelectionListener; -public class SelectionSynchroniser { +class SelectionSynchroniser { private JList list1; private JList list2; diff --git a/source/net/sourceforge/filebot/ui/panel/rename/SimilarityPanel.java b/source/net/sourceforge/filebot/ui/panel/rename/SimilarityPanel.java index 3e5ef1e7..5191ea59 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/SimilarityPanel.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/SimilarityPanel.java @@ -6,6 +6,7 @@ import java.awt.Color; import java.awt.GridLayout; import java.text.NumberFormat; import java.util.ArrayList; +import java.util.List; import javax.swing.BorderFactory; import javax.swing.Box; @@ -23,7 +24,7 @@ import net.sourceforge.filebot.ui.panel.rename.similarity.SimilarityMetric; import net.sourceforge.tuned.ui.notification.SeparatorBorder; -public class SimilarityPanel extends Box { +class SimilarityPanel extends Box { private JPanel grid = new JPanel(new GridLayout(0, 2, 25, 1)); @@ -35,7 +36,7 @@ public class SimilarityPanel extends Box { private NumberFormat numberFormat = NumberFormat.getNumberInstance(); - private ArrayList updaterList = new ArrayList(); + private List updaterList = new ArrayList(); private Border labelMarginBorder = BorderFactory.createEmptyBorder(0, 3, 0, 0); @@ -69,44 +70,36 @@ public class SimilarityPanel extends Box { } - public void setMetrics(SimilarityMetric similarityMetric) { + public void setMetrics(MultiSimilarityMetric metrics) { grid.removeAll(); updaterList.clear(); - if (similarityMetric instanceof MultiSimilarityMetric) { - MultiSimilarityMetric multiSimilarityMetric = (MultiSimilarityMetric) similarityMetric; + for (SimilarityMetric metric : metrics) { + JLabel name = new JLabel(metric.getName()); + name.setToolTipText(metric.getDescription()); - for (SimilarityMetric metric : multiSimilarityMetric.getSimilarityMetrics()) { - JLabel name = new JLabel(metric.getName()); - name.setToolTipText(metric.getDescription()); - - JLabel value = new JLabel(); - - name.setBorder(labelMarginBorder); - value.setBorder(labelMarginBorder); - - MetricUpdater updater = new MetricUpdater(value, metric); - updaterList.add(updater); - - grid.add(name); - grid.add(value); - } + JLabel value = new JLabel(); + + name.setBorder(labelMarginBorder); + value.setBorder(labelMarginBorder); + + MetricUpdater updater = new MetricUpdater(value, metric); + updaterList.add(updater); + + grid.add(name); + grid.add(value); } - JLabel name = new JLabel(similarityMetric.getName()); - name.setToolTipText(similarityMetric.getDescription()); + JLabel name = new JLabel(metrics.getName()); JLabel value = new JLabel(); - MetricUpdater updater = new MetricUpdater(value, similarityMetric); + MetricUpdater updater = new MetricUpdater(value, metrics); updaterList.add(updater); - if (similarityMetric instanceof MultiSimilarityMetric) { - Border border = BorderFactory.createCompoundBorder(separatorBorder, labelMarginBorder); - - name.setBorder(border); - value.setBorder(border); - } + Border border = BorderFactory.createCompoundBorder(separatorBorder, labelMarginBorder); + name.setBorder(border); + value.setBorder(border); grid.add(name); grid.add(value); @@ -134,7 +127,7 @@ public class SimilarityPanel extends Box { ListEntry a = (ListEntry) nameList.getSelectedValue(); ListEntry b = (ListEntry) fileList.getSelectedValue(); - if (a == lastListEntryA && b == lastListEntryB) + if ((a == lastListEntryA) && (b == lastListEntryB)) return; lastListEntryA = a; diff --git a/source/net/sourceforge/filebot/ui/panel/rename/ViewPortSynchroniser.java b/source/net/sourceforge/filebot/ui/panel/rename/ViewPortSynchroniser.java index caa524ca..44eaaeec 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/ViewPortSynchroniser.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/ViewPortSynchroniser.java @@ -9,7 +9,7 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -public class ViewPortSynchroniser { +class ViewPortSynchroniser { private JViewport viewport1; private JViewport viewport2; diff --git a/source/net/sourceforge/filebot/ui/panel/rename/entry/AbstractFileEntry.java b/source/net/sourceforge/filebot/ui/panel/rename/entry/AbstractFileEntry.java index 1e265a8a..09a1451b 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/entry/AbstractFileEntry.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/entry/AbstractFileEntry.java @@ -9,14 +9,6 @@ public abstract class AbstractFileEntry extends ListEntry { } - @Override - public String toString() { - return getName(); - } - - public abstract long getLength(); - - public abstract String getName(); } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/entry/FileEntry.java b/source/net/sourceforge/filebot/ui/panel/rename/entry/FileEntry.java index 62e3d6c5..8a96feb7 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/entry/FileEntry.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/entry/FileEntry.java @@ -15,7 +15,7 @@ public class FileEntry extends AbstractFileEntry { @Override - public String getName() { + public String getName(File value) { return FileFormat.getNameWithoutSuffix(getValue()); } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/entry/ListEntry.java b/source/net/sourceforge/filebot/ui/panel/rename/entry/ListEntry.java index 15f06483..28cef676 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/entry/ListEntry.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/entry/ListEntry.java @@ -4,11 +4,26 @@ package net.sourceforge.filebot.ui.panel.rename.entry; public abstract class ListEntry { + private String name; private T value; public ListEntry(T value) { this.value = value; + this.name = getName(value); + } + + + protected abstract String getName(T value); + + + public String getName() { + return name; + } + + + public void setName(String name) { + this.name = name; } @@ -18,6 +33,7 @@ public abstract class ListEntry { @Override - public abstract String toString(); - + public String toString() { + return getName(); + } } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/entry/StringEntry.java b/source/net/sourceforge/filebot/ui/panel/rename/entry/StringEntry.java index fe7d7a06..e3b92ae1 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/entry/StringEntry.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/entry/StringEntry.java @@ -10,8 +10,7 @@ public class StringEntry extends ListEntry { @Override - public String toString() { - return getValue(); + protected String getName(String value) { + return value; } - } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/entry/TorrentEntry.java b/source/net/sourceforge/filebot/ui/panel/rename/entry/TorrentEntry.java index d5395cd5..7829ac05 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/entry/TorrentEntry.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/entry/TorrentEntry.java @@ -15,7 +15,7 @@ public class TorrentEntry extends AbstractFileEntry { @Override - public String getName() { + public String getName(Torrent.Entry value) { return FileFormat.getNameWithoutSuffix(getValue().getName()); } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/match/Matcher.java b/source/net/sourceforge/filebot/ui/panel/rename/match/Matcher.java index 05cff76f..dbfc4610 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/match/Matcher.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/match/Matcher.java @@ -12,7 +12,7 @@ import net.sourceforge.filebot.ui.panel.rename.similarity.SimilarityMetric; public class Matcher { public List match(List> listA, List> listB, SimilarityMetric similarityMetric) { - ArrayList matches = new ArrayList(); + List matches = new ArrayList(); for (ListEntry entryA : listA) { float maxSimilarity = -1; diff --git a/source/net/sourceforge/filebot/ui/panel/rename/similarity/MultiSimilarityMetric.java b/source/net/sourceforge/filebot/ui/panel/rename/similarity/MultiSimilarityMetric.java index c1dc717a..cb12acf6 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/similarity/MultiSimilarityMetric.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/similarity/MultiSimilarityMetric.java @@ -2,39 +2,32 @@ package net.sourceforge.filebot.ui.panel.rename.similarity; -import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; import java.util.List; import net.sourceforge.filebot.ui.panel.rename.entry.ListEntry; -public class MultiSimilarityMetric extends SimilarityMetric { +public class MultiSimilarityMetric extends SimilarityMetric implements Iterable { - private ArrayList similarityMetrics = new ArrayList(); + private List similarityMetrics; + public MultiSimilarityMetric(SimilarityMetric... metrics) { + similarityMetrics = Arrays.asList(metrics); + } + + @Override public float getSimilarity(ListEntry a, ListEntry b) { - if (similarityMetrics.size() < 1) - return 0; - float similarity = 0; for (SimilarityMetric metric : similarityMetrics) { - similarity += metric.getSimilarity(a, b); + similarity += metric.getSimilarity(a, b) / similarityMetrics.size(); } - return similarity / similarityMetrics.size(); - } - - - public void addMetric(SimilarityMetric similarityMetric) { - similarityMetrics.add(similarityMetric); - } - - - public List getSimilarityMetrics() { - return similarityMetrics; + return similarity; } @@ -49,4 +42,10 @@ public class MultiSimilarityMetric extends SimilarityMetric { return "Average"; } + + @Override + public Iterator iterator() { + return similarityMetrics.iterator(); + } + } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringEqualsMetric.java b/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringEqualsMetric.java index 75de0cb0..7f2455e7 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringEqualsMetric.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringEqualsMetric.java @@ -9,7 +9,7 @@ public class StringEqualsMetric extends SimilarityMetric { @Override public float getSimilarity(ListEntry a, ListEntry b) { - if (a.toString().equalsIgnoreCase(b.toString())) { + if (a.getName().equalsIgnoreCase(b.getName())) { return 1; } diff --git a/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringSimilarityMetric.java b/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringSimilarityMetric.java index e495dc09..576d0bdf 100644 --- a/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringSimilarityMetric.java +++ b/source/net/sourceforge/filebot/ui/panel/rename/similarity/StringSimilarityMetric.java @@ -25,7 +25,7 @@ public class StringSimilarityMetric extends SimilarityMetric { @Override public float getSimilarity(ListEntry a, ListEntry b) { - return metric.getSimilarity(a.toString(), b.toString()); + return metric.getSimilarity(a.getName(), b.getName()); } diff --git a/source/net/sourceforge/filebot/ui/panel/search/EpisodeListPanel.java b/source/net/sourceforge/filebot/ui/panel/search/EpisodeListPanel.java index d740ebcc..b572337e 100644 --- a/source/net/sourceforge/filebot/ui/panel/search/EpisodeListPanel.java +++ b/source/net/sourceforge/filebot/ui/panel/search/EpisodeListPanel.java @@ -8,7 +8,7 @@ import net.sourceforge.filebot.resources.ResourceManager; import net.sourceforge.filebot.ui.FileBotList; -public class EpisodeListPanel extends FileBotList { +class EpisodeListPanel extends FileBotList { private TabComponentWithClose tabComponent; private ImageIcon icon; diff --git a/source/net/sourceforge/filebot/ui/panel/search/FetchEpisodesTask.java b/source/net/sourceforge/filebot/ui/panel/search/FetchEpisodesTask.java index 1d895287..7303e062 100644 --- a/source/net/sourceforge/filebot/ui/panel/search/FetchEpisodesTask.java +++ b/source/net/sourceforge/filebot/ui/panel/search/FetchEpisodesTask.java @@ -10,7 +10,7 @@ import net.sourceforge.filebot.web.Episode; import net.sourceforge.filebot.web.EpisodeListClient; -public class FetchEpisodesTask extends SwingWorker, Object> { +class FetchEpisodesTask extends SwingWorker, Object> { private String showName; private EpisodeListClient searchEngine; diff --git a/source/net/sourceforge/filebot/ui/panel/search/HistoryPanel.java b/source/net/sourceforge/filebot/ui/panel/search/HistoryPanel.java index 3e6b73ef..24b5b2ac 100644 --- a/source/net/sourceforge/filebot/ui/panel/search/HistoryPanel.java +++ b/source/net/sourceforge/filebot/ui/panel/search/HistoryPanel.java @@ -16,8 +16,10 @@ import javax.swing.JPanel; import javax.swing.SwingConstants; import javax.swing.border.Border; +import net.sourceforge.tuned.ui.HyperlinkLabel; -public class HistoryPanel extends JPanel { + +class HistoryPanel extends JPanel { private JPanel grid = new JPanel(new GridLayout(0, 3, 15, 10)); diff --git a/source/net/sourceforge/filebot/ui/panel/search/SeasonSpinnerEditor.java b/source/net/sourceforge/filebot/ui/panel/search/SeasonSpinnerEditor.java index 4b176f4b..1b952296 100644 --- a/source/net/sourceforge/filebot/ui/panel/search/SeasonSpinnerEditor.java +++ b/source/net/sourceforge/filebot/ui/panel/search/SeasonSpinnerEditor.java @@ -16,7 +16,7 @@ import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; -public class SeasonSpinnerEditor extends JPanel implements ChangeListener { +class SeasonSpinnerEditor extends JPanel implements ChangeListener { public static final int ALL_SEASONS = 0; diff --git a/source/net/sourceforge/filebot/ui/panel/search/TabComponentWithClose.java b/source/net/sourceforge/filebot/ui/panel/search/TabComponentWithClose.java index c24e83b5..7da33af9 100644 --- a/source/net/sourceforge/filebot/ui/panel/search/TabComponentWithClose.java +++ b/source/net/sourceforge/filebot/ui/panel/search/TabComponentWithClose.java @@ -19,7 +19,7 @@ import javax.swing.SwingUtilities; import net.sourceforge.filebot.resources.ResourceManager; -public class TabComponentWithClose extends JPanel { +class TabComponentWithClose extends JPanel { private JLabel label; diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java b/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java index 909b22d8..b413b5ee 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/SfvPanel.java @@ -77,7 +77,6 @@ public class SfvPanel extends FileBotPanel { @Override protected String getDefaultFileName() { - System.out.println(name); return name; } diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/SfvTable.java b/source/net/sourceforge/filebot/ui/panel/sfv/SfvTable.java index a5e64524..3ccf4a5f 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/SfvTable.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/SfvTable.java @@ -34,7 +34,7 @@ import net.sourceforge.filebot.ui.transferablepolicies.NullTransferablePolicy; import net.sourceforge.filebot.ui.transferablepolicies.TransferablePolicy; -public class SfvTable extends JTable implements TransferablePolicySupport, Saveable { +class SfvTable extends JTable implements TransferablePolicySupport, Saveable { private TransferablePolicy transferablePolicy = new NullTransferablePolicy(); diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/SfvTableModel.java b/source/net/sourceforge/filebot/ui/panel/sfv/SfvTableModel.java index 18863326..174b306c 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/SfvTableModel.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/SfvTableModel.java @@ -10,22 +10,23 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; +import java.util.Map; import javax.swing.table.AbstractTableModel; import net.sourceforge.filebot.FileFormat; -public class SfvTableModel extends AbstractTableModel { +class SfvTableModel extends AbstractTableModel { - private ArrayList rows = new ArrayList(); + private List rows = new ArrayList(); /** * Used for Name->Checksum mapping (for performance reasons) */ - private HashMap rowMap = new HashMap(); + private Map rowMap = new HashMap(); - private ArrayList checksumColumnRoots = new ArrayList(); + private List checksumColumnRoots = new ArrayList(); private int checksumColumnsOffset = 2; diff --git a/source/net/sourceforge/filebot/ui/panel/sfv/TotalProgressPanel.java b/source/net/sourceforge/filebot/ui/panel/sfv/TotalProgressPanel.java index ffaa826c..b06eebd2 100644 --- a/source/net/sourceforge/filebot/ui/panel/sfv/TotalProgressPanel.java +++ b/source/net/sourceforge/filebot/ui/panel/sfv/TotalProgressPanel.java @@ -15,7 +15,7 @@ import javax.swing.Timer; import javax.swing.border.Border; -public class TotalProgressPanel extends Box { +class TotalProgressPanel extends Box { private JProgressBar progressBar = new JProgressBar(0, 0); diff --git a/source/net/sourceforge/tuned/ui/FancyListCellRenderer.java b/source/net/sourceforge/tuned/ui/FancyListCellRenderer.java index e064ea57..46b757de 100644 --- a/source/net/sourceforge/tuned/ui/FancyListCellRenderer.java +++ b/source/net/sourceforge/tuned/ui/FancyListCellRenderer.java @@ -33,6 +33,11 @@ public class FancyListCellRenderer extends DefaultListCellRenderer { } + public FancyListCellRenderer(int padding, boolean highlighting) { + this(GradientStyle.TOP_TO_BOTTOM, highlighting, new Insets(padding, padding, padding, padding), new Insets(1, 1, 0, 1), null); + } + + public FancyListCellRenderer(int padding, Color selectedBorderColor, GradientStyle gradientStyle) { this(gradientStyle, false, new Insets(padding, padding, padding, padding), new Insets(0, 0, 0, 0), selectedBorderColor); } diff --git a/source/net/sourceforge/filebot/ui/panel/search/HyperlinkLabel.java b/source/net/sourceforge/tuned/ui/HyperlinkLabel.java similarity index 95% rename from source/net/sourceforge/filebot/ui/panel/search/HyperlinkLabel.java rename to source/net/sourceforge/tuned/ui/HyperlinkLabel.java index 01091e7d..587090e9 100644 --- a/source/net/sourceforge/filebot/ui/panel/search/HyperlinkLabel.java +++ b/source/net/sourceforge/tuned/ui/HyperlinkLabel.java @@ -1,5 +1,5 @@ -package net.sourceforge.filebot.ui.panel.search; +package net.sourceforge.tuned.ui; import java.awt.Color; diff --git a/source/net/sourceforge/tuned/ui/LoadingOverlayPanel.java b/source/net/sourceforge/tuned/ui/LoadingOverlayPanel.java index 884625ad..c22b2a28 100644 --- a/source/net/sourceforge/tuned/ui/LoadingOverlayPanel.java +++ b/source/net/sourceforge/tuned/ui/LoadingOverlayPanel.java @@ -82,8 +82,9 @@ public class LoadingOverlayPanel extends JPanel { } - public void updateOverlayUI() { - loadingLabel.updateUI(); + public void updateOverlay() { + revalidate(); + repaint(); } } diff --git a/source/net/sourceforge/tuned/ui/SelectDialog.java b/source/net/sourceforge/tuned/ui/SelectDialog.java index 28dcdd7c..87cdc069 100644 --- a/source/net/sourceforge/tuned/ui/SelectDialog.java +++ b/source/net/sourceforge/tuned/ui/SelectDialog.java @@ -11,13 +11,10 @@ import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Collection; -import java.util.Map; import javax.swing.AbstractAction; import javax.swing.BorderFactory; import javax.swing.Box; -import javax.swing.DefaultListCellRenderer; -import javax.swing.Icon; import javax.swing.JButton; import javax.swing.JComponent; import javax.swing.JDialog; @@ -27,40 +24,30 @@ import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.KeyStroke; import javax.swing.SwingUtilities; -import javax.swing.border.Border; import javax.swing.border.EmptyBorder; public class SelectDialog extends JDialog { - private Collection options; + private JLabel label = new JLabel(); - private Map iconMap; + private JList list = new JList(); + + private T selectedValue = null; - public SelectDialog(Window owner, Collection options, Map icons) { - this(owner); - this.options = options; - this.iconMap = icons; - initialize(); - } - - public SelectDialog(Window owner, Collection options) { - this(owner, options, null); - } - - - private SelectDialog(Window owner) { super(owner, "Select", ModalityType.DOCUMENT_MODAL); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); - list.setCellRenderer(cellRenderer); + list.setCellRenderer(new SelectListCellRenderer()); list.addMouseListener(mouseListener); - label.setText("Select:"); + setText("Select:"); JComponent c = (JComponent) getContentPane(); + int border = 5; c.setBorder(BorderFactory.createEmptyBorder(border, border, border, border)); c.setLayout(new BorderLayout(border, border)); @@ -82,8 +69,14 @@ public class SelectDialog extends JDialog { c.add(listPanel, BorderLayout.CENTER); c.add(buttonBox, BorderLayout.SOUTH); + // bounds and location setMinimumSize(new Dimension(175, 175)); setSize(new Dimension(200, 190)); + setLocation(getDefaultLocation()); + + // default selection + list.setModel(new SimpleListModel(options)); + list.setSelectedIndex(0); // Shortcut Enter Integer actionMapKey = new Integer(selectAction.hashCode()); @@ -97,29 +90,16 @@ public class SelectDialog extends JDialog { } - public void setDefaultLocation() { + public Point getDefaultLocation() { Point p = getOwner().getLocation(); Dimension d = getOwner().getSize(); Point offset = new Point(d.width / 4, d.height / 7); - setLocation(p.x + offset.x, p.y + offset.y); + + return new Point(p.x + offset.x, p.y + offset.y); } - private void initialize() { - list.setModel(new SimpleListModel(options)); - list.setSelectedIndex(0); - - setDefaultLocation(); - } - - private JLabel label = new JLabel(); - - private JList list = new JList(); - - private T selectedValue = null; - - public void setText(String s) { label.setText(s); } @@ -159,18 +139,17 @@ public class SelectDialog extends JDialog { return value.toString(); } - private DefaultListCellRenderer cellRenderer = new DefaultListCellRenderer() { - - private Border border = BorderFactory.createEmptyBorder(4, 4, 4, 4); + + private class SelectListCellRenderer extends FancyListCellRenderer { + public SelectListCellRenderer() { + super(4, false); + } + @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { super.getListCellRendererComponent(list, convertValueToString(value), index, isSelected, cellHasFocus); - setBorder(border); - - if (iconMap != null) - setIcon(iconMap.get(value)); return this; }