Author: jflesch
Date: 2007-01-26 19:39:11 +0000 (Fri, 26 Jan 2007)
New Revision: 11619

Modified:
   trunk/apps/Thaw/src/thaw/i18n/thaw.properties
   trunk/apps/Thaw/src/thaw/plugins/index/File.java
   trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java
   trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java
Log:
Fix some display troubles + add an option to remove / cancel the corresponding 
transfers of the file list from a index

Modified: trunk/apps/Thaw/src/thaw/i18n/thaw.properties
===================================================================
--- trunk/apps/Thaw/src/thaw/i18n/thaw.properties       2007-01-26 07:03:14 UTC 
(rev 11618)
+++ trunk/apps/Thaw/src/thaw/i18n/thaw.properties       2007-01-26 19:39:11 UTC 
(rev 11619)
@@ -53,6 +53,7 @@
 thaw.common.priority=Priority

 thaw.common.clearFinished=Remove finished transfers
+# The following one *must* specify that this is about the transfer(s) only !
 thaw.common.removeFromTheList=Cancel and remove selected transfers
 thaw.common.cancel=Cancel
 thaw.common.delay=Delay

Modified: trunk/apps/Thaw/src/thaw/plugins/index/File.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/File.java    2007-01-26 07:03:14 UTC 
(rev 11618)
+++ trunk/apps/Thaw/src/thaw/plugins/index/File.java    2007-01-26 19:39:11 UTC 
(rev 11619)
@@ -105,6 +105,10 @@
                }
        }

+       public void forceReload() {
+               reloadDataFromDb(id);
+       }
+
        public void setParent(int parent_id) {
                try {
                        PreparedStatement st;
@@ -153,9 +157,6 @@

                tr = q.getTransfer(getPublicKey());

-               if (tr == null || (tr.isFinished() && tr.isSuccessful()))
-                       return null;
-
                return tr;
        }


Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java    
2007-01-26 07:03:14 UTC (rev 11618)
+++ trunk/apps/Thaw/src/thaw/plugins/index/FileManagementHelper.java    
2007-01-26 19:39:11 UTC (rev 11619)
@@ -16,6 +16,7 @@
 import thaw.core.I18n;
 import thaw.core.Logger;
 import thaw.fcp.FCPQueueManager;
+import thaw.fcp.FCPTransferQuery;


 public class FileManagementHelper {
@@ -311,4 +312,65 @@
                final Clipboard cp = tk.getSystemClipboard();
                cp.setContents(st, null);
        }
+
+
+
+       public static class TransferCanceller implements FileAction {
+               private AbstractButton src;
+               private FCPQueueManager queueManager;
+               private IndexBrowserPanel indexBrowser;
+               private Vector t;
+
+               public TransferCanceller(FCPQueueManager queueManager,
+                                        IndexBrowserPanel indexBrowser,
+                                        final AbstractButton actionSource) {
+                       src = actionSource;
+                       this.queueManager = queueManager;
+                       this.indexBrowser = indexBrowser;
+                       if (src != null)
+                               src.addActionListener(this);
+               }
+
+               public void setTarget(final Vector targets) {
+                       boolean enable = false;
+
+                       t = targets;
+
+                       if (targets != null) {
+                               for (Iterator it = targets.iterator();
+                                    it.hasNext();) {
+                                       File file = (File)it.next();
+                                       if (file.getTransfer(queueManager) != 
null) {
+                                               enable = true;
+                                               break;
+                                       }
+                               }
+                       }
+
+                       src.setEnabled(enable);
+               }
+
+               public void actionPerformed(final ActionEvent e) {
+                       FileManagementHelper.cancelTransfers(queueManager, 
indexBrowser, t);
+               }
+       }
+
+
+       static void cancelTransfers(FCPQueueManager queueManager,
+                                   IndexBrowserPanel indexBrowser,
+                                   Vector files) {
+               FCPTransferQuery transfer;
+
+               for (Iterator it = files.iterator();
+                    it.hasNext();) {
+                       File file = (File)it.next();
+                       if ((transfer = file.getTransfer(queueManager)) != 
null) {
+                               if(transfer.stop(queueManager)) {
+                                       queueManager.remove(transfer);
+                               }
+                       }
+               }
+
+               indexBrowser.getTables().getFileTable().refresh();
+       }
 }

Modified: trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java       2007-01-26 
07:03:14 UTC (rev 11618)
+++ trunk/apps/Thaw/src/thaw/plugins/index/FileTable.java       2007-01-26 
19:39:11 UTC (rev 11619)
@@ -30,6 +30,7 @@
 import thaw.core.I18n;
 import thaw.core.Logger;
 import thaw.core.IconBox;
+import thaw.core.FreenetURIHelper;
 import thaw.plugins.ToolbarModifier;
 import thaw.fcp.FCPClientGet;
 import thaw.fcp.FCPClientPut;
@@ -68,7 +69,9 @@

        private TransferRefresher refresher;

-       public FileTable(final FCPQueueManager queueManager, IndexBrowserPanel 
indexBrowser, final Config config) {
+       public FileTable(final FCPQueueManager queueManager,
+                        IndexBrowserPanel indexBrowser,
+                        final Config config) {
                this.indexBrowser = indexBrowser;
                this.queueManager = queueManager;

@@ -124,6 +127,10 @@
                rightClickMenu.add(item);
                rightClickActions.add(new 
FileManagementHelper.FileKeyComputer(queueManager, indexBrowser, item));

+               item = new 
JMenuItem(I18n.getMessage("thaw.common.removeFromTheList"));
+               rightClickMenu.add(item);
+               rightClickActions.add(new 
FileManagementHelper.TransferCanceller(queueManager, indexBrowser, item));
+
                item = new JMenuItem(I18n.getMessage("thaw.common.remove"));
                button = new JButton(IconBox.delete);
                button.setToolTipText(I18n.getMessage("thaw.common.remove"));
@@ -456,7 +463,7 @@

                        while(running) {
                                try {
-                                       Thread.sleep(5000);
+                                       Thread.sleep(500);
                                } catch(InterruptedException e) {
                                        /* \_o< */
                                }
@@ -469,11 +476,33 @@

                                i = 0;

-                               for (Iterator it = 
fileListModel.getFiles().iterator() ;
-                                    it.hasNext(); i++) {
-                                       thaw.plugins.index.File file = 
(thaw.plugins.index.File)it.next();
-                                       if (file.getTransfer(queueManager) != 
null)
+                               try {
+                                       for (Iterator it = 
fileListModel.getFiles().iterator() ;
+                                            it.hasNext(); i++) {
+                                               thaw.plugins.index.File file = 
(thaw.plugins.index.File)it.next();
+
+                                               if (file.getPublicKey() == null
+                                                   || 
!FreenetURIHelper.isAKey(file.getPublicKey())) {
+                                                       FCPTransferQuery 
transfer;
+                                                       transfer = 
file.getTransfer(queueManager);
+
+                                                       if (transfer != null) {
+                                                               if 
(transfer.isSuccessful())
+                                                                       
file.forceReload();
+                                                       }
+                                               }
+
+                                               /* won't query the database */
                                                fileListModel.refresh(i);
+
+                                               try {
+                                                       Thread.sleep(100);
+                                               } catch(InterruptedException e) 
{
+                                                       /* \_o< */
+                                               }
+                                       }
+                               } catch(final 
java.util.ConcurrentModificationException e) {
+                                       Logger.debug(this, "Collision : 
Restarting refresh from the beginnin");
                                }
                        }
                }


Reply via email to