Project

General

Profile

« Previous | Next » 

Revision 08267c16

Added by Patrick Plitzner about 5 years ago

ref #8011 Use term search in feature tree context menu to add features

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/search/facet/SearchController.java
18 18
import org.eclipse.swt.SWT;
19 19
import org.eclipse.swt.events.KeyEvent;
20 20
import org.eclipse.swt.events.KeyListener;
21
import org.eclipse.swt.events.SelectionEvent;
22
import org.eclipse.swt.events.SelectionListener;
21 23
import org.eclipse.swt.widgets.Composite;
22 24

  
23 25
import eu.etaxonomy.taxeditor.model.MessagingUtils;
......
27 29
 * @since Jan 22, 2019
28 30
 *
29 31
 */
30
public abstract class SearchController<S extends SearchResult<T>, T> implements KeyListener{
32
public abstract class SearchController<S extends SearchResult<T>, T> implements KeyListener, SelectionListener{
31 33

  
32 34
    private SearchComposite composite;
33 35
    private List<S> searchResults = new ArrayList<>();
34 36
    private Set<Facet> appliedFacets = new HashSet<>();
37
    private List<CheckBoxSearchResultComposite<T, S>> searchResultComposites = new ArrayList<>();
35 38

  
36 39
    public SearchController(SearchComposite composite) {
37 40
        this.composite = composite;
38 41
        composite.getTxtSearch().addKeyListener(this);
42
        composite.getBtnSearchButton().addSelectionListener(this);
39 43
    }
40 44

  
41 45
    protected abstract List<S> searchResults(String searchString);
42 46

  
43
    protected abstract void createResultComposite(S result, Composite parent);
47
    protected abstract CheckBoxSearchResultComposite<T, S> createResultComposite(S result, Composite parent);
44 48

  
45 49
    protected abstract Comparator<S> getResultComparator(String searchString);
46 50

  
51
    protected abstract List<S> getSelectedResults();
52

  
47 53
    private void search(String searchString){
48 54
        searchResults.clear();
55
        searchResultComposites.clear();
49 56

  
50 57
        searchResults = searchResults(searchString);
51 58
        if(searchResults.size()>500){
......
73 80

  
74 81
    private Set<Facet> createResults(List<S> results) {
75 82
        Set<Facet> facets = new HashSet<>();
83
        searchResultComposites.clear();
76 84
        for (S result : results) {
77
            createResultComposite(result, composite.getSearchResultComposite());
85
            searchResultComposites.add(createResultComposite(result, composite.getSearchResultComposite()));
78 86
            facets.addAll(result.getFacets());
79 87
        }
80 88
        return facets;
81 89
    }
82 90

  
83
    @Override
84
    public void keyPressed(KeyEvent e) {
85
        if(e.keyCode==SWT.CR && e.widget==composite.getTxtSearch()){
86
            composite.clear();
87
            search(composite.getTxtSearch().getText());
88
        }
89
    }
90

  
91
    @Override
92
    public void keyReleased(KeyEvent e) {
93
    }
94

  
95 91
    public void applyFilter(FilterComposite filterComposite) {
96 92

  
97 93
        composite.clearResults();
......
104 100
            appliedFacets.remove(facet);
105 101
        }
106 102

  
103
        searchResultComposites.clear();
107 104
        for (S searchResult : searchResults) {
108 105
            if(searchResult.hasAnyFacet(appliedFacets)){
109
                createResultComposite(searchResult, composite.getSearchResultComposite());
106
                searchResultComposites.add(createResultComposite(searchResult, composite.getSearchResultComposite()));
110 107
            }
111 108
        }
112 109

  
113 110
        composite.refresh();
114 111
    }
115 112

  
113
    private void search(){
114
        composite.clear();
115
        search(composite.getTxtSearch().getText());
116
    }
117

  
118
    public List<S> getSelectedSearchResults(){
119
        List<S> selectedSearchResults = new ArrayList<>();
120
        searchResultComposites.stream()
121
        .filter(resultComposite->resultComposite.getBtnCheck().getSelection())
122
        .forEach(selected->selectedSearchResults.add(selected.getResult()));
123
        return selectedSearchResults;
124
    }
125

  
126
    @Override
127
    public void keyPressed(KeyEvent e) {
128
        if(e.keyCode==SWT.CR && e.widget==composite.getTxtSearch()){
129
            search();
130
        }
131
    }
132

  
133
    @Override
134
    public void keyReleased(KeyEvent e) {
135
    }
136

  
137
    @Override
138
    public void widgetSelected(SelectionEvent e) {
139
        if(e.widget==composite.getBtnSearchButton()){
140
            search();
141
        }
142
    }
143

  
144
    @Override
145
    public void widgetDefaultSelected(SelectionEvent e) {
146
    }
147

  
116 148
}

Also available in: Unified diff