Subversion Repositories eFlore/Applications.del

Rev

Rev 1196 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.del.client.composants.formulairerechercheeflore;

import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxPresenteur;
import org.tela_botanica.del.client.composants.formulaires.autocompletion.AutoCompletionComboBoxVue;
import org.tela_botanica.del.client.config.Config;
import org.tela_botanica.del.client.i18n.I18n;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.comparaisoneflore.EvenementComparaisonEflore;
import org.tela_botanica.del.client.utils.InfosNomPourAutocompletion;
import org.tela_botanica.del.client.utils.UtilitairesAutoCompletionService;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
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.HasWidgets;

public class FormulaireRechercheEflorePresenteur {

        private FormulaireRechercheEfloreVue formulaireRechercheEfloreVue = new FormulaireRechercheEfloreVue();

        private AutoCompletionComboBoxPresenteur autoCompletionNomTaxonsPresenteur;

        public FormulaireRechercheEflorePresenteur() {
                
                creerCompletionTaxons();
        }
        
        public void go(HasWidgets composite) {
                autoCompletionNomTaxonsPresenteur.go(formulaireRechercheEfloreVue.getPropositionTaxon());
                composite.add(formulaireRechercheEfloreVue);
                gererEvenements();
        }

        private void gererEvenements() {
                formulaireRechercheEfloreVue.getBoutonValidationRechercheObservation().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent event) {
                                lancerRechercheEflore();
                        }
                });
                
                autoCompletionNomTaxonsPresenteur.getAutoCompletionComboBoxVue().getSuggestBoxHasKeyPressHandlers().addKeyPressHandler(new KeyPressHandler() {
                        
                        @Override
                        public void onKeyPress(KeyPressEvent event) {
                                if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
                                        lancerRechercheEflore();
                                }
                        }
                });
                
                
        }

        private void creerCompletionTaxons() {
                String url = new Config().getServiceBaseUrl() + "nomstaxons";
                 autoCompletionNomTaxonsPresenteur = new AutoCompletionComboBoxPresenteur(new AutoCompletionComboBoxVue(), url) {
                        protected String effectuerPreTraitementChaineRequete(String requete) {
                                requete = "?masque.nom=" + requete;
                                return UtilitairesAutoCompletionService.effectuerPreTraitementChaineRequeteGenreEspeceSlash(requete);
                        }

                        @Override
                        protected InfosNomPourAutocompletion[] parserResultatRequete(Response response) {
                                return UtilitairesAutoCompletionService.parserResultatRetourSimple(response);
                        }
                };
        }

        private void lancerRechercheEflore() {
                CacheClient.getInstance().setTaxonPourRechercheEflore(autoCompletionNomTaxonsPresenteur.getValeur());
                EvenementComparaisonEflore evenementComparaisonEflore = new EvenementComparaisonEflore(autoCompletionNomTaxonsPresenteur.getValeur());
                BusEvenementiel.getInstance().fireEvent(evenementComparaisonEflore);
        }

}