diff options
author | Yana Stamcheva <yana@jitsi.org> | 2010-05-06 21:01:24 +0000 |
---|---|---|
committer | Yana Stamcheva <yana@jitsi.org> | 2010-05-06 21:01:24 +0000 |
commit | 847a9b41518b2cfd423ca632795fcd97420c6b39 (patch) | |
tree | eda6d058036019fe949c9a3e6a3bd7013b047126 /src/net/java/sip/communicator/impl/gui/main/contactlist/SearchFilter.java | |
parent | b668f527c286f42ca62b1372770b3170e35157d9 (diff) | |
download | jitsi-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.java | 33 |
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); } /** |