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