Rev 445 | Rev 477 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.moteurrecherche;import org.tela_botanica.del.client.cache.CacheClient;import org.tela_botanica.del.client.composants.formulaires.AutoCompletionComboBoxPresenteur;import org.tela_botanica.del.client.composants.formulaires.AutoCompletionComboBoxVue;import org.tela_botanica.del.client.composants.presenteur.Presenteur;import org.tela_botanica.del.client.modeles.InformationsRecherche;import org.tela_botanica.del.client.modeles.ModeRecherche;import org.tela_botanica.del.client.services.UtilitairesAutoCompletionService;import com.google.gwt.event.dom.client.ClickEvent;import com.google.gwt.event.dom.client.ClickHandler;import com.google.gwt.event.dom.client.HasClickHandlers;import com.google.gwt.event.dom.client.HasKeyPressHandlers;import com.google.gwt.event.dom.client.KeyCodes;import com.google.gwt.event.dom.client.KeyPressEvent;import com.google.gwt.event.dom.client.KeyPressHandler;import com.google.gwt.http.client.Response;import com.google.gwt.user.client.ui.HasText;import com.google.gwt.user.client.ui.HasWidgets;import com.google.gwt.user.client.ui.IsWidget;public abstract class MoteurRecherchePresenteur extends Presenteur {public abstract interface Vue extends IsWidget {public abstract void ajouterVue(HasWidgets composite);public abstract HasClickHandlers getLienRechercheAvancee();public abstract void basculerAffichageZoneCache();public abstract HasClickHandlers getBoutonRechercheSimple();public abstract HasClickHandlers getBoutonFermer();public abstract HasClickHandlers getBoutonVider();public abstract HasClickHandlers getBoutonRechercheAvancee();public abstract HasKeyPressHandlers getChampSaisie();public abstract HasClickHandlers getChampSaisieCliquable();public abstract String getValeurRechercheSimple();public void setValeurRechercheSimple(String valeurRecherche);public String getLabelRecherche();public String getRecherchePrincipale();public String getDepartement();public String getCommune();public HasWidgets getTaxon();public String getFamille();public String getGenre();public String getTag();public String getMotCle();public String getAuteur();public String getDate();public void chargerValeursRecherchePrecedente(InformationsRecherche informationsRecherche);public void focusSaisie();public void nettoyer();}private final Vue vue;private boolean pourRechercheImages = false, pourRechercheObservations= false;private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;public MoteurRecherchePresenteur(Vue vue, ModeRecherche mode) {AutoCompletionComboBoxPresenteur completionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), UtilitairesAutoCompletionService.urlServiceCompletionNomLocale) {protected String effectuerPreTraitementChaineRequete(String requete) {return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);// A décommenter lors de l'utilisation des web services eflore// return// RetourAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceEflore(requete);}@Overrideprotected String[] parserResultatRequete(Response response) {return UtilitairesAutoCompletionService.parserRetourSimple(response);// A décommenter lors de l'utilisation des web services eflore// return RetourAutoCompletionService.parserRetourOss(response);}};this.vue = vue;setMode(mode);autoCompletionNomTaxonsPresenteur = completionNomTaxonsPresenteur;gererEvenements();}private void setMode(ModeRecherche mode) {switch(mode) {case MODE_IMAGE:this.pourRechercheImages = true;break;case MODE_OBSERVATION:this.pourRechercheObservations = true;}}public MoteurRecherchePresenteur(AutoCompletionComboBoxPresenteur presenteurAutoCompletion, Vue vue, ModeRecherche mode) {this.vue = vue;setMode(mode);autoCompletionNomTaxonsPresenteur = presenteurAutoCompletion;gererEvenements();}@Overridepublic void go(HasWidgets composite) {afficherRequeteEtLancerRecherche();autoCompletionNomTaxonsPresenteur.go(vue.getTaxon());vue.ajouterVue(composite);vue.focusSaisie();}@Overrideprotected void gererEvenements() {vue.getLienRechercheAvancee().addClickHandler(new ClickHandler() {public void onClick(ClickEvent event) {vue.basculerAffichageZoneCache();}});vue.getBoutonRechercheSimple().addClickHandler(new ClickHandler() {public void onClick(ClickEvent event) {collecterInfosRecherche();afficherRequeteEtLancerRecherche();}});vue.getBoutonFermer().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {vue.basculerAffichageZoneCache();}});vue.getBoutonVider().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {autoCompletionNomTaxonsPresenteur.nettoyer();vue.nettoyer();InformationsRecherche infosRecherche = new InformationsRecherche();if (estPourRechercheImages()) {CacheClient.getInstance().setInformationsRechercheImage(infosRecherche);} else if (estPourRechercheObservations()) {CacheClient.getInstance().setInformationsRechercheObservation(infosRecherche);}}});vue.getBoutonRechercheAvancee().addClickHandler(new ClickHandler() {public void onClick(ClickEvent event) {collecterInfosRecherche();vue.basculerAffichageZoneCache();afficherRequeteEtLancerRecherche();}});vue.getChampSaisie().addKeyPressHandler(new KeyPressHandler() {public void onKeyPress(KeyPressEvent event) {if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {collecterInfosRecherche();afficherRequeteEtLancerRecherche();}}});vue.getChampSaisieCliquable().addClickHandler(new ClickHandler() {@Overridepublic void onClick(ClickEvent event) {if (vue.getValeurRechercheSimple().equals(vue.getLabelRecherche())) {vue.setValeurRechercheSimple("");}}});}public void collecterInfosRecherche() {InformationsRecherche informationRecherche = new InformationsRecherche();informationRecherche.setTaxon(autoCompletionNomTaxonsPresenteur.getValeur());informationRecherche.setDepartement(vue.getDepartement());informationRecherche.setCommune(vue.getCommune());informationRecherche.setFamille(vue.getFamille());informationRecherche.setGenre(vue.getGenre());informationRecherche.setTag(vue.getTag());informationRecherche.setMotClef(vue.getMotCle());informationRecherche.setAuteur(vue.getAuteur());informationRecherche.setDate(vue.getDate());informationRecherche.setRechercheLibre(vue.getRecherchePrincipale());if (estPourRechercheImages()) {CacheClient.getInstance().setInformationsRechercheImage(informationRecherche);} else if (estPourRechercheObservations()) {CacheClient.getInstance().setInformationsRechercheObservation(informationRecherche);}}private InformationsRecherche getInformationsRechercheEnCache() {if (estPourRechercheImages()) {return CacheClient.getInstance().getInformationsRechercheImage();} else if (estPourRechercheObservations()) {return CacheClient.getInstance().getInformationsRechercheObservation();}return null;}public void afficherRequeteEtLancerRecherche() {InformationsRecherche informationsRecherche = getInformationsRechercheEnCache();if (informationsRecherche != null) {autoCompletionNomTaxonsPresenteur.setValeur(informationsRecherche.getTaxon());vue.chargerValeursRecherchePrecedente(informationsRecherche);}lancerRecherche();}public abstract void lancerRecherche();public boolean estPourRechercheImages() {return pourRechercheImages;}public boolean estPourRechercheObservations() {return pourRechercheObservations;}public ModeRecherche getMode() {if(estPourRechercheImages()) {return ModeRecherche.MODE_IMAGE;} else {return ModeRecherche.MODE_OBSERVATION;}}}