Revision f3077849
Added by Patrick Plitzner over 5 years ago
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/GfBioTerminologyImportPresenter.java | ||
---|---|---|
44 | 44 |
import eu.etaxonomy.taxeditor.model.MessagingUtils; |
45 | 45 |
import eu.etaxonomy.taxeditor.preference.Resources; |
46 | 46 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TermParser; |
47 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TerminologyParser; |
|
47 | 48 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestSearch; |
49 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestTerminologies; |
|
48 | 50 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.OntologyTermWrapper; |
49 | 51 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper; |
50 | 52 |
|
... | ... | |
62 | 64 |
private GfBioTerminologyImportComposite composite; |
63 | 65 |
private Collection<TerminologyWrapper> selectedOntologies = new ArrayList<>(); |
64 | 66 |
private UISynchronize sync; |
67 |
private volatile Collection<TerminologyWrapper> availableOntologies; |
|
65 | 68 |
|
66 | 69 |
public GfBioTerminologyImportPresenter(GfBioTerminologyImportComposite composite, UISynchronize sync) { |
67 | 70 |
super(); |
68 | 71 |
this.composite = composite; |
69 | 72 |
this.sync = sync; |
73 |
|
|
74 |
requestAvailableOntologies(); |
|
75 |
|
|
70 | 76 |
composite.getBtnSearch().addSelectionListener(new SelectionAdapter() { |
71 | 77 |
@Override |
72 | 78 |
public void widgetSelected(SelectionEvent e) { |
... | ... | |
106 | 112 |
} |
107 | 113 |
}); |
108 | 114 |
|
115 |
|
|
109 | 116 |
composite.getBtnChooseOntology().addSelectionListener(new SelectionAdapter() { |
110 | 117 |
@Override |
111 | 118 |
public void widgetSelected(SelectionEvent e) { |
112 |
OntologySelectionDialog dialog = new OntologySelectionDialog(composite.getShell(), selectedOntologies); |
|
119 |
if(availableOntologies.isEmpty() |
|
120 |
&& MessagingUtils.confirmDialog("No Ontologies available", "There are no ontologies available. They have either not been loaded yet or the terminology service can not be reached.\nDo you want to retry loading the ontologies?")){ |
|
121 |
//re-check if ontologies have been loaded in the meantime |
|
122 |
if(availableOntologies.isEmpty()){ |
|
123 |
requestAvailableOntologies(); |
|
124 |
} |
|
125 |
else{ |
|
126 |
openOntologySelectionDialog(composite); |
|
127 |
} |
|
128 |
} |
|
129 |
else{ |
|
130 |
openOntologySelectionDialog(composite); |
|
131 |
} |
|
132 |
} |
|
133 |
|
|
134 |
private void openOntologySelectionDialog(GfBioTerminologyImportComposite composite) { |
|
135 |
OntologySelectionDialog dialog = new OntologySelectionDialog(composite.getShell(), selectedOntologies, availableOntologies); |
|
113 | 136 |
if(dialog.open()==Window.OK){ |
114 |
selectedOntologies = dialog.getOntologies(); |
|
137 |
selectedOntologies = dialog.getSelectedOntologies();
|
|
115 | 138 |
composite.getTextOntologies().setText(selectedOntologies.stream() |
116 | 139 |
.map(wrapper->wrapper.getAcronym()) |
117 | 140 |
.collect(Collectors.joining(", "))); |
... | ... | |
155 | 178 |
}); |
156 | 179 |
} |
157 | 180 |
|
181 |
private void requestAvailableOntologies() { |
|
182 |
Job requestOntologiesJob = new Job("Request available ontologies") { |
|
183 |
|
|
184 |
@Override |
|
185 |
protected IStatus run(IProgressMonitor monitor) { |
|
186 |
String response = new RequestTerminologies().request(); |
|
187 |
availableOntologies = TerminologyParser.parse(response); |
|
188 |
return Status.OK_STATUS; |
|
189 |
} |
|
190 |
}; |
|
191 |
requestOntologiesJob.schedule(); |
|
192 |
} |
|
193 |
|
|
158 | 194 |
private OntologyTermWrapper getSelectedTerm(IStructuredSelection selection){ |
159 | 195 |
Iterator iterator = selection.iterator(); |
160 | 196 |
if(iterator.hasNext()){ |
eu.etaxonomy.taxeditor.store/src/main/java/eu/etaxonomy/taxeditor/view/webimport/termimport/OntologySelectionDialog.java | ||
---|---|---|
21 | 21 |
import org.eclipse.swt.widgets.Shell; |
22 | 22 |
import org.eclipse.swt.widgets.Table; |
23 | 23 |
|
24 |
import eu.etaxonomy.taxeditor.model.MessagingUtils; |
|
25 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.parser.TerminologyParser; |
|
26 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.requests.RequestTerminologies; |
|
27 | 24 |
import eu.etaxonomy.taxeditor.view.webimport.termimport.wrapper.TerminologyWrapper; |
28 | 25 |
|
29 | 26 |
/** |
... | ... | |
41 | 38 |
|
42 | 39 |
private Collection<TerminologyWrapper> initiallySelectedOntologies; |
43 | 40 |
|
41 |
private Collection<TerminologyWrapper> availableOntologies; |
|
44 | 42 |
|
45 |
protected OntologySelectionDialog(Shell parentShell, Collection<TerminologyWrapper> initiallySelectedOntologies) { |
|
43 |
|
|
44 |
protected OntologySelectionDialog(Shell parentShell, Collection<TerminologyWrapper> initiallySelectedOntologies, Collection<TerminologyWrapper> availableOntologies) { |
|
46 | 45 |
super(parentShell); |
47 | 46 |
this.initiallySelectedOntologies = initiallySelectedOntologies; |
47 |
this.availableOntologies = availableOntologies; |
|
48 | 48 |
} |
49 | 49 |
|
50 | 50 |
@Override |
51 | 51 |
protected Control createDialogArea(Composite parent) { |
52 | 52 |
Table table = new Table(parent, SWT.CHECK | SWT.MULTI); |
53 | 53 |
list = new CheckboxTableViewer(table); |
54 |
String response = new RequestTerminologies().request(); |
|
55 |
if(response==null){ |
|
56 |
MessagingUtils.informationDialog(GfBioTerminologyImportPresenter.NO_CONNECTION_TITLE, |
|
57 |
GfBioTerminologyImportPresenter.NO_CONNECTION_MESSAGE); |
|
58 |
} |
|
59 |
else{ |
|
60 |
Collection<TerminologyWrapper> terminologies = TerminologyParser.parse(response); |
|
61 |
list.setLabelProvider(new TerminologyLabelProvider()); |
|
62 |
list.setContentProvider(new ArrayContentProvider()); |
|
63 |
list.setInput(terminologies); |
|
64 |
if(initiallySelectedOntologies!=null){ |
|
65 |
initiallySelectedOntologies.stream().forEach(wrapper->list.setChecked(wrapper, true)); |
|
66 |
} |
|
54 |
list.setLabelProvider(new TerminologyLabelProvider()); |
|
55 |
list.setContentProvider(new ArrayContentProvider()); |
|
56 |
list.setInput(availableOntologies); |
|
57 |
if(initiallySelectedOntologies!=null){ |
|
58 |
initiallySelectedOntologies.stream().forEach(wrapper->list.setChecked(wrapper, true)); |
|
67 | 59 |
} |
68 | 60 |
return table; |
69 | 61 |
} |
... | ... | |
86 | 78 |
return true; |
87 | 79 |
} |
88 | 80 |
|
89 |
public Collection<TerminologyWrapper> getOntologies(){ |
|
81 |
public Collection<TerminologyWrapper> getSelectedOntologies(){
|
|
90 | 82 |
return selectedOntologies; |
91 | 83 |
} |
84 |
|
|
92 | 85 |
} |
Also available in: Unified diff
ref #7869 Run request for availabel ontologies in background task