aboutsummaryrefslogtreecommitdiffstats
path: root/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
diff options
context:
space:
mode:
authorYana Stamcheva <yana@jitsi.org>2010-05-06 21:01:24 +0000
committerYana Stamcheva <yana@jitsi.org>2010-05-06 21:01:24 +0000
commit847a9b41518b2cfd423ca632795fcd97420c6b39 (patch)
treeeda6d058036019fe949c9a3e6a3bd7013b047126 /src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
parentb668f527c286f42ca62b1372770b3170e35157d9 (diff)
downloadjitsi-847a9b41518b2cfd423ca632795fcd97420c6b39.zip
jitsi-847a9b41518b2cfd423ca632795fcd97420c6b39.tar.gz
jitsi-847a9b41518b2cfd423ca632795fcd97420c6b39.tar.bz2
Search Filter: Cancel all already launched queries.
Diffstat (limited to 'src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java')
-rw-r--r--src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java33
1 files changed, 23 insertions, 10 deletions
diff --git a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
index ddee073..6d36e1f 100644
--- a/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
+++ b/src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java
@@ -59,9 +59,10 @@ public class SearchFilter
private Collection<ExternalContactSource> contactSources;
/**
- * The current operating query.
+ * The list of currently running queries.
*/
- private ContactQuery currentQuery;
+ private Collection<ContactQuery> currentQueries
+ = new LinkedList<ContactQuery>();
/**
* The type of the search source. One of the above defined DEFAUT_SOURCE or
@@ -109,19 +110,21 @@ public class SearchFilter
ContactSourceService sourceService
= contactSource.getContactSourceService();
+ ContactQuery contactQuery;
if (sourceService instanceof ExtendedContactSourceService)
- currentQuery
+ contactQuery
= ((ExtendedContactSourceService) sourceService)
.queryContactSource(filterPattern);
else
- currentQuery = sourceService.queryContactSource(filterString);
+ contactQuery = sourceService.queryContactSource(filterString);
// Add first available results.
- this.addMatching(currentQuery.getQueryResults(), treeModel);
+ this.addMatching(contactQuery.getQueryResults(), treeModel);
- currentQuery.addContactQueryListener(GuiActivator.getContactList());
+ currentQueries.add(contactQuery);
+ contactQuery.addContactQueryListener(GuiActivator.getContactList());
- return currentQuery;
+ return contactQuery;
}
/**
@@ -176,12 +179,22 @@ public class SearchFilter
}
/**
- * Stops the current query.
+ * Stops all currently running queries.
*/
public void stopFilter()
{
- if (currentQuery != null)
- currentQuery.cancel();
+ Iterator<ContactQuery> queriesIter = currentQueries.iterator();
+ while (queriesIter.hasNext())
+ queriesIter.next().cancel();
+ }
+
+ /**
+ * Removes the given query from the list of currently processed queries.
+ * @param contactQuery the <tt>ContactQuery</tt> to remove
+ */
+ public void removeCurrentQuery(ContactQuery contactQuery)
+ {
+ currentQueries.remove(contactQuery);
}
/**