mirror of
https://github.com/mitb-archive/filebot
synced 2024-08-13 17:03:45 -04:00
* improved ui performance
* proper class visibility
This commit is contained in:
parent
0f102d4eb6
commit
4b4ca4fc68
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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<TreeNode> changedNodes = new ArrayList<TreeNode>(paths.length);
|
||||
|
||||
for (TreePath element : paths) {
|
||||
DefaultMutableTreeNode node = (DefaultMutableTreeNode) (element.getLastPathComponent());
|
||||
|
||||
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
|
||||
}
|
||||
|
||||
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
|
@ -12,11 +12,11 @@ import net.sourceforge.filebot.ui.transferablepolicies.BackgroundFileTransferabl
|
||||
|
||||
class FileTreeTransferPolicy extends BackgroundFileTransferablePolicy<DefaultMutableTreeNode> {
|
||||
|
||||
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<DefaultMut
|
||||
|
||||
@Override
|
||||
protected void clear() {
|
||||
root.removeAllChildren();
|
||||
tree.clear();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected void process(List<DefaultMutableTreeNode> chunks) {
|
||||
DefaultMutableTreeNode root = (DefaultMutableTreeNode) tree.getModel().getRoot();
|
||||
|
||||
for (DefaultMutableTreeNode node : chunks) {
|
||||
root.add(node);
|
||||
}
|
||||
|
@ -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) {
|
||||
|
@ -46,7 +46,7 @@ public abstract class ToolPanel extends JComponent {
|
||||
return;
|
||||
|
||||
loadingOverlay.setOverlayVisible(loading);
|
||||
loadingOverlay.updateOverlayUI();
|
||||
loadingOverlay.updateOverlay();
|
||||
}
|
||||
};
|
||||
|
||||
|
@ -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");
|
||||
|
@ -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<Match> matches = matcher.match(listA, listB, metric);
|
||||
List<Match> matches = matcher.match(listA, listB, metrics);
|
||||
|
||||
List<ListEntry<?>> names = new ArrayList<ListEntry<?>>();
|
||||
List<ListEntry<?>> files = new ArrayList<ListEntry<?>>();
|
||||
|
@ -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;
|
||||
@ -32,6 +34,11 @@ class NamesListTransferablePolicy extends MultiTransferablePolicy {
|
||||
}
|
||||
|
||||
|
||||
private void submit(Collection<ListEntry<?>> entries) {
|
||||
this.listModel.addAll(entries);
|
||||
}
|
||||
|
||||
|
||||
private class FilePolicy extends FileTransferablePolicy {
|
||||
|
||||
private long MAX_FILESIZE = 10 * FileFormat.MEGA;
|
||||
|
@ -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");
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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;
|
||||
|
@ -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<MetricUpdater> updaterList = new ArrayList<MetricUpdater>();
|
||||
private List<MetricUpdater> updaterList = new ArrayList<MetricUpdater>();
|
||||
|
||||
private Border labelMarginBorder = BorderFactory.createEmptyBorder(0, 3, 0, 0);
|
||||
|
||||
@ -69,14 +70,11 @@ 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 : multiSimilarityMetric.getSimilarityMetrics()) {
|
||||
for (SimilarityMetric metric : metrics) {
|
||||
JLabel name = new JLabel(metric.getName());
|
||||
name.setToolTipText(metric.getDescription());
|
||||
|
||||
@ -91,22 +89,17 @@ public class SimilarityPanel extends Box {
|
||||
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);
|
||||
}
|
||||
|
||||
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;
|
||||
|
@ -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;
|
||||
|
@ -9,14 +9,6 @@ public abstract class AbstractFileEntry<T> extends ListEntry<T> {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getName();
|
||||
}
|
||||
|
||||
|
||||
public abstract long getLength();
|
||||
|
||||
|
||||
public abstract String getName();
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ public class FileEntry extends AbstractFileEntry<File> {
|
||||
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
public String getName(File value) {
|
||||
return FileFormat.getNameWithoutSuffix(getValue());
|
||||
}
|
||||
|
||||
|
@ -4,11 +4,26 @@ package net.sourceforge.filebot.ui.panel.rename.entry;
|
||||
|
||||
public abstract class ListEntry<T> {
|
||||
|
||||
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<T> {
|
||||
|
||||
|
||||
@Override
|
||||
public abstract String toString();
|
||||
|
||||
public String toString() {
|
||||
return getName();
|
||||
}
|
||||
}
|
||||
|
@ -10,8 +10,7 @@ public class StringEntry extends ListEntry<String> {
|
||||
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return getValue();
|
||||
protected String getName(String value) {
|
||||
return value;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -15,7 +15,7 @@ public class TorrentEntry extends AbstractFileEntry<Torrent.Entry> {
|
||||
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
public String getName(Torrent.Entry value) {
|
||||
return FileFormat.getNameWithoutSuffix(getValue().getName());
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ import net.sourceforge.filebot.ui.panel.rename.similarity.SimilarityMetric;
|
||||
public class Matcher {
|
||||
|
||||
public List<Match> match(List<? extends ListEntry<?>> listA, List<? extends ListEntry<?>> listB, SimilarityMetric similarityMetric) {
|
||||
ArrayList<Match> matches = new ArrayList<Match>();
|
||||
List<Match> matches = new ArrayList<Match>();
|
||||
|
||||
for (ListEntry<?> entryA : listA) {
|
||||
float maxSimilarity = -1;
|
||||
|
@ -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<SimilarityMetric> {
|
||||
|
||||
private ArrayList<SimilarityMetric> similarityMetrics = new ArrayList<SimilarityMetric>();
|
||||
private List<SimilarityMetric> 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<SimilarityMetric> getSimilarityMetrics() {
|
||||
return similarityMetrics;
|
||||
return similarity;
|
||||
}
|
||||
|
||||
|
||||
@ -49,4 +42,10 @@ public class MultiSimilarityMetric extends SimilarityMetric {
|
||||
return "Average";
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Iterator<SimilarityMetric> iterator() {
|
||||
return similarityMetrics.iterator();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
@ -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;
|
||||
|
@ -10,7 +10,7 @@ import net.sourceforge.filebot.web.Episode;
|
||||
import net.sourceforge.filebot.web.EpisodeListClient;
|
||||
|
||||
|
||||
public class FetchEpisodesTask extends SwingWorker<List<Episode>, Object> {
|
||||
class FetchEpisodesTask extends SwingWorker<List<Episode>, Object> {
|
||||
|
||||
private String showName;
|
||||
private EpisodeListClient searchEngine;
|
||||
|
@ -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));
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
@ -77,7 +77,6 @@ public class SfvPanel extends FileBotPanel {
|
||||
|
||||
@Override
|
||||
protected String getDefaultFileName() {
|
||||
System.out.println(name);
|
||||
return name;
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
|
||||
|
@ -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<ChecksumRow> rows = new ArrayList<ChecksumRow>();
|
||||
private List<ChecksumRow> rows = new ArrayList<ChecksumRow>();
|
||||
|
||||
/**
|
||||
* Used for Name->Checksum mapping (for performance reasons)
|
||||
*/
|
||||
private HashMap<String, ChecksumRow> rowMap = new HashMap<String, ChecksumRow>();
|
||||
private Map<String, ChecksumRow> rowMap = new HashMap<String, ChecksumRow>();
|
||||
|
||||
private ArrayList<File> checksumColumnRoots = new ArrayList<File>();
|
||||
private List<File> checksumColumnRoots = new ArrayList<File>();
|
||||
|
||||
private int checksumColumnsOffset = 2;
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
package net.sourceforge.filebot.ui.panel.search;
|
||||
package net.sourceforge.tuned.ui;
|
||||
|
||||
|
||||
import java.awt.Color;
|
@ -82,8 +82,9 @@ public class LoadingOverlayPanel extends JPanel {
|
||||
}
|
||||
|
||||
|
||||
public void updateOverlayUI() {
|
||||
loadingLabel.updateUI();
|
||||
public void updateOverlay() {
|
||||
revalidate();
|
||||
repaint();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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<T> extends JDialog {
|
||||
|
||||
private Collection<T> options;
|
||||
private JLabel label = new JLabel();
|
||||
|
||||
private Map<T, ? extends Icon> iconMap;
|
||||
private JList list = new JList();
|
||||
|
||||
|
||||
public SelectDialog(Window owner, Collection<T> options, Map<T, ? extends Icon> icons) {
|
||||
this(owner);
|
||||
this.options = options;
|
||||
this.iconMap = icons;
|
||||
initialize();
|
||||
}
|
||||
private T selectedValue = null;
|
||||
|
||||
|
||||
public SelectDialog(Window owner, Collection<T> 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<T> 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<T> 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<T> 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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user