Revision 9e521c57
Added by Patrick Plitzner over 5 years ago
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
ref #7806 Implement selection dialog for ontologies