New file |
0,0 → 1,383 |
package org.tela_botanica.del.client.composants.moteurrecherche; |
|
import java.util.Iterator; |
import java.util.Map; |
|
import org.tela_botanica.del.client.i18n.I18n; |
import org.tela_botanica.del.client.modeles.InformationsRecherche; |
|
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.HasClickHandlers; |
import com.google.gwt.event.dom.client.HasKeyPressHandlers; |
import com.google.gwt.uibinder.client.UiBinder; |
import com.google.gwt.uibinder.client.UiField; |
import com.google.gwt.user.client.DOM; |
import com.google.gwt.user.client.ui.Button; |
import com.google.gwt.user.client.ui.Composite; |
import com.google.gwt.user.client.ui.CheckBox; |
import com.google.gwt.user.client.ui.HasWidgets; |
import com.google.gwt.user.client.ui.Label; |
import com.google.gwt.user.client.ui.ListBox; |
import com.google.gwt.user.client.ui.Panel; |
import com.google.gwt.user.client.ui.TextBox; |
import com.google.gwt.user.client.ui.Widget; |
|
public class MoteurRechercheVue extends Composite implements MoteurRecherchePresenteur.Vue { |
|
interface Binder extends UiBinder<Widget, MoteurRechercheVue> { |
} |
|
private static Binder uiBinder = GWT.create(Binder.class); |
private String labelRecherche = ""; |
|
private Map<String,String> listePays; |
|
private InformationsRecherche informationRecherche; |
|
// Si l'on charge une recherche précédente et que la liste des pays n'est |
// pas encore arrivée, on stocke le pays pour l'afficher quand la liste arrive |
private String paysEnAttente; |
|
@UiField |
Panel rechercheAvancee, taxon, commune, zoneRss, conteneurMotCle, conteneurMotCleCel, conteneurMotCleDel ; |
@UiField |
Label lienRechercheAvancee, recherchePrecedente, labelPnInscritsSeulement; |
@UiField |
Button boutonRecherche, boutonRechercheAvancee, boutonFermer, boutonVider; |
@UiField |
TextBox recherchePrincipale, contientMots, departement, famille, genre, motCle, motCleCel, motCleDel, auteur, date; |
@UiField |
ListBox referentiel, pays; |
@UiField |
CheckBox casePnInscritsSeulement; |
|
public MoteurRechercheVue(String labelRecherche) { |
initWidget(uiBinder.createAndBindUi(this)); |
this.labelRecherche = labelRecherche; |
recherchePrincipale.setText(labelRecherche); |
rechercheAvancee.setVisible(false); |
} |
|
@Override |
public void remplirListeReferentiels(Map<String, String> listeReferentiels) { |
for (Iterator<String> iterator = listeReferentiels.keySet().iterator(); iterator.hasNext();) { |
String codeRef = iterator.next(); |
referentiel.addItem(listeReferentiels.get(codeRef), codeRef); |
} |
referentiel.setItemSelected(1, true); |
} |
|
@Override |
public void remplirListePays(Map<String, String> listePays) { |
this.listePays = listePays; |
pays.clear(); |
// Pour pouvoir annuler la selection de pays, on ajoute un item vide |
pays.addItem("", ""); |
int index = 1; |
for (Iterator<String> iterator = listePays.keySet().iterator(); iterator.hasNext();) { |
String codePays = iterator.next(); |
pays.addItem(listePays.get(codePays), codePays); |
|
if(paysEnAttente != null && codePays.equals(paysEnAttente)) { |
pays.setItemSelected(index, true); |
} |
index++; |
} |
|
if(paysEnAttente != null) { |
afficherLigneInfoRecherche(informationRecherche); |
} |
paysEnAttente = null; |
} |
|
public String getLabelRecherche() { |
return labelRecherche; |
} |
|
public HasClickHandlers getLienRechercheAvancee() { |
return lienRechercheAvancee; |
} |
|
public HasClickHandlers getBoutonRechercheSimple() { |
return boutonRecherche; |
} |
|
public HasClickHandlers getBoutonFermer() { |
return boutonFermer; |
} |
|
public HasClickHandlers getBoutonVider() { |
return boutonVider; |
} |
|
public HasClickHandlers getBoutonRechercheAvancee() { |
return boutonRechercheAvancee; |
} |
|
public HasKeyPressHandlers getChampSaisie() { |
return recherchePrincipale; |
} |
|
public String getValeurRechercheSimple() { |
return recherchePrincipale.getText(); |
} |
|
public void setValeurRechercheSimple(String valeurRecherche) { |
recherchePrincipale.setText(valeurRecherche); |
} |
|
public HasClickHandlers getChampSaisieCliquable() { |
return recherchePrincipale; |
} |
|
public String getContientMots() { |
return contientMots.getText(); |
} |
|
public void setContientMots(String mots) { |
contientMots.setText(mots); |
} |
|
public boolean getPnInscritsSeulement() { |
return casePnInscritsSeulement.getValue(); |
} |
|
public void setPnInscritsSeulement(boolean valeur) { |
casePnInscritsSeulement.setValue(valeur); |
} |
|
public String getPays() { |
return pays.getValue(pays.getSelectedIndex()); |
} |
|
public String getDepartement() { |
return departement.getText(); |
} |
|
public void setValeurDepartement(String dpt) { |
departement.setValue(dpt); |
} |
|
public HasWidgets getCommune() { |
return commune; |
} |
|
public HasWidgets getTaxon() { |
return taxon; |
} |
|
public String getFamille() { |
return famille.getText(); |
} |
|
public String getGenre() { |
return genre.getText(); |
} |
|
public String getMotCle() { |
return motCle.getText(); |
} |
|
public String getAuteur() { |
return auteur.getText(); |
} |
|
public String getDate() { |
return date.getText(); |
} |
|
public String getReferentiel() { |
return referentiel.getValue(referentiel.getSelectedIndex()); |
} |
|
public void focusSaisie() { |
this.recherchePrincipale.setFocus(true); |
} |
|
public void ajouterVue(HasWidgets composite) { |
composite.add(this.asWidget()); |
} |
|
public void basculerAffichageZoneCache() { |
rechercheAvancee.setVisible(!rechercheAvancee.isVisible()); |
recherchePrincipale.setVisible(!recherchePrincipale.isVisible()); |
boutonRecherche.setVisible(!boutonRecherche.isVisible()); |
} |
|
public void nettoyer() { |
pays.setSelectedIndex(0); |
chargerValeursRecherchePrecedente(new InformationsRecherche()); |
} |
|
public void chargerValeursRecherchePrecedente(InformationsRecherche informationsRecherche) { |
recherchePrincipale.setText(informationsRecherche.getRechercheLibre()); |
contientMots.setText(informationsRecherche.getRechercheLibre()); |
departement.setText(informationsRecherche.getDepartement()); |
famille.setText(informationsRecherche.getFamille()); |
genre.setText(informationsRecherche.getGenre()); |
motCle.setText(informationsRecherche.getMotClef()); |
motCleCel.setText(informationsRecherche.getMotClefCel()); |
motCleDel.setText(informationsRecherche.getMotClefDel()); |
auteur.setText(informationsRecherche.getAuteur()); |
date.setText(informationsRecherche.getDate()); |
casePnInscritsSeulement.setValue(informationsRecherche.getPnInscritsSeulement()); |
|
for(int i = 0; i < referentiel.getItemCount(); i++) { |
if(referentiel.getValue(i).equals(informationsRecherche.getReferentiel())) { |
referentiel.setSelectedIndex(i); |
} |
} |
|
// la liste des pays du champs de recherche est asynchrone |
// donc elle peut ne pas avoir encore été chargée |
if(listePays != null) { |
for(int i = 0; i < pays.getItemCount(); i++) { |
if(pays.getValue(i).equals(paysEnAttente)) { |
pays.setSelectedIndex(i); |
} |
} |
} else { |
paysEnAttente = informationsRecherche.getPays(); |
} |
|
afficherLigneInfoRecherche(informationsRecherche); |
} |
|
/** |
* Affiche la ligne d'en tête montrant les elements de la requête à |
* l'utilisateur |
* |
* @param informationRecherche |
*/ |
private void afficherLigneInfoRecherche(InformationsRecherche informationRecherche) { |
|
this.informationRecherche = informationRecherche; |
|
// tax dep com fam gen ta mo au date |
StringBuffer texteRecherchePrecedente = new StringBuffer(); |
|
if (informationRecherche.getRechercheLibre() != null && !informationRecherche.getRechercheLibre().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().rechercheLibre() + ":" + informationRecherche.getRechercheLibre() + " "); |
} |
if (informationRecherche.getTaxon() != null && !informationRecherche.getTaxon().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().taxon() + ":" + informationRecherche.getTaxon() + " "); |
} |
if (informationRecherche.getDepartement() != null && !informationRecherche.getDepartement().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().departement() + ":" + informationRecherche.getDepartement() + " "); |
} |
if (listePays != null && informationRecherche.getPays() != null && !informationRecherche.getPays().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().pays() + ":" + listePays.get(informationRecherche.getPays()) + " "); |
} |
if (informationRecherche.getCommune() != null && !informationRecherche.getCommune().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().commune() + ":" + informationRecherche.getCommune() + " "); |
} |
if (informationRecherche.getFamille() != null && !informationRecherche.getFamille().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().famille() + ":" + informationRecherche.getFamille() + " "); |
} |
if (informationRecherche.getGenre() != null && !informationRecherche.getGenre().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().genre() + ":" + informationRecherche.getGenre() + " "); |
} |
if (informationRecherche.getTag() != null && !informationRecherche.getTag().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().tag() + ":" + informationRecherche.getTag() + " "); |
} |
if (informationRecherche.getMotClef() != null && !informationRecherche.getMotClef().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().mot_clef() + ":" + informationRecherche.getMotClef() + " "); |
} |
if (informationRecherche.getMotClefCel() != null && !informationRecherche.getMotClefCel().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().tagCel() + ":" + informationRecherche.getMotClefCel() + " "); |
} |
if (informationRecherche.getMotClefDel() != null && !informationRecherche.getMotClefDel().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().tagDel() + ":" + informationRecherche.getMotClefDel() + " "); |
} |
if (informationRecherche.getAuteur() != null && !informationRecherche.getAuteur().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().auteur() + ":" + informationRecherche.getAuteur() + " "); |
} |
if (informationRecherche.getDate() != null && !informationRecherche.getDate().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().date() + ":" + informationRecherche.getDate() + " "); |
} |
if (informationRecherche.getReferentiel() != null && !informationRecherche.getReferentiel().equals("")) { |
texteRecherchePrecedente.append(I18n.getVocabulary().referentiel() + ":" + informationRecherche.getReferentiel() + " "); |
} |
if (informationRecherche.getPnInscritsSeulement()) { |
texteRecherchePrecedente.append(I18n.getVocabulary().pnISCourt() + ":non"); |
} |
|
recherchePrecedente.setText(texteRecherchePrecedente.toString()); |
} |
|
@Override |
public HasKeyPressHandlers getChampsFamille() { |
return famille; |
} |
|
@Override |
public HasKeyPressHandlers getChampsGenre() { |
return genre; |
} |
|
@Override |
public HasKeyPressHandlers getChampsMotCle() { |
return motCle; |
} |
|
@Override |
public HasKeyPressHandlers getChampsAuteur() { |
return auteur; |
} |
|
@Override |
public HasKeyPressHandlers getChampsDate() { |
return date; |
} |
|
@Override |
public HasKeyPressHandlers getChampsDepartement() { |
return departement; |
} |
|
@Override |
public HasKeyPressHandlers getChampsContientMots() { |
return contientMots; |
} |
|
public HasWidgets getZoneRss() { |
return zoneRss; |
} |
|
@Override |
public void setReferentielLectureSeule(boolean lectureSeule) { |
// la listbox ne possède aucun méthode directe pour être désactivée |
DOM.setElementProperty(referentiel.getElement(), "disabled", "disabled"); |
} |
|
@Override |
public HasKeyPressHandlers getChampsMotCleDel() { |
return motCleDel; |
} |
|
@Override |
public HasKeyPressHandlers getChampsMotCleCel() { |
return motCleCel; |
} |
|
@Override |
public String getMotCleDel() { |
return motCleDel.getText(); |
} |
|
@Override |
public String getMotCleCel() { |
return motCleCel.getText(); |
} |
|
@Override |
public void cacherChampsTagsImage() { |
conteneurMotCleCel.setVisible(false); |
conteneurMotCleDel.setVisible(false); |
} |
|
@Override |
public void cacherChampsTagsObs() { |
conteneurMotCle.setVisible(false); |
} |
} |