From b7406e54d49e54246853880415784f98c2889b7e Mon Sep 17 00:00:00 2001 From: Reinhard Pointner Date: Sat, 18 Feb 2012 03:28:48 +0000 Subject: [PATCH] * add buttons for all context menus so even noobs can get started easily --- .../filebot/ui/rename/RenameList.java | 18 +++++++-- .../filebot/ui/rename/RenamePanel.java | 40 ++++++++++++++----- 2 files changed, 44 insertions(+), 14 deletions(-) diff --git a/source/net/sourceforge/filebot/ui/rename/RenameList.java b/source/net/sourceforge/filebot/ui/rename/RenameList.java index 07c45145..79213ee8 100644 --- a/source/net/sourceforge/filebot/ui/rename/RenameList.java +++ b/source/net/sourceforge/filebot/ui/rename/RenameList.java @@ -14,16 +14,20 @@ import javax.swing.JButton; import javax.swing.JPanel; import javax.swing.ListSelectionModel; +import ca.odell.glazedlists.EventList; + import net.miginfocom.swing.MigLayout; import net.sourceforge.filebot.ResourceManager; import net.sourceforge.filebot.ui.FileBotList; import net.sourceforge.filebot.ui.transfer.LoadAction; import net.sourceforge.filebot.ui.transfer.TransferablePolicy; -import ca.odell.glazedlists.EventList; class RenameList extends FileBotList { + private JPanel buttonPanel; + + public RenameList(EventList model) { // replace default model with given model setModel(model); @@ -36,7 +40,7 @@ class RenameList extends FileBotList { getRemoveAction().setEnabled(true); - JPanel buttonPanel = new JPanel(new MigLayout("insets 1.2mm, nogrid, fill", "align center")); + buttonPanel = new JPanel(new MigLayout("insets 1.2mm, nogrid, fill", "align center")); buttonPanel.add(new JButton(downAction), "gap 10px"); buttonPanel.add(new JButton(upAction), "gap 0"); @@ -47,13 +51,19 @@ class RenameList extends FileBotList { listScrollPane.getViewport().setBackground(list.getBackground()); } - + + public JPanel getButtonPanel() { + return buttonPanel; + } + + @Override public void setTransferablePolicy(TransferablePolicy transferablePolicy) { super.setTransferablePolicy(transferablePolicy); loadAction.putValue(LoadAction.TRANSFERABLE_POLICY, transferablePolicy); } + private final LoadAction loadAction = new LoadAction(null); private final AbstractAction upAction = new AbstractAction(null, ResourceManager.getIcon("action.up")) { @@ -90,7 +100,7 @@ class RenameList extends FileBotList { lastIndex = getListComponent().getSelectedIndex(); } - + @Override public void mouseDragged(MouseEvent m) { int currentIndex = getListComponent().getSelectedIndex(); diff --git a/source/net/sourceforge/filebot/ui/rename/RenamePanel.java b/source/net/sourceforge/filebot/ui/rename/RenamePanel.java index c2b35b64..8291505e 100644 --- a/source/net/sourceforge/filebot/ui/rename/RenamePanel.java +++ b/source/net/sourceforge/filebot/ui/rename/RenamePanel.java @@ -11,6 +11,7 @@ import static net.sourceforge.tuned.ui.TunedUtilities.*; import java.awt.Component; import java.awt.Insets; import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; import java.beans.PropertyChangeEvent; import java.beans.PropertyChangeListener; import java.io.File; @@ -137,12 +138,30 @@ public class RenamePanel extends JComponent { // create fetch popup ActionPopup fetchPopup = createFetchPopup(); + final Action fetchPopupAction = new ShowPopupAction("Fetch", ResourceManager.getIcon("action.fetch")); + JButton fetchButton = createImageButton(fetchPopupAction); namesList.getListComponent().setComponentPopupMenu(fetchPopup); + fetchButton.setComponentPopupMenu(fetchPopup); matchButton.setComponentPopupMenu(fetchPopup); - matchButton.addActionListener(showPopupAction); + namesList.getButtonPanel().add(fetchButton, "gap 0"); + matchButton.addActionListener(new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + // show popup on actionPerformed only when names list is empty + if (renameModel.size() > 0 && !renameModel.hasComplement(0)) { + fetchPopupAction.actionPerformed(e); + } + } + }); // create settings popup - renameButton.setComponentPopupMenu(createSettingsPopup()); + final Action settingsPopupAction = new ShowPopupAction("Options", ResourceManager.getIcon("action.report")); + JButton settingsButton = createImageButton(settingsPopupAction); + ActionPopup settingsPopup = createSettingsPopup(); + settingsButton.setComponentPopupMenu(settingsPopup); + renameButton.setComponentPopupMenu(settingsPopup); + filesList.getButtonPanel().add(settingsButton, "gap 0"); setLayout(new MigLayout("fill, insets dialog, gapx 10px", "[fill][align center, pref!][fill]", "align 33%")); @@ -291,17 +310,18 @@ public class RenamePanel extends JComponent { } - protected final Action showPopupAction = new AbstractAction("Show Popup") { + protected static class ShowPopupAction extends AbstractAction { + + public ShowPopupAction(String name, Icon icon) { + super(name, icon); + } + @Override public void actionPerformed(ActionEvent e) { - // show popup on actionPerformed only when names list is empty - if (renameModel.size() > 0 && !renameModel.hasComplement(0)) { - JComponent source = (JComponent) e.getSource(); - - // display popup below component - source.getComponentPopupMenu().show(source, -3, source.getHeight() + 4); - } + // display popup below component + JComponent source = (JComponent) e.getSource(); + source.getComponentPopupMenu().show(source, -3, source.getHeight() + 4); } };