ref #8011 Use termType as facet category
authorPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 15 Feb 2019 11:49:21 +0000 (12:49 +0100)
committerPatrick Plitzner <p.plitzner@bgbm.org>
Fri, 15 Feb 2019 11:49:21 +0000 (12:49 +0100)
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchController.java
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/term/TermSearchResult.java

index 751e5694d7fc6d7d0e99b8c3adf896f9e237d727..f1d4ddd35dea618076fcf7a2b8aa4bdfbc3bb307 100644 (file)
@@ -11,16 +11,22 @@ package eu.etaxonomy.taxeditor.view.search.facet;
 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;
 
@@ -70,12 +76,32 @@ public abstract class SearchController<S extends SearchResult<T>, T> implements
     }
 
     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) {
index 558871f6c65c31b29e5e0b7dfd4e324ac26623c6..686cc9c45e1935322425161bd39f07b84abcd32c 100644 (file)
@@ -11,6 +11,7 @@ package eu.etaxonomy.taxeditor.view.search.facet.term;
 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;
@@ -31,7 +32,8 @@ public class TermSearchResult extends SearchResult<TermDto> {
     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;
     }