package org.limewire.ui.swing.search; import java.util.Collection; import org.limewire.core.api.search.Search; import org.limewire.core.api.search.SearchListener; import org.limewire.core.api.search.SearchResult; import org.limewire.ui.swing.search.model.SearchResultsModel; import org.limewire.ui.swing.search.model.VisualSearchResult; import ca.odell.glazedlists.event.ListEvent; import ca.odell.glazedlists.event.ListEventListener; /** * An implementation of SearchListener to handle search results and update the * Swing UI. Search events are forwarded to the data model and UI using the * event dispatch thread. */ class SwingSearchListener implements SearchListener { private final SearchResultsModel searchResultsModel; private final SearchNavItem searchNavItem; /** * Constructs a SwingSearchListener for the specified search model, * sponsored results view, and navigation item. */ public SwingSearchListener(SearchResultsModel searchResultsModel, SearchNavItem searchNavItem) { this.searchResultsModel = searchResultsModel; this.searchNavItem = searchNavItem; // sync UI result count to real count. searchResultsModel.getUnfilteredList().addListEventListener(new ListEventListener<VisualSearchResult>() { public void listChanged(ListEvent<VisualSearchResult> listChanges) { SwingSearchListener.this.searchNavItem.sourceCountUpdated( SwingSearchListener.this.searchResultsModel.getResultCount()); } }); } @Override public void handleSearchResult(Search search, SearchResult searchResult) { } @Override public void handleSearchResults(Search search, Collection<? extends SearchResult> searchResults) { } @Override public void searchStarted(Search search) { } @Override public void searchStopped(Search search) { } }