package org.chartsy.chatsy.chat.search; import org.chartsy.chatsy.chat.util.SwingWorker; import org.chartsy.chatsy.chatimpl.search.users.UserSearchService; import java.util.ArrayList; import java.util.Collection; import java.util.List; public class SearchManager { private List<Searchable> searchServices = new ArrayList<Searchable>(); private SearchService ui; private static SearchManager singleton; private static final Object LOCK = new Object(); public static SearchManager getInstance() { synchronized (LOCK) { if (null == singleton) { SearchManager controller = new SearchManager(); singleton = controller; return controller; } } return singleton; } private SearchManager() { ui = new SearchService(); SwingWorker worker = new SwingWorker() { UserSearchService searchWizard; public Object construct() { searchWizard = new UserSearchService(); return searchWizard; } public void finished() { if (searchWizard.getSearchServices() != null) { ui.setActiveSearchService(searchWizard); addSearchService(searchWizard); } } }; worker.start(); } public void addSearchService(Searchable searchable) { searchServices.add(searchable); } public void removeSearchService(Searchable searchable) { searchServices.remove(searchable); } public Collection<Searchable> getSearchServices() { return searchServices; } public Collection<String> getSearchServicesNames() { List<String> names = new ArrayList<String>(); for (Searchable searchable : searchServices) names.add(searchable.getName()); return names; } public SearchService getSearchServiceUI() { return ui; } }