/** * Carrega todas as categorias (nome do projecto) que utilizaram o ponto de extensão * "SearchProvider". Além disso, para cada objecto presente na lista de resultados de cada * categoria, atribuí o provider correspondente e faz um mapeamento dessa ligação entre objecto e * provider num hashmap. * * @param text */ private void loadCategories(String text) { providersCategories.clear(); for (Map.Entry<SearchProvider, ExternalImage> entry : providerAndImageMap.entrySet()) { ProviderCategory category = new ProviderCategory( entry.getKey().getClass().getSimpleName(), pidescoServices.getImageFromPlugin( entry.getValue().getPlugin(), entry.getValue().getImageName())); category.hits = entry.getKey().getResults(text); for (Object o : category.hits) { providerAndObjectMap.put(o, entry.getKey()); } if (!category.hits.isEmpty()) providersCategories.add(category); } if (providersCategories.isEmpty()) providersCategories.add(new ProviderCategory(NO_RESULTS_FOUND, null)); tree.setInput(providersCategories); tree.expandAll(); }
/** Recebe a imagem que tem que desenhar, para o objecto passado como argumento */ public Image getImage(Object object) { if (object instanceof ProviderCategory) { for (ProviderCategory category : providersCategories) { if (object.equals(category)) return category.getIcon(); } } else { for (Map.Entry<Object, SearchProvider> entry : providerAndObjectMap.entrySet()) { if (entry.getKey().equals(object)) return entry.getValue().setImage(object); } } return null; }