Author: jflesch
Date: 2006-07-10 20:42:30 +0000 (Mon, 10 Jul 2006)
New Revision: 9550
Modified:
trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
trunk/apps/Thaw/src/thaw/i18n/thaw.properties
trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
Log:
User can now cancel downloads and copy keys to clipboard
Modified: trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java
===================================================================
--- trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java 2006-07-10 18:58:40 UTC
(rev 9549)
+++ trunk/apps/Thaw/src/thaw/fcp/FCPClientGet.java 2006-07-10 20:42:30 UTC
(rev 9550)
@@ -338,9 +338,32 @@
public boolean stop(FCPQueueManager queryManager) {
- Logger.info(this, "stop()");
- /* TODO */
- return false;
+ Logger.info(this, "Stop fetching of the key : "+getFileKey());
+
+ if(!isRunning() || isFinished()) {
+ Logger.notice(this, "Can't stop. Not running");
+ return true;
+ }
+
+ if(isPersistent()) {
+ FCPMessage stopMessage = new FCPMessage();
+
+ stopMessage.setMessageName("RemovePersistentRequest");
+
+ if(globalQueue)
+ stopMessage.setValue("Global", "true");
+ else
+ stopMessage.setValue("Global", "false");
+
+ stopMessage.setValue("Identifier", identifier);
+
+
queueManager.getQueryManager().writeMessage(stopMessage);
+ } else {
+ Logger.warning(this, "Can't stop a non-persistent
query, will continue in background ...");
+ return false;
+ }
+
+ return true;
}
public int getThawPriority() {
Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-07-10 18:58:40 UTC
(rev 9549)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties 2006-07-10 20:42:30 UTC
(rev 9550)
@@ -38,6 +38,11 @@
thaw.common.priority=Priority
+thaw.common.remove=Remove
+thaw.common.cancel=Cancel
+thaw.common.delay=Delay
+thaw.common.copyKeysToClipboard=Copy keys to clipboard
+
## Errors
thaw.error.idAlreadyUsed=Unable to connect. Our Id is already used by another
client connected to the node.
Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
2006-07-10 18:58:40 UTC (rev 9549)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueuePanel.java
2006-07-10 20:42:30 UTC (rev 9550)
@@ -18,12 +18,22 @@
import java.awt.event.MouseListener;
import java.awt.event.MouseEvent;
+import javax.swing.JPopupMenu;
+import javax.swing.JMenuItem;
+import java.awt.event.ActionListener;
+import java.awt.event.ActionEvent;
+
+import java.awt.Toolkit;
+import java.awt.datatransfer.Clipboard;
+import java.awt.datatransfer.ClipboardOwner;
+import java.awt.datatransfer.StringSelection;
+
import thaw.core.*;
import thaw.i18n.I18n;
import thaw.fcp.*;
-public class QueuePanel implements MouseListener {
+public class QueuePanel implements MouseListener, ActionListener,
ClipboardOwner {
private Core core;
private JLabel label;
@@ -36,8 +46,15 @@
private QueueTableModel tableModel;
private DetailPanel detailPanel;
- private int lastRowSelected = -1;
+ private JPopupMenu rightClickMenu;
+ private JMenuItem removeItem;
+ private JMenuItem cancelItem;
+ private JMenuItem delayItem;
+ private JMenuItem copyKeysItem;
+ private int lastRowSelected = -1; /* Used for detail panel */
+ private int[] selectedRows;
+
private boolean insertionQueue = false;
@@ -69,6 +86,21 @@
table.setDefaultRenderer( table.getColumnClass(0), new
ProgressRenderer(table, tableModel) );
tableModel.addTableModelListener(table);
+
+ rightClickMenu = new JPopupMenu();
+ removeItem = new
JMenuItem(I18n.getMessage("thaw.common.remove"));
+ cancelItem = new
JMenuItem(I18n.getMessage("thaw.common.cancel"));
+ delayItem = new JMenuItem(I18n.getMessage("thaw.common.delay"));
+ copyKeysItem = new
JMenuItem(I18n.getMessage("thaw.common.copyKeysToClipboard"));
+
+ rightClickMenu.add(removeItem);
+ rightClickMenu.add(cancelItem);
+ rightClickMenu.add(copyKeysItem);
+
+ removeItem.addActionListener(this);
+ cancelItem.addActionListener(this);
+ copyKeysItem.addActionListener(this);
+
table.addMouseListener(this);
/* If a queue is already existing, we need to add it */
@@ -170,8 +202,57 @@
}
+ public void actionPerformed(ActionEvent e) {
+ Toolkit tk = Toolkit.getDefaultToolkit();
+ String keys = "";
+
+ for(int i = 0 ; i < selectedRows.length;i++) {
+ FCPTransferQuery query = tableModel.getQuery(i);
+
+ if(e.getSource() == removeItem) {
+ if(query.isRunning() &&
!query.isFinished())
+
query.stop(core.getQueueManager());
+ core.getQueueManager().remove(query);
+
+ tableModel.removeQuery(query);
+ }
+
+ if(e.getSource() == cancelItem) {
+ if(query.isRunning() &&
!query.isFinished())
+
query.stop(core.getQueueManager());
+ }
+
+ if(e.getSource() == delayItem) {
+ if(query.isRunning() &&
!query.isFinished()) {
+
query.stop(core.getQueueManager());
+
core.getQueueManager().moveFromRunningToPendingQueue(query);
+ }
+ }
+
+ if(e.getSource() == copyKeysItem) {
+ keys = keys + query.getFileKey() + "\n";
+ }
+
+ } /* for i in selectedRows */
+
+
+
+ if(e.getSource() == copyKeysItem) {
+ StringSelection st = new StringSelection(keys);
+ Clipboard cp = tk.getSystemClipboard();
+ cp.setContents(st, this);
+ }
+ }
+
public void mouseClicked(MouseEvent e) {
- refresh();
+ if(e.getButton() == MouseEvent.BUTTON3) {
+ selectedRows = table.getSelectedRows();
+ rightClickMenu.show(e.getComponent(), e.getX(),
e.getY());
+ }
+
+ if(e.getButton() == MouseEvent.BUTTON1) {
+ refresh();
+ }
}
public void mouseEntered(MouseEvent e) {
@@ -190,5 +271,9 @@
}
+ public void lostOwnership(Clipboard clipboard,
java.awt.datatransfer.Transferable contents) {
+ /* we dont care */
+ }
+
}
Modified: trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
2006-07-10 18:58:40 UTC (rev 9549)
+++ trunk/apps/Thaw/src/thaw/plugins/queueWatcher/QueueTableModel.java
2006-07-10 20:42:30 UTC (rev 9550)
@@ -101,6 +101,15 @@
notifyObservers();
}
+ public void removeQuery(FCPTransferQuery query) {
+ ((Observable)query).deleteObserver(this);
+
+ queries.remove(query);
+
+ notifyObservers();
+ }
+
+
public FCPTransferQuery getQuery(int row) {
return (FCPTransferQuery)queries.get(row);
}