From 5018d80b51adf82b4f36f38e0b8ad1f24fae6259 Mon Sep 17 00:00:00 2001 From: 4pr0n Date: Sun, 20 Dec 2015 11:58:37 -0800 Subject: [PATCH] Remove/Clear queue option (right-click menu) --- src/main/java/com/rarchives/ripme/App.java | 9 +-- .../com/rarchives/ripme/ui/MainWindow.java | 3 +- .../ripme/ui/QueueMenuMouseListener.java | 80 +++++++++++++++++++ 3 files changed, 86 insertions(+), 6 deletions(-) create mode 100644 src/main/java/com/rarchives/ripme/ui/QueueMenuMouseListener.java diff --git a/src/main/java/com/rarchives/ripme/App.java b/src/main/java/com/rarchives/ripme/App.java index e37ba27e..36376d3f 100644 --- a/src/main/java/com/rarchives/ripme/App.java +++ b/src/main/java/com/rarchives/ripme/App.java @@ -9,7 +9,6 @@ import java.util.Arrays; import java.util.List; import javax.swing.SwingUtilities; -import javax.swing.DefaultListModel; import org.apache.commons.cli.BasicParser; import org.apache.commons.cli.CommandLine; @@ -19,21 +18,21 @@ import org.apache.commons.cli.ParseException; import org.apache.log4j.Logger; import com.rarchives.ripme.ripper.AbstractRipper; -import com.rarchives.ripme.ui.MainWindow; import com.rarchives.ripme.ui.History; import com.rarchives.ripme.ui.HistoryEntry; +import com.rarchives.ripme.ui.MainWindow; import com.rarchives.ripme.ui.UpdateUtils; -import com.rarchives.ripme.utils.Utils; import com.rarchives.ripme.utils.RipUtils; +import com.rarchives.ripme.utils.Utils; /** - * + * Entry point to application. + * Decides to display UI or to run silently via command-line. */ public class App { public static Logger logger; private static final History HISTORY = new History(); - private static DefaultListModel queueListModel; public static void main(String[] args) throws MalformedURLException { Utils.configureLogger(); diff --git a/src/main/java/com/rarchives/ripme/ui/MainWindow.java b/src/main/java/com/rarchives/ripme/ui/MainWindow.java index 99aec6d9..89677745 100644 --- a/src/main/java/com/rarchives/ripme/ui/MainWindow.java +++ b/src/main/java/com/rarchives/ripme/ui/MainWindow.java @@ -110,7 +110,7 @@ public class MainWindow implements Runnable, RipStatusHandler { historyButtonRerip; // Queue - private static JButton optionQueue; + public static JButton optionQueue; private static JPanel queuePanel; private static JList queueList; private static DefaultListModel queueListModel; @@ -396,6 +396,7 @@ public class MainWindow implements Runnable, RipStatusHandler { queueListModel = new DefaultListModel(); queueList = new JList(queueListModel); queueList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); + queueList.addMouseListener(new QueueMenuMouseListener()); queueListScroll = new JScrollPane(queueList, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); diff --git a/src/main/java/com/rarchives/ripme/ui/QueueMenuMouseListener.java b/src/main/java/com/rarchives/ripme/ui/QueueMenuMouseListener.java new file mode 100644 index 00000000..c487cc64 --- /dev/null +++ b/src/main/java/com/rarchives/ripme/ui/QueueMenuMouseListener.java @@ -0,0 +1,80 @@ +package com.rarchives.ripme.ui; + +import java.awt.event.ActionEvent; +import java.awt.event.InputEvent; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.util.Enumeration; + +import javax.swing.AbstractAction; +import javax.swing.Action; +import javax.swing.DefaultListModel; +import javax.swing.JList; +import javax.swing.JPopupMenu; + +import com.rarchives.ripme.utils.Utils; + +public class QueueMenuMouseListener extends MouseAdapter { + private JPopupMenu popup = new JPopupMenu(); + private Action removeSelected, + clearQueue; + private JList queueList; + private DefaultListModel queueListModel; + + @SuppressWarnings("serial") + public QueueMenuMouseListener() { + + removeSelected = new AbstractAction("Remove Selected") { + @Override + public void actionPerformed(ActionEvent ae) { + Object o = queueList.getSelectedValue(); + while (o != null) { + queueListModel.removeElement(o); + o = queueList.getSelectedValue(); + } + updateUI(); + } + }; + popup.add(removeSelected); + + clearQueue = new AbstractAction("Remove All") { + @Override + public void actionPerformed(ActionEvent ae) { + queueListModel.removeAllElements(); + updateUI(); + } + }; + popup.add(clearQueue); + + } + + private void updateUI() { + Utils.setConfigList("queue", (Enumeration) queueListModel.elements()); + + if (queueListModel.size() == 0) { + MainWindow.optionQueue.setText("Queue"); + } + else { + MainWindow.optionQueue.setText("Queue (" + queueListModel.size() + ")"); + } + } + @Override + public void mouseClicked(MouseEvent e) { + if (e.getModifiers() == InputEvent.BUTTON3_MASK) { + if (!(e.getSource() instanceof JList)) { + return; + } + + queueList = (JList) e.getSource(); + queueListModel = (DefaultListModel) queueList.getModel(); + queueList.requestFocus(); + + int nx = e.getX(); + + if (nx > 500) { + nx = nx - popup.getSize().width; + } + popup.show(e.getComponent(), nx, e.getY() - popup.getSize().height); + } + } +}