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);
        }


Reply via email to