Project

General

Profile

Download (2.83 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2019 EDIT
3
* European Distributed Institute of Taxonomy
4
* http://www.e-taxonomy.eu
5
*
6
* The contents of this file are subject to the Mozilla Public License Version 1.1
7
* See LICENSE.TXT at the top of this package for the full license terms.
8
*/
9
package eu.etaxonomy.taxeditor.view.search.term;
10

    
11
import java.util.ArrayList;
12
import java.util.HashSet;
13
import java.util.List;
14
import java.util.Set;
15

    
16
import org.eclipse.swt.SWT;
17
import org.eclipse.swt.events.KeyEvent;
18
import org.eclipse.swt.events.KeyListener;
19

    
20
/**
21
 * @author pplitzner
22
 * @since Jan 22, 2019
23
 *
24
 */
25
public class TermSearchController implements KeyListener{
26

    
27
    private TermSearchComposite composite;
28
    private List<SearchResult> searchResults = new ArrayList<>();
29
    private Set<Facet> appliedFacets = new HashSet<>();
30

    
31
    public TermSearchController(TermSearchComposite composite) {
32
        this.composite = composite;
33
        composite.getTxtSearch().addKeyListener(this);
34
    }
35

    
36
    private void search(String searchString){
37
        searchResults.clear();
38

    
39
        searchResults.add(new SearchResult("Refffffffffffffffffffffffffffffffffffffffffffffffs2"));
40
        searchResults.add(new SearchResult("Res3"));
41
        searchResults.add(new SearchResult("Cas2"));
42

    
43
        Set<Facet> facets = createResults(searchResults);
44

    
45
        createFilterButtons(facets);
46

    
47
        composite.refresh();
48
    }
49

    
50
    private void createFilterButtons(Set<Facet> facets) {
51
        for (Facet facet : facets) {
52
            FilterComposite filterComposite = new FilterComposite(facet, this, composite.getFilterListComposite(), SWT.NONE);
53
        }
54
    }
55

    
56
    private Set<Facet> createResults(List<SearchResult> results) {
57
        Set<Facet> facets = new HashSet<>();
58
        for (SearchResult result : results) {
59
            createResultComposite(result);
60
            facets.addAll(result.getFacets());
61
        }
62
        return facets;
63
    }
64

    
65
    private void createResultComposite(SearchResult result) {
66
        new SearchResultComposite(result, composite.getSearchResultComposite(), SWT.NONE);
67
    }
68

    
69
    @Override
70
    public void keyPressed(KeyEvent e) {
71
        if(e.keyCode==SWT.CR && e.widget==composite.getTxtSearch()){
72
            composite.clear();
73
            search(composite.getTxtSearch().getText());
74
        }
75
    }
76

    
77
    @Override
78
    public void keyReleased(KeyEvent e) {
79
    }
80

    
81
    public void applyFilter(FilterComposite filterComposite) {
82

    
83
        composite.clearResults();
84

    
85
        Facet facet = filterComposite.getFacet();
86
        if(filterComposite.isFilterActive()){
87
            appliedFacets.add(facet);
88
        }
89
        else{
90
            appliedFacets.remove(facet);
91
        }
92

    
93
        for (SearchResult searchResult : searchResults) {
94
            if(!searchResult.hasAnyFacet(appliedFacets)){
95
                createResultComposite(searchResult);
96
            }
97
        }
98

    
99
        composite.refresh();
100
    }
101

    
102
}
(9-9/9)