package scrum.client.search;
import ilarkesto.core.scope.Scope;
import java.util.List;
import java.util.Map;
import scrum.client.collaboration.Wikipage;
import scrum.client.common.AScrumGwtEntity;
import scrum.client.common.AScrumWidget;
import scrum.client.files.File;
import scrum.client.impediments.Impediment;
import scrum.client.issues.Issue;
import scrum.client.project.Quality;
import scrum.client.project.Requirement;
import scrum.client.risks.Risk;
import scrum.client.sprint.Task;
import scrum.client.workspace.PagePanel;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
public class SearchResultsWidget extends AScrumWidget {
private Search search;
@Override
protected Widget onInitialization() {
search = Scope.get().getComponent(Search.class);
return empty();
}
@Override
protected void onUpdate() {
SearchResults searchResults = search.getResults();
if (searchResults.isEmpty()) {
replaceContent(empty());
return;
}
PagePanel page = new PagePanel();
for (Map.Entry<String, List<AScrumGwtEntity>> entry : searchResults.getEntitiesGrouped().entrySet()) {
String title = getTitle(entry.getKey());
page.addHeader(title);
StringBuilder html = new StringBuilder();
html.append("<ul>");
for (AScrumGwtEntity entity : entry.getValue()) {
html.append("<li>");
html.append(entity.toHtml());
html.append("</li>");
}
html.append("</html>");
page.add(new HTML(html.toString()));
}
replaceContent(page);
}
private PagePanel empty() {
return PagePanel.createSimple("Search Results", new Label("Nothing matches your input."));
}
private String getTitle(String key) {
if (key.equals(Requirement.class.getName())) {
return "Stories";
} else if (key.equals(Quality.class.getName())) {
return "Qualities";
} else if (key.equals(Task.class.getName())) {
return "Tasks";
} else if (key.equals(Wikipage.class.getName())) {
return "Wiki Pages";
} else if (key.equals(Issue.class.getName())) {
return "Issues";
} else if (key.equals(Impediment.class.getName())) {
return "Impediments";
} else if (key.equals(File.class.getName())) {
return "Files";
} else if (key.equals(Risk.class.getName())) { return "Risks"; }
return key;
}
}