Author: jflesch
Date: 2007-09-03 23:31:22 +0000 (Mon, 03 Sep 2007)
New Revision: 14954

Modified:
   trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java
   trunk/apps/Thaw/src/thaw/plugins/index/Link.java
   trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java
Log:
Change the behavior of the unknown index list : Display all the unknown 
indexes, and always sort them alphabetically

Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java     2007-09-03 
23:19:14 UTC (rev 14953)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexFolder.java     2007-09-03 
23:31:22 UTC (rev 14954)
@@ -386,9 +386,11 @@

                                if (index)
                                        node = new Index(db, config, target_id);
-                               else
+                               else {
                                        node = new IndexFolder(db, config,
                                                               target_id, 
false);
+                                       
folders.remove(((IndexFolder)node).getName());
+                               }

                                children.remove(node);
                        }
@@ -1076,6 +1078,11 @@
        }


+       public String getName() {
+               return toString();
+       }
+
+
        public String toString() {
                if (id < 0)
                        return 
thaw.core.I18n.getMessage("thaw.plugin.index.yourIndexes");

Modified: trunk/apps/Thaw/src/thaw/plugins/index/Link.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/Link.java    2007-09-03 23:19:14 UTC 
(rev 14953)
+++ trunk/apps/Thaw/src/thaw/plugins/index/Link.java    2007-09-03 23:31:22 UTC 
(rev 14954)
@@ -108,6 +108,24 @@
                return (key_a.equals(key_b));
        }

+       public boolean equals(final Object o) {
+               if (o == this)
+                       return true;
+
+               if (o instanceof Link) {
+
+                       final Link link = (Link)o;
+                       return compare(link);
+
+               } else if (o instanceof Index) {
+
+                       final Index index = (Index)o;
+                       return compare(index);
+               }
+
+               return false;
+       }
+
        public boolean compare(final Index l) {
                String key_a;
                String key_b;
@@ -251,7 +269,7 @@

        public int compareTo(Object o) {
                if (o instanceof Link) {
-                       return 
getIndexName().compareTo(((Link)o).getIndexName());
+                       return 
getIndexName().toLowerCase().compareTo(((Link)o).getIndexName().toLowerCase());
                }

                return 0;

Modified: trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java        
2007-09-03 23:19:14 UTC (rev 14953)
+++ trunk/apps/Thaw/src/thaw/plugins/index/UnknownIndexList.java        
2007-09-03 23:31:22 UTC (rev 14954)
@@ -34,14 +34,8 @@


 public class UnknownIndexList implements MouseListener, ActionListener {
-       public final static int MAX_INDEXES = 50;
+       private Vector linkList; /* only when < MAX_INDEXES */

-       private int offset;
-
-       private Link[] linkList;
-       private boolean full;
-       private Vector vList; /* only when < MAX_INDEXES */
-
        private JPanel panel;
        private JList list;

@@ -52,8 +46,6 @@
        private JPopupMenu rightClickMenu = null;
        private Vector rightClickActions = null;

-       private JMenuItem sortItem = null;
-
        private ToolbarModifier toolbarModifier;
        private Vector toolbarActions;

@@ -65,16 +57,10 @@
                this.queueManager = queueManager;
                this.indexBrowser = indexBrowser;

-               offset = 0;
-               full = false;
-               vList = new Vector();
-               linkList = new Link[UnknownIndexList.MAX_INDEXES+1];
+               linkList = new Vector();

-               for(int i = 0 ; i < linkList.length ; i++)
-                       linkList[i] = null;
+               list = new JList(linkList);

-               list = new JList(vList);
-
                
list.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

                panel = new JPanel(new BorderLayout());
@@ -117,36 +103,20 @@
        }

        public boolean isInList(final Link l) {
-               if (l == null)
-                       return false;
-
-               for (int i = 0 ; i < linkList.length ; i++) {
-                       if (linkList[i] == null)
-                               continue;
-
-                       if (l.compare(linkList[i]))
-                               return true;
-               }
-
-               return false;
+               return (linkList.indexOf(l) >= 0);
        }

-       public void erase(int i) {
-               linkList[linkList.length-1] = null;
-               for (int j = i ; j < linkList.length-1; j++) {
-                       linkList[j] = linkList[j+1];
-               }
-       }

        public boolean removeLink(final Index index) {
                boolean ret = false;

-               for (int i = 0 ; i < linkList.length ; i++) {
-                       if ((linkList[i] != null) && 
linkList[i].compare(index)) {
-                               if (!full)
-                                       vList.remove(linkList[i]);
-                               erase(i);
+               /* to avoid iterator collisions */
+
+               for (int i = 0 ; i < linkList.size() ; i++) {
+                       Link l = (Link)linkList.get(i);
+                       if (l.compare(index)) {
                                ret = true;
+                               linkList.remove(l);
                        }
                }

@@ -159,13 +129,8 @@
        public boolean removeLink(final Link link) {
                boolean ret = false;

-               for (int i = 0 ; i < linkList.length ; i++) {
-                       if ((linkList[i] != null) && linkList[i].compare(link)) 
{
-                               if (!full)
-                                       vList.remove(linkList[i]);
-                               erase(i);
-                               ret = true;
-                       }
+               while (linkList.remove(link)) {
+                       ret = true;
                }

                refresh();
@@ -174,18 +139,14 @@
        }


-       public void makePlace(int i) {
-               int j;
-               for (j = linkList.length - 1; j > i ; j--) {
-                       linkList[j] = linkList[j-1];
-               }
-               linkList[j] = null;
+       public boolean addLink(Link link) {
+               return addLink(link, true);
        }

        /**
         * will check that the link link to an unknown index before adding
         */
-       public boolean addLink(final Link link) {
+       public boolean addLink(final Link link, boolean refresh) {
                if ((link == null)
                    || link.isBlackListed()
                    || Index.isAlreadyKnown(indexBrowser.getDb(), 
link.getPublicKey()) >= 0
@@ -193,25 +154,11 @@
                    || FreenetURIHelper.isObsolete(link.getPublicKey()))
                        return false;

-               makePlace(0);
-               linkList[0] = link;
+               linkList.add(link);

-               if (!full) {
-                       vList.add(0, link);
-                       list.setListData(vList);
-               } else {
-                       list.setListData(linkList);
-               }
+               if (refresh)
+                       refresh();

-               offset++;
-
-               if (offset >= UnknownIndexList.MAX_INDEXES) {
-                       offset = 0;
-                       full = true;
-               }
-
-               refresh();
-
                return true;
        }

@@ -231,10 +178,13 @@

                for (final Iterator it = ll.iterator();
                     it.hasNext();) {
-                       if (addLink(((Link)it.next())))
+                       if (addLink(((Link)it.next()), false))
                                ret = true;
                }

+               if (ret)
+                       refresh();
+
                return ret;
        }

@@ -253,11 +203,7 @@
                        rightClickActions.add(new 
LinkManagementHelper.IndexAdder(item, queueManager,
                                                                                
  indexBrowser, false));

-                       sortItem = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.sortAlphabetically"));
-                       rightClickMenu.add(sortItem);
-                       sortItem.addActionListener(this);

-
                        item = new 
JMenuItem(I18n.getMessage("thaw.plugin.index.copyKeys"));
                        rightClickMenu.add(item);
                        rightClickActions.add(new 
LinkManagementHelper.PublicKeyCopier(item));
@@ -312,6 +258,10 @@


        public void refresh() {
+               java.util.Collections.sort(linkList);
+
+               list.setListData(linkList);
+
                list.revalidate();
                list.repaint();
        }
@@ -338,36 +288,10 @@

        }

+
        public void actionPerformed(ActionEvent e) {
-               if (e.getSource() == sortItem) {
+               if (e.getSource() == autoSorting) {

-                       Vector v;
-
-                       if (full) {
-                               v = new Vector(linkList.length);
-
-                               for (int i = 0 ; i < linkList.length ; i++) {
-                                       if (linkList[i] != null)
-                                               v.add(linkList[i]);
-                               }
-                       } else
-                               v = vList;
-
-                       java.util.Collections.sort(v);
-
-                       if (full) {
-                               for (int i = 0 ; i < linkList.length ; i++) {
-                                       linkList[i] = null;
-                               }
-
-                               v.toArray(linkList);
-                       } else
-                               vList = v;
-
-                       refresh();
-
-               } else if (e.getSource() == autoSorting) {
-
                        applyAutoSortingSetting();

                }


Reply via email to