Subversion Repositories eFlore/Applications.del

Rev

Rev 1986 | Rev 2140 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
322 gduche 1
package org.tela_botanica.del.client.composants.moteurrecherche;
2
 
1367 aurelien 3
import java.util.Iterator;
4
import java.util.Map;
5
 
335 benjamin 6
import org.tela_botanica.del.client.i18n.I18n;
7
import org.tela_botanica.del.client.modeles.InformationsRecherche;
322 gduche 8
 
9
import com.google.gwt.core.client.GWT;
10
import com.google.gwt.event.dom.client.HasClickHandlers;
11
import com.google.gwt.event.dom.client.HasKeyPressHandlers;
12
import com.google.gwt.uibinder.client.UiBinder;
13
import com.google.gwt.uibinder.client.UiField;
1367 aurelien 14
import com.google.gwt.user.client.DOM;
322 gduche 15
import com.google.gwt.user.client.ui.Button;
16
import com.google.gwt.user.client.ui.Composite;
386 aurelien 17
import com.google.gwt.user.client.ui.HasWidgets;
322 gduche 18
import com.google.gwt.user.client.ui.Label;
1367 aurelien 19
import com.google.gwt.user.client.ui.ListBox;
322 gduche 20
import com.google.gwt.user.client.ui.Panel;
21
import com.google.gwt.user.client.ui.TextBox;
22
import com.google.gwt.user.client.ui.Widget;
23
 
24
public class MoteurRechercheVue extends Composite implements MoteurRecherchePresenteur.Vue {
25
 
564 benjamin 26
	interface Binder extends UiBinder<Widget, MoteurRechercheVue> {
27
	}
335 benjamin 28
 
322 gduche 29
	private static Binder uiBinder = GWT.create(Binder.class);
30
	private String labelRecherche = "";
1986 aurelien 31
 
32
	private Map<String,String> listePays;
33
 
34
	private InformationsRecherche informationRecherche;
35
 
36
	// Si l'on charge une recherche précédente et que la liste des pays n'est
37
	// pas encore arrivée, on stocke le pays pour l'afficher quand la liste arrive
38
	private String paysEnAttente;
335 benjamin 39
 
40
	@UiField
1426 aurelien 41
	Panel rechercheAvancee, taxon, commune, zoneRss, conteneurMotCle, conteneurMotCleCel, conteneurMotCleDel  ;
335 benjamin 42
	@UiField
43
	Label lienRechercheAvancee, recherchePrecedente;
44
	@UiField
419 gduche 45
	Button boutonRecherche, boutonRechercheAvancee, boutonFermer, boutonVider;
335 benjamin 46
	@UiField
1426 aurelien 47
	TextBox recherchePrincipale, contientMots, departement, famille, genre, motCle, motCleCel, motCleDel, auteur, date;
1367 aurelien 48
	@UiField
1986 aurelien 49
	ListBox referentiel, pays;
335 benjamin 50
 
322 gduche 51
	public MoteurRechercheVue(String labelRecherche) {
52
		initWidget(uiBinder.createAndBindUi(this));
53
		this.labelRecherche = labelRecherche;
54
		recherchePrincipale.setText(labelRecherche);
55
		rechercheAvancee.setVisible(false);
56
	}
1367 aurelien 57
 
58
	@Override
59
	public void remplirListeReferentiels(Map<String, String> listeReferentiels) {
60
		for (Iterator<String> iterator = listeReferentiels.keySet().iterator(); iterator.hasNext();) {
61
			String codeRef = iterator.next();
62
			referentiel.addItem(listeReferentiels.get(codeRef), codeRef);
63
		}
1792 mathias 64
		referentiel.setItemSelected(1, true);
1367 aurelien 65
	}
1986 aurelien 66
 
67
	@Override
68
	public void remplirListePays(Map<String, String> listePays) {
69
		this.listePays = listePays;
70
		pays.clear();
71
		// Pour pouvoir annuler la selection de pays, on ajoute un item vide
72
		pays.addItem("", "");
73
		int index = 1;
74
		for (Iterator<String> iterator = listePays.keySet().iterator(); iterator.hasNext();) {
75
			String codePays = iterator.next();
76
			pays.addItem(listePays.get(codePays), codePays);
77
 
78
			if(paysEnAttente != null && codePays.equals(paysEnAttente)) {
79
				pays.setItemSelected(index, true);
80
			}
81
			index++;
82
		}
83
 
84
		if(paysEnAttente != null) {
85
			afficherLigneInfoRecherche(informationRecherche);
86
		}
87
		paysEnAttente = null;
88
	}
322 gduche 89
 
90
	public String getLabelRecherche() {
91
		return labelRecherche;
92
	}
335 benjamin 93
 
322 gduche 94
	public HasClickHandlers getLienRechercheAvancee() {
95
		return lienRechercheAvancee;
96
	}
97
 
98
	public HasClickHandlers getBoutonRechercheSimple() {
99
		return boutonRecherche;
100
	}
445 benjamin 101
 
408 gduche 102
	public HasClickHandlers getBoutonFermer() {
103
		return boutonFermer;
104
	}
445 benjamin 105
 
419 gduche 106
	public HasClickHandlers getBoutonVider() {
107
		return boutonVider;
108
	}
335 benjamin 109
 
322 gduche 110
	public HasClickHandlers getBoutonRechercheAvancee() {
111
		return boutonRechercheAvancee;
112
	}
113
 
114
	public HasKeyPressHandlers getChampSaisie() {
115
		return recherchePrincipale;
116
	}
117
 
118
	public String getValeurRechercheSimple() {
119
		return recherchePrincipale.getText();
120
	}
564 benjamin 121
 
545 jpm 122
	public void setValeurRechercheSimple(String valeurRecherche) {
123
		recherchePrincipale.setText(valeurRecherche);
533 jpm 124
	}
564 benjamin 125
 
322 gduche 126
	public HasClickHandlers getChampSaisieCliquable() {
127
		return recherchePrincipale;
128
	}
564 benjamin 129
 
545 jpm 130
	public String getContientMots() {
131
		return contientMots.getText();
132
	}
335 benjamin 133
 
533 jpm 134
	public void setContientMots(String mots) {
135
		contientMots.setText(mots);
136
	}
1986 aurelien 137
 
138
	public String getPays() {
139
		return pays.getValue(pays.getSelectedIndex());
140
	}
564 benjamin 141
 
545 jpm 142
	public String getDepartement() {
143
		return departement.getText();
144
	}
145
 
457 aurelien 146
	public void setValeurDepartement(String dpt) {
147
		departement.setValue(dpt);
148
	}
545 jpm 149
 
150
	public HasWidgets getCommune() {
151
		return commune;
152
	}
153
 
154
	public HasWidgets getTaxon() {
155
		return taxon;
156
	}
157
 
158
	public String getFamille() {
159
		return famille.getText();
160
	}
161
 
162
	public String getGenre() {
163
		return genre.getText();
164
	}
165
 
166
	public String getMotCle() {
167
		return motCle.getText();
168
	}
169
 
170
	public String getAuteur() {
171
		return auteur.getText();
172
	}
173
 
174
	public String getDate() {
175
		return date.getText();
176
	}
1367 aurelien 177
 
178
	public String getReferentiel() {
179
		return referentiel.getValue(referentiel.getSelectedIndex());
180
	}
564 benjamin 181
 
545 jpm 182
	public void focusSaisie() {
183
		this.recherchePrincipale.setFocus(true);
184
	}
322 gduche 185
 
545 jpm 186
	public void ajouterVue(HasWidgets composite) {
187
		composite.add(this.asWidget());
188
	}
564 benjamin 189
 
545 jpm 190
	public void basculerAffichageZoneCache() {
191
		rechercheAvancee.setVisible(!rechercheAvancee.isVisible());
192
		recherchePrincipale.setVisible(!recherchePrincipale.isVisible());
193
		boutonRecherche.setVisible(!boutonRecherche.isVisible());
194
	}
564 benjamin 195
 
545 jpm 196
	public void nettoyer() {
1995 aurelien 197
		pays.setSelectedIndex(0);
545 jpm 198
		chargerValeursRecherchePrecedente(new InformationsRecherche());
199
	}
564 benjamin 200
 
335 benjamin 201
	public void chargerValeursRecherchePrecedente(InformationsRecherche informationsRecherche) {
451 aurelien 202
		recherchePrincipale.setText(informationsRecherche.getRechercheLibre());
533 jpm 203
		contientMots.setText(informationsRecherche.getRechercheLibre());
451 aurelien 204
		departement.setText(informationsRecherche.getDepartement());
205
		famille.setText(informationsRecherche.getFamille());
206
		genre.setText(informationsRecherche.getGenre());
207
		motCle.setText(informationsRecherche.getMotClef());
1426 aurelien 208
		motCleCel.setText(informationsRecherche.getMotClefCel());
209
		motCleDel.setText(informationsRecherche.getMotClefDel());
451 aurelien 210
		auteur.setText(informationsRecherche.getAuteur());
211
		date.setText(informationsRecherche.getDate());
1367 aurelien 212
 
213
		for(int i = 0; i < referentiel.getItemCount(); i++) {
214
			if(referentiel.getValue(i).equals(informationsRecherche.getReferentiel())) {
215
				referentiel.setSelectedIndex(i);
216
			}
217
		}
1986 aurelien 218
 
219
		// la liste des pays du champs de recherche est asynchrone
220
		// donc elle peut ne pas avoir encore été chargée
221
		if(listePays != null) {
222
			for(int i = 0; i < pays.getItemCount(); i++) {
223
				if(pays.getValue(i).equals(paysEnAttente)) {
224
					pays.setSelectedIndex(i);
225
				}
226
			}
227
		} else {
228
			paysEnAttente = informationsRecherche.getPays();
229
		}
445 benjamin 230
 
335 benjamin 231
		afficherLigneInfoRecherche(informationsRecherche);
232
	}
233
 
234
	/**
235
	 * Affiche la ligne d'en tête montrant les elements de la requête à
236
	 * l'utilisateur
237
	 *
238
	 * @param informationRecherche
239
	 */
240
	private void afficherLigneInfoRecherche(InformationsRecherche informationRecherche) {
1986 aurelien 241
 
242
		this.informationRecherche = informationRecherche;
243
 
445 benjamin 244
		// tax dep com fam gen ta mo au date
335 benjamin 245
		StringBuffer texteRecherchePrecedente = new StringBuffer();
445 benjamin 246
 
247
		if (informationRecherche.getRechercheLibre() != null && !informationRecherche.getRechercheLibre().equals("")) {
335 benjamin 248
			texteRecherchePrecedente.append(I18n.getVocabulary().rechercheLibre() + ":" + informationRecherche.getRechercheLibre() + " ");
322 gduche 249
		}
445 benjamin 250
		if (informationRecherche.getTaxon() != null && !informationRecherche.getTaxon().equals("")) {
419 gduche 251
			texteRecherchePrecedente.append(I18n.getVocabulary().taxon() + ":" + informationRecherche.getTaxon() + " ");
322 gduche 252
		}
445 benjamin 253
		if (informationRecherche.getDepartement() != null && !informationRecherche.getDepartement().equals("")) {
419 gduche 254
			texteRecherchePrecedente.append(I18n.getVocabulary().departement() + ":" + informationRecherche.getDepartement() + " ");
255
		}
1986 aurelien 256
		if (listePays != null && informationRecherche.getPays() != null && !informationRecherche.getPays().equals("")) {
257
			texteRecherchePrecedente.append(I18n.getVocabulary().pays() + ":" + listePays.get(informationRecherche.getPays()) + " ");
258
		}
445 benjamin 259
		if (informationRecherche.getCommune() != null && !informationRecherche.getCommune().equals("")) {
335 benjamin 260
			texteRecherchePrecedente.append(I18n.getVocabulary().commune() + ":" + informationRecherche.getCommune() + " ");
322 gduche 261
		}
445 benjamin 262
		if (informationRecherche.getFamille() != null && !informationRecherche.getFamille().equals("")) {
335 benjamin 263
			texteRecherchePrecedente.append(I18n.getVocabulary().famille() + ":" + informationRecherche.getFamille() + " ");
322 gduche 264
		}
445 benjamin 265
		if (informationRecherche.getGenre() != null && !informationRecherche.getGenre().equals("")) {
335 benjamin 266
			texteRecherchePrecedente.append(I18n.getVocabulary().genre() + ":" + informationRecherche.getGenre() + " ");
322 gduche 267
		}
445 benjamin 268
		if (informationRecherche.getTag() != null && !informationRecherche.getTag().equals("")) {
419 gduche 269
			texteRecherchePrecedente.append(I18n.getVocabulary().tag() + ":" + informationRecherche.getTag() + " ");
270
		}
445 benjamin 271
		if (informationRecherche.getMotClef() != null && !informationRecherche.getMotClef().equals("")) {
335 benjamin 272
			texteRecherchePrecedente.append(I18n.getVocabulary().mot_clef() + ":" + informationRecherche.getMotClef() + " ");
322 gduche 273
		}
1426 aurelien 274
		if (informationRecherche.getMotClefCel() != null && !informationRecherche.getMotClefCel().equals("")) {
275
			texteRecherchePrecedente.append(I18n.getVocabulary().tagCel() + ":" + informationRecherche.getMotClefCel() + " ");
276
		}
277
		if (informationRecherche.getMotClefDel() != null && !informationRecherche.getMotClefDel().equals("")) {
278
			texteRecherchePrecedente.append(I18n.getVocabulary().tagDel() + ":" + informationRecherche.getMotClefDel() + " ");
279
		}
445 benjamin 280
		if (informationRecherche.getAuteur() != null && !informationRecherche.getAuteur().equals("")) {
419 gduche 281
			texteRecherchePrecedente.append(I18n.getVocabulary().auteur() + ":" + informationRecherche.getAuteur() + " ");
282
		}
445 benjamin 283
		if (informationRecherche.getDate() != null && !informationRecherche.getDate().equals("")) {
419 gduche 284
			texteRecherchePrecedente.append(I18n.getVocabulary().date() + ":" + informationRecherche.getDate() + " ");
285
		}
1367 aurelien 286
		if (informationRecherche.getReferentiel() != null && !informationRecherche.getReferentiel().equals("")) {
287
			texteRecherchePrecedente.append(I18n.getVocabulary().referentiel() + ":" + informationRecherche.getReferentiel() + " ");
288
		}
1986 aurelien 289
 
335 benjamin 290
		recherchePrecedente.setText(texteRecherchePrecedente.toString());
322 gduche 291
	}
564 benjamin 292
 
293
	@Override
294
	public HasKeyPressHandlers getChampsFamille() {
295
		return famille;
296
	}
297
 
298
	@Override
299
	public HasKeyPressHandlers getChampsGenre() {
300
		return genre;
301
	}
302
 
303
	@Override
304
	public HasKeyPressHandlers getChampsMotCle() {
305
		return motCle;
306
	}
307
 
308
	@Override
309
	public HasKeyPressHandlers getChampsAuteur() {
310
		return auteur;
311
	}
312
 
313
	@Override
314
	public HasKeyPressHandlers getChampsDate() {
315
		return date;
316
	}
671 aurelien 317
 
318
	@Override
319
	public HasKeyPressHandlers getChampsDepartement() {
320
		return departement;
321
	}
322
 
323
	@Override
324
	public HasKeyPressHandlers getChampsContientMots() {
325
		return contientMots;
326
	}
1120 gduche 327
 
328
	public HasWidgets getZoneRss() {
329
		return zoneRss;
330
	}
1367 aurelien 331
 
332
	@Override
333
	public void setReferentielLectureSeule(boolean lectureSeule) {
1792 mathias 334
		// la listbox ne possède aucun méthode directe pour être désactivée
1367 aurelien 335
		DOM.setElementProperty(referentiel.getElement(), "disabled", "disabled");
336
	}
1426 aurelien 337
 
338
	@Override
339
	public HasKeyPressHandlers getChampsMotCleDel() {
340
		return motCleDel;
341
	}
342
 
343
	@Override
344
	public HasKeyPressHandlers getChampsMotCleCel() {
345
		return motCleCel;
346
	}
347
 
348
	@Override
349
	public String getMotCleDel() {
350
		return motCleDel.getText();
351
	}
352
 
353
	@Override
354
	public String getMotCleCel() {
355
		return motCleCel.getText();
356
	}
357
 
358
	@Override
359
	public void cacherChampsTagsImage() {
360
		conteneurMotCleCel.setVisible(false);
361
		conteneurMotCleDel.setVisible(false);
362
	}
363
 
364
	@Override
365
	public void cacherChampsTagsObs() {
366
		conteneurMotCle.setVisible(false);
367
	}
545 jpm 368
}