diff --git a/source/net/filebot/ui/analyze/FileTreePanel.java b/source/net/filebot/ui/analyze/FileTreePanel.java index 1292bddd..39b1804f 100644 --- a/source/net/filebot/ui/analyze/FileTreePanel.java +++ b/source/net/filebot/ui/analyze/FileTreePanel.java @@ -1,12 +1,9 @@ package net.filebot.ui.analyze; import static net.filebot.ui.transfer.BackgroundFileTransferablePolicy.*; +import static net.filebot.util.ui.SwingUI.*; -import java.awt.event.ActionEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; - -import javax.swing.AbstractAction; +import javax.swing.Action; import javax.swing.BorderFactory; import javax.swing.JButton; import javax.swing.JComponent; @@ -15,6 +12,7 @@ import javax.swing.JScrollPane; import net.filebot.ResourceManager; import net.filebot.ui.transfer.DefaultTransferHandler; import net.filebot.ui.transfer.LoadAction; +import net.filebot.ui.transfer.TransferablePolicy; import net.filebot.util.ui.LoadingOverlayPane; import net.miginfocom.swing.MigLayout; @@ -35,24 +33,16 @@ class FileTreePanel extends JComponent { add(new JButton(clearAction), "gap 1.2mm, wrap 1.2mm"); // forward loading events - transferablePolicy.addPropertyChangeListener(new PropertyChangeListener() { - - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (LOADING_PROPERTY.equals(evt.getPropertyName())) { - firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } + transferablePolicy.addPropertyChangeListener(evt -> { + if (LOADING_PROPERTY.equals(evt.getPropertyName())) { + firePropertyChange(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); } }); // update tree when loading is finished - transferablePolicy.addPropertyChangeListener(new PropertyChangeListener() { - - @Override - public void propertyChange(PropertyChangeEvent evt) { - if (LOADING_PROPERTY.equals(evt.getPropertyName()) && !(Boolean) evt.getNewValue()) { - fireFileTreeChange(); - } + transferablePolicy.addPropertyChangeListener(evt -> { + if (LOADING_PROPERTY.equals(evt.getPropertyName()) && !(Boolean) evt.getNewValue()) { + fireFileTreeChange(); } }); } @@ -61,21 +51,17 @@ class FileTreePanel extends JComponent { return fileTree; } - public FileTreeTransferablePolicy getTransferablePolicy() { + public TransferablePolicy getTransferablePolicy() { return transferablePolicy; } - private final LoadAction loadAction = new LoadAction(transferablePolicy); + private final LoadAction loadAction = new LoadAction(this::getTransferablePolicy); - private final AbstractAction clearAction = new AbstractAction("Clear", ResourceManager.getIcon("action.clear")) { - - @Override - public void actionPerformed(ActionEvent e) { - transferablePolicy.reset(); - fileTree.clear(); - fireFileTreeChange(); - } - }; + private final Action clearAction = newAction("Clear", ResourceManager.getIcon("action.clear"), evt -> { + transferablePolicy.reset(); + fileTree.clear(); + fireFileTreeChange(); + }); private void fireFileTreeChange() { firePropertyChange("filetree", null, fileTree); diff --git a/source/net/filebot/ui/list/ListPanel.java b/source/net/filebot/ui/list/ListPanel.java index 75c007db..0efabefb 100644 --- a/source/net/filebot/ui/list/ListPanel.java +++ b/source/net/filebot/ui/list/ListPanel.java @@ -77,7 +77,7 @@ public class ListPanel extends JComponent { // panel with buttons that will be added inside the list component JPanel buttonPanel = new JPanel(new MigLayout("insets 1.2mm, nogrid, fill", "align center")); - buttonPanel.add(new JButton(new LoadAction(list.getTransferablePolicy()))); + buttonPanel.add(new JButton(new LoadAction(list::getTransferablePolicy))); buttonPanel.add(new JButton(new SaveAction(list.getExportHandler())), "gap related"); list.add(buttonPanel, BorderLayout.SOUTH); diff --git a/source/net/filebot/ui/rename/HistoryDialog.java b/source/net/filebot/ui/rename/HistoryDialog.java index 4bffbb4f..0f79bf64 100644 --- a/source/net/filebot/ui/rename/HistoryDialog.java +++ b/source/net/filebot/ui/rename/HistoryDialog.java @@ -78,6 +78,7 @@ import net.filebot.ui.transfer.FileExportHandler; import net.filebot.ui.transfer.FileTransferablePolicy; import net.filebot.ui.transfer.LoadAction; import net.filebot.ui.transfer.SaveAction; +import net.filebot.ui.transfer.TransferablePolicy; import net.filebot.ui.transfer.TransferablePolicy.TransferAction; import net.filebot.util.FileUtilities; import net.filebot.util.FileUtilities.ExtensionFileFilter; @@ -126,7 +127,7 @@ class HistoryDialog extends JDialog { content.add(createScrollPaneGroup("Elements", elementTable), "growx, wrap paragraph"); // use ADD by default - Action importAction = new LoadAction("Import", ResourceManager.getIcon("action.load"), importHandler) { + Action importAction = new LoadAction("Import", ResourceManager.getIcon("action.load"), this::getTransferablePolicy) { @Override public TransferAction getTransferAction(ActionEvent evt) { @@ -594,6 +595,10 @@ class HistoryDialog extends JDialog { } } + public TransferablePolicy getTransferablePolicy() { + return importHandler; + } + private final FileTransferablePolicy importHandler = new FileTransferablePolicy() { @Override diff --git a/source/net/filebot/ui/rename/RenameList.java b/source/net/filebot/ui/rename/RenameList.java index b684a99a..8273a5aa 100644 --- a/source/net/filebot/ui/rename/RenameList.java +++ b/source/net/filebot/ui/rename/RenameList.java @@ -8,7 +8,7 @@ import java.awt.event.ActionEvent; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; -import javax.swing.AbstractAction; +import javax.swing.Action; import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.ListModel; @@ -16,13 +16,12 @@ import javax.swing.ListSelectionModel; import javax.swing.event.ListDataEvent; import javax.swing.event.ListDataListener; +import ca.odell.glazedlists.EventList; import net.filebot.ResourceManager; import net.filebot.ui.FileBotList; import net.filebot.ui.transfer.LoadAction; -import net.filebot.ui.transfer.TransferablePolicy; import net.filebot.util.ui.ActionPopup; import net.miginfocom.swing.MigLayout; -import ca.odell.glazedlists.EventList; class RenameList extends FileBotList { @@ -94,61 +93,41 @@ class RenameList extends FileBotList { return buttonPanel; } - @Override - public void setTransferablePolicy(TransferablePolicy transferablePolicy) { - super.setTransferablePolicy(transferablePolicy); - loadAction.putValue(LoadAction.TRANSFERABLE_POLICY, transferablePolicy); - } - private JButton createLoadButton() { ActionPopup actionPopup = new ActionPopup("Load Files", ResourceManager.getIcon("action.load")); - actionPopup.add(new AbstractAction("Select Folders", ResourceManager.getIcon("tree.closed")) { - @Override - public void actionPerformed(ActionEvent evt) { - loadAction.actionPerformed(new ActionEvent(evt.getSource(), evt.getID(), evt.getActionCommand(), 0)); - } - }); - actionPopup.add(new AbstractAction("Select Files", ResourceManager.getIcon("file.generic")) { + actionPopup.add(newAction("Select Folders", ResourceManager.getIcon("tree.closed"), evt -> { + loadAction.actionPerformed(new ActionEvent(evt.getSource(), evt.getID(), evt.getActionCommand(), 0)); + })); - @Override - public void actionPerformed(ActionEvent evt) { - loadAction.actionPerformed(new ActionEvent(evt.getSource(), evt.getID(), evt.getActionCommand(), ActionEvent.SHIFT_MASK)); - } - }); + actionPopup.add(newAction("Select Files", ResourceManager.getIcon("file.generic"), evt -> { + loadAction.actionPerformed(new ActionEvent(evt.getSource(), evt.getID(), evt.getActionCommand(), ActionEvent.SHIFT_MASK)); + })); - JButton b = new JButton(loadAction); - b.setComponentPopupMenu(actionPopup); - return b; + JButton button = new JButton(loadAction); + button.setComponentPopupMenu(actionPopup); + return button; } - private final LoadAction loadAction = new LoadAction(null); + private final LoadAction loadAction = new LoadAction(this::getTransferablePolicy); - private final AbstractAction upAction = new AbstractAction("Align Up", ResourceManager.getIcon("action.up")) { + private final Action upAction = newAction("Align Up", ResourceManager.getIcon("action.up"), evt -> { + int index = getListComponent().getSelectedIndex(); - @Override - public void actionPerformed(ActionEvent e) { - int index = getListComponent().getSelectedIndex(); - - if (index > 0) { - swap(model, index, index - 1); - getListComponent().setSelectedIndex(index - 1); - } + if (index > 0) { + swap(model, index, index - 1); + getListComponent().setSelectedIndex(index - 1); } - }; + }); - private final AbstractAction downAction = new AbstractAction("Align Down", ResourceManager.getIcon("action.down")) { + private final Action downAction = newAction("Align Down", ResourceManager.getIcon("action.down"), evt -> { + int index = getListComponent().getSelectedIndex(); - @Override - public void actionPerformed(ActionEvent e) { - int index = getListComponent().getSelectedIndex(); - - if (index < model.size() - 1) { - swap(model, index, index + 1); - getListComponent().setSelectedIndex(index + 1); - } + if (index < model.size() - 1) { + swap(model, index, index + 1); + getListComponent().setSelectedIndex(index + 1); } - }; + }); private final MouseAdapter dndReorderMouseAdapter = new MouseAdapter() { diff --git a/source/net/filebot/ui/sfv/SfvPanel.java b/source/net/filebot/ui/sfv/SfvPanel.java index 2d8a8efd..f513cc3d 100644 --- a/source/net/filebot/ui/sfv/SfvPanel.java +++ b/source/net/filebot/ui/sfv/SfvPanel.java @@ -34,6 +34,7 @@ import net.filebot.ui.SelectDialog; import net.filebot.ui.transfer.DefaultTransferHandler; import net.filebot.ui.transfer.LoadAction; import net.filebot.ui.transfer.SaveAction; +import net.filebot.ui.transfer.TransferablePolicy; import net.filebot.util.FileUtilities; import net.filebot.util.ui.SwingUI; import net.miginfocom.swing.MigLayout; @@ -91,6 +92,10 @@ public class SfvPanel extends JComponent { SwingUI.installAction(this, KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), removeAction); } + public TransferablePolicy getTransferablePolicy() { + return transferablePolicy; + } + protected void restartComputation(HashType hash) { // cancel all running computations computationService.reset(); @@ -126,7 +131,7 @@ public class SfvPanel extends JComponent { private final SaveAction saveAction = new ChecksumTableSaveAction(); - private final LoadAction loadAction = new LoadAction(transferablePolicy); + private final LoadAction loadAction = new LoadAction(this::getTransferablePolicy); private final AbstractAction clearAction = new AbstractAction("Clear", ResourceManager.getIcon("action.clear")) { diff --git a/source/net/filebot/ui/transfer/LoadAction.java b/source/net/filebot/ui/transfer/LoadAction.java index 68266621..8b77de04 100644 --- a/source/net/filebot/ui/transfer/LoadAction.java +++ b/source/net/filebot/ui/transfer/LoadAction.java @@ -6,6 +6,7 @@ import static net.filebot.UserFiles.*; import java.awt.event.ActionEvent; import java.io.File; import java.util.List; +import java.util.function.Supplier; import java.util.logging.Level; import javax.swing.AbstractAction; @@ -18,16 +19,15 @@ import net.filebot.util.FileUtilities.ExtensionFileFilter; public class LoadAction extends AbstractAction { - public static final String TRANSFERABLE_POLICY = "transferablePolicy"; + public final Supplier handler; - public LoadAction(TransferablePolicy transferablePolicy) { - this("Load", ResourceManager.getIcon("action.load"), transferablePolicy); + public LoadAction(Supplier handler) { + this("Load", ResourceManager.getIcon("action.load"), handler); } - public LoadAction(String name, Icon icon, TransferablePolicy transferablePolicy) { - putValue(NAME, name); - putValue(SMALL_ICON, icon); - putValue(TRANSFERABLE_POLICY, transferablePolicy); + public LoadAction(String name, Icon icon, Supplier handler) { + super(name, icon); + this.handler = handler; } public TransferAction getTransferAction(ActionEvent evt) { @@ -43,7 +43,7 @@ public class LoadAction extends AbstractAction { public void actionPerformed(ActionEvent evt) { try { // get transferable policy from action properties - TransferablePolicy transferablePolicy = (TransferablePolicy) getValue(TRANSFERABLE_POLICY); + TransferablePolicy transferablePolicy = handler.get(); if (transferablePolicy == null) { return; }