Project

General

Profile

« Previous | Next » 

Revision 9e521c57

Added by Patrick Plitzner over 5 years ago

ref #7806 Implement selection dialog for ontologies

View differences:

eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportPresenter.java
11 11
import java.util.ArrayList;
12 12
import java.util.Collection;
13 13
import java.util.Iterator;
14
import java.util.stream.Collectors;
14 15

  
15 16
import org.eclipse.jface.util.LocalSelectionTransfer;
16
import org.eclipse.jface.viewers.ArrayContentProvider;
17
import org.eclipse.jface.viewers.ComboViewer;
18 17
import org.eclipse.jface.viewers.ISelection;
19 18
import org.eclipse.jface.viewers.IStructuredSelection;
20 19
import org.eclipse.jface.viewers.StructuredSelection;
20
import org.eclipse.jface.window.Window;
21 21
import org.eclipse.swt.SWT;
22 22
import org.eclipse.swt.dnd.DND;
23 23
import org.eclipse.swt.dnd.DragSourceAdapter;
......
37 37
import eu.etaxonomy.taxeditor.preference.Resources;
38 38
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.ParserUtil;
39 39
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TermParser;
40
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TerminologyParser;
41 40
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestSearch;
42
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestSuggest;
43
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestTerminologies;
44 41
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper;
45 42
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper;
46 43

  
......
51 48
 */
52 49
public class GfBioTerminologyImportPresenter {
53 50

  
54
    private static final String NO_CONNECTION_TITLE = Messages.GfBioTerminologyImportPresenter_NO_CONNECTION_TITLE;
55
    private static final String NO_CONNECTION_MESSAGE = Messages.GfBioTerminologyImportPresenter_NO_CONNECTION_MESSAGE;
51
    public static final String NO_CONNECTION_TITLE = Messages.GfBioTerminologyImportPresenter_NO_CONNECTION_TITLE;
52
    public static final String NO_CONNECTION_MESSAGE = Messages.GfBioTerminologyImportPresenter_NO_CONNECTION_MESSAGE;
56 53
    private static final String TXT_SEARCH_DEFAULT = Messages.GfBioTerminologyImportPresenter_TEXT_SEARCH_DEFAULT;
57 54

  
58 55
    private GfBioTerminologyImportComposite composite;
56
    private Collection<TerminologyWrapper> selectedOntologies = new ArrayList<>();
59 57

  
60 58
    public GfBioTerminologyImportPresenter(GfBioTerminologyImportComposite composite) {
61 59
        super();
......
99 97
            }
100 98
        });
101 99

  
102
        //terminology combo
103
        String response = new RequestTerminologies().request();
104
        if(response==null){
105
            MessagingUtils.informationDialog(NO_CONNECTION_TITLE, NO_CONNECTION_MESSAGE);
106
            return;
107
        }
108
        Collection<TerminologyWrapper> terminologies = TerminologyParser.parse(response);
109
        String comboDefaultText = Messages.GfBioTerminologyImportPresenter_COMBO_DEFAULT;
110
        ComboViewer comboOntologies = composite.getComboTerminologies();
111
        comboOntologies.setLabelProvider(new TerminologyLabelProvider());
112
        comboOntologies.setContentProvider(new ArrayContentProvider());
113
        comboOntologies.setInput(terminologies);
114
        comboOntologies.getCombo().setText(comboDefaultText);
115

  
116
        composite.getBtnRemoveTerminology().addSelectionListener(new SelectionAdapter() {
100
        composite.getBtnChooseOntology().addSelectionListener(new SelectionAdapter() {
117 101
            @Override
118 102
            public void widgetSelected(SelectionEvent e) {
119
                composite.getComboTerminologies().setSelection(null);
120
                comboOntologies.getCombo().setText(comboDefaultText);
103
                OntologySelectionDialog dialog = new OntologySelectionDialog(composite.getShell(), selectedOntologies);
104
                if(dialog.open()==Window.OK){
105
                    selectedOntologies = dialog.getOntologies();
106
                    composite.getTextOntologies().setText(selectedOntologies.stream()
107
                            .map(wrapper->wrapper.getAcronym())
108
                            .collect(Collectors.joining(", ")));
109
                }
121 110
            }
122 111
        });
123 112

  
......
129 118
            }
130 119
        });
131 120

  
132
        composite.getBtnLoadDetails().addSelectionListener(new SelectionAdapter() {
133
            @Override
134
            public void widgetSelected(SelectionEvent e) {
135
                loadTermDetails();
136
            }
137
        });
138

  
139 121
        composite.getTreeTermHierarchy().setContentProvider(new OntologyTermContentProvider());
140 122
        composite.getTreeTermHierarchy().setLabelProvider(new OntologyTermLabelProvider());
141 123

  
......
211 193
    }
212 194

  
213 195
    private void search(){
196
        //clear result count
197
        composite.getLblResultCount().setText("");
198

  
214 199
        String searchString = composite.getTxtSearch().getText();
215 200
        if(searchString.equals(TXT_SEARCH_DEFAULT)){
216 201
            return;
217 202
        }
218
        if(searchString.length()<4 && composite.getComboTerminologies().getSelection().isEmpty()){
219
            MessagingUtils.informationDialog(Messages.GfBioTerminologyImportPresenter_SEARCH_TOO_SHORT_TITLE, Messages.GfBioTerminologyImportPresenter_SEARCH_TOO_SHORT_MESSAGE);
203
        String response = new RequestSearch(searchString, selectedOntologies).request();
204
        if(response==null){
205
            MessagingUtils.informationDialog(NO_CONNECTION_TITLE, NO_CONNECTION_MESSAGE);
220 206
            return;
221 207
        }
222
        String terminology = ""; //$NON-NLS-1$
223
        ISelection selection = composite.getComboTerminologies().getSelection();
224 208
        Collection<OntologyTermWrapper> wrapperList = new ArrayList<>();
225
        if(selection instanceof IStructuredSelection && !selection.isEmpty()){
226
            //TODO maybe add support for multiple terminology selection
227
            Object next = ((IStructuredSelection) selection).iterator().next();
228
            if(next instanceof TerminologyWrapper){
229
                terminology =((TerminologyWrapper) next).getAcronym();
230
            }
231
            String response = new RequestSearch(searchString, terminology).request();
232
            if(response==null){
233
                MessagingUtils.informationDialog(NO_CONNECTION_TITLE, NO_CONNECTION_MESSAGE);
234
                return;
235
            }
236
            wrapperList = TermParser.parse(response);
237
        }
238
        else{
239
            String response = new RequestSuggest(searchString).request();
240
            if(response==null){
241
                MessagingUtils.informationDialog(NO_CONNECTION_TITLE, NO_CONNECTION_MESSAGE);
242
                return;
243
            }
244
            wrapperList = TermParser.parse(response);
245
        }
209
        wrapperList = TermParser.parse(response);
246 210
        if(wrapperList.isEmpty()){
247 211
            MessagingUtils.informationDialog(Messages.GfBioTerminologyImportPresenter_NO_RESULTS_TITLE, Messages.GfBioTerminologyImportPresenter_NO_RESULTS_MESSAGE);
248 212
        }
249 213
        composite.getTreeTermHierarchy().setInput(wrapperList);
214

  
215
        composite.getLblResultCount().setText(Integer.toString(wrapperList.size()));
250 216
    }
251 217

  
252 218
}

Also available in: Unified diff