import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
+import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.Set;
+import org.eclipse.jface.layout.GridDataFactory;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyEvent;
import org.eclipse.swt.events.KeyListener;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.events.SelectionListener;
+import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Group;
import eu.etaxonomy.taxeditor.model.MessagingUtils;
}
private void createFilterButtons(Set<Facet> facets) {
+ Map<String, List<Facet>> categoryToFacetsMap = new HashMap<>();
for (Facet facet : facets) {
- if(facet.getFacet()!=null){
- FilterComposite filterComposite = new FilterComposite(facet, this, composite.getFilterListComposite(), SWT.NONE);
- appliedFacets.add(facet);
+ List<Facet> categoryFacets = categoryToFacetsMap.get(facet.getCategory());
+ if(categoryFacets==null){
+ categoryFacets = new ArrayList<>();
}
+ categoryFacets.add(facet);
+ categoryToFacetsMap.put(facet.getCategory(), categoryFacets);
}
+ for (Entry<String, List<Facet>> entry: categoryToFacetsMap.entrySet()) {
+ String category = entry.getKey();
+ // create group
+ Group group = new Group(composite.getFilterListComposite(), SWT.NONE);
+ group.setLayout(new GridLayout());
+ GridDataFactory.fillDefaults().applyTo(group);
+ group.setText(category!=null?category:"None");
+ // fill group with facet filters
+ List<Facet> categoryFacets = entry.getValue();
+ for (Facet facet : categoryFacets) {
+ if(facet.getFacet()!=null){
+ FilterComposite filterComposite = new FilterComposite(facet, this, group, SWT.NONE);
+ appliedFacets.add(facet);
+ }
+ }
+ }
+
}
private Set<Facet> createResults(List<S> results) {
import java.util.HashSet;
import java.util.Set;
+import eu.etaxonomy.cdm.model.common.TermType;
import eu.etaxonomy.cdm.persistence.dto.TermDto;
import eu.etaxonomy.cdm.remote.l10n.TermRepresentation_L10n;
import eu.etaxonomy.taxeditor.view.search.facet.Facet;
protected Set<Facet> initFacets(TermDto content) {
Set<Facet> facets = new HashSet<>();
content.localize(new TermRepresentation_L10n());
- facets.add(new Facet(content.getVocRepresentation_L10n()));
+ TermType termType = content.getTermType();
+ facets.add(new Facet(content.getVocRepresentation_L10n(), termType!=null?termType.getMessage():null));
return facets;
}