Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.del.client.vues.rechercheobservations;

import java.util.HashMap;
import java.util.Iterator;

import org.tela_botanica.del.client.composants.presenteur.Presenteur;

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.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Panel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.TextBox;

public class RechercheObservationsPresenteur extends Presenteur {

        public RechercheObservationsPresenteur() {
                super(new RechercheObservationsVue());
        }

        public void go(HasWidgets composite) {
                if (composite == null) {
                        composite = RootPanel.get();
                }
                composite.add(this.getVue());
                handleEvents();
        }

        protected void handleEvents() {

                RechercheObservationsVue vue = (RechercheObservationsVue) getVue();

                // Gestion du clic dans la zone de saisie
                vue.recherchePrincipale.addClickHandler(new ClickHandler() {

                        public void onClick(ClickEvent event) {
                                TextBox recherchePrincipale = (TextBox) event.getSource();
                                if (recherchePrincipale.getText().equals("Recherche libre")) {
                                        recherchePrincipale.setText("");
                                }
                        }
                });

                // Gestion de l'affichage de la recherche Avancée
                vue.lienRechercheAvancee.addClickHandler(new ClickHandler() {

                        public void onClick(ClickEvent event) {
                                Panel rechercheAvancee = ((RechercheObservationsVue) getVue()).rechercheAvancee;
                                rechercheAvancee.setVisible(!rechercheAvancee.isVisible());
                        }
                });

                // Gestion de l'évènement recherche sur le clic ou sur l'appui de la
                // touche Entrée
                vue.boutonRecherche.addClickHandler(new ClickHandler() {

                        public void onClick(ClickEvent event) {
                                lancerRecherche();
                        }
                });

                vue.boutonRechercheAvancee.addClickHandler(new ClickHandler() {
                        public void onClick(ClickEvent event) {
                                lancerRecherche();
                        }
                });

                vue.recherchePrincipale.addKeyPressHandler(new KeyPressHandler() {

                        public void onKeyPress(KeyPressEvent event) {
                                if (event.getNativeEvent().getKeyCode() == KeyCodes.KEY_ENTER) {
                                        lancerRecherche();
                                }
                        }
                });
        }

        // Lancer la recherche
        public void lancerRecherche() {

                RechercheObservationsVue vue = (RechercheObservationsVue) getVue();

                // Masquer la recherche Avancée
                vue.rechercheAvancee.setVisible(false);

                // Collecter les valeurs du formulaire
                HashMap<String, String> valeursRecherche = new HashMap<String, String>();
                valeursRecherche.put("search", vue.recherchePrincipale.getText());
                valeursRecherche.put("dept", vue.departement.getText());
                valeursRecherche.put("com", vue.commune.getText());
                valeursRecherche.put("taxon", vue.taxon.getText());
                valeursRecherche.put("fam", vue.famille.getText());
                valeursRecherche.put("gen", vue.genre.getText());
                valeursRecherche.put("tag", vue.tag.getText());
                valeursRecherche.put("motCle", vue.motCle.getText());
                valeursRecherche.put("auteur", vue.auteur.getText());
                valeursRecherche.put("date", vue.date.getText());

                vue.recherchePrecedente.setText(getChaineRecherche(valeursRecherche));
        }

        private String getChaineRecherche(HashMap<String, String> valeursRecherche) {
                Iterator<String> itCles = valeursRecherche.keySet().iterator();
                String chaineRecherche = "";
                while (itCles.hasNext()) {
                        String cle = itCles.next();
                        String valeur = valeursRecherche.get(cle);
                        if (valeur != "") {
                                chaineRecherche += cle + ":=" + valeur + " ";
                        }
                }
                return chaineRecherche;
        }
}