Subversion Repositories eFlore/Applications.del

Rev

Rev 564 | Rev 676 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

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

import org.tela_botanica.del.client.cache.CacheClient;
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.modeles.Observation;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.detailsimage.EvenementRechercheImage;
import org.tela_botanica.del.client.navigation.evenement.rechercheobservation.EvenementRechercheObservation;

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.user.client.ui.HasText;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;

public class MetadonneesPresenteur extends Presenteur {

        public abstract interface Vue extends IsWidget {
                public HasText getNomRetenu();

                public HasClickHandlers getLienNomRetenu();

                public HasText getNomCommun();

                public HasText getFamille();

                public HasText getLocalite();

                public HasText getLieuDit();

                public HasText getMilieu();

                public HasText getCommentaire();

                public HasText getAuteur();

                public HasText getDateTransmission();

                public HasText getMotsClefs();

                public HasText getNumNomenclatural();

                public HasText getDateReleve();

                public HasClickHandlers getLienFamille();

                public HasClickHandlers getLienAuteur();

                public HasClickHandlers getLienDateTransmission();

                public HasClickHandlers getLienDateReleve();

                public HasClickHandlers getLienLocalite();

                public HasClickHandlers getLienMotsClefs();

                public HasClickHandlers getLienNumNomenclatural();

                public HasClickHandlers getLienNomCommun();

                public HasClickHandlers getLienMilieu();

                public HasClickHandlers getLienCommentaire();
                
                public void masquerChampsVides();
        }

        private Vue vue;
        private Observation observation;
        private ModeRecherche modeRecherche;

        public MetadonneesPresenteur(Vue vue, Observation observation, ModeRecherche modeRecherche) {
                this.vue = vue;
                this.modeRecherche = modeRecherche;
                setObservation(observation);
        }

        public void setObservation(Observation observation) {
                this.observation = observation;
        }

        public void chargerMetaDonnees() {
                vue.getNomRetenu().setText(observation.getNomRetenu());
                vue.getNomCommun().setText(observation.getNomCommun());
                vue.getFamille().setText(observation.getFamille());
                vue.getLocalite().setText(observation.getLocaliteAvecIdFormatee());
                vue.getLieuDit().setText(observation.getLieuDit());
                vue.getMilieu().setText(observation.getMilieu());
                vue.getCommentaire().setText(observation.getCommentaire());
                vue.getAuteur().setText(observation.getAuteur());
                vue.getDateTransmission().setText(observation.getDateTransmission());
                vue.getDateReleve().setText(observation.getDateReleve());
                
                vue.masquerChampsVides();
        }

        @Override
        public void go(HasWidgets composite) {
                composite.add(vue.asWidget());
                chargerMetaDonnees();
                gererEvenements();
        }

        @Override
        protected void gererEvenements() {

                vue.getLienAuteur().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setAuteur(vue.getAuteur().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienDateReleve().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setDate(vue.getDateReleve().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienDateTransmission().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setDate(vue.getDateReleve().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienFamille().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setFamille(vue.getFamille().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienLocalite().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setCommune(vue.getLocalite().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienMotsClefs().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setMotClef(vue.getMotsClefs().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienNomCommun().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setRechercheLibre(vue.getNomCommun().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienNomRetenu().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setRechercheLibre(vue.getNomRetenu().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienMilieu().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setRechercheLibre(vue.getMilieu().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

                vue.getLienCommentaire().addClickHandler(new ClickHandler() {

                        @Override
                        public void onClick(ClickEvent arg0) {
                                InformationsRecherche informationsRecherche = new InformationsRecherche();
                                informationsRecherche.setRechercheLibre(vue.getCommentaire().getText());
                                setInfosRechercheEnCacheEtLancerEvenement(informationsRecherche);
                        }
                });

        }

        public void setInfosRechercheEnCacheEtLancerEvenement(InformationsRecherche informationsRecherche) {

                switch (modeRecherche) {
                case MODE_IMAGE:
                        CacheClient.getInstance().setPageCouranteRechercheImages(1);
                        CacheClient.getInstance().setInformationsRechercheImage(informationsRecherche);
                        BusEvenementiel.getInstance().fireEvent(new EvenementRechercheImage());
                        break;

                case MODE_OBSERVATION:
                        CacheClient.getInstance().setPageCouranteRechercheObservations(1);
                        CacheClient.getInstance().setInformationsRechercheObservation(informationsRecherche);
                        BusEvenementiel.getInstance().fireEvent(new EvenementRechercheObservation());

                default:
                        break;
                }

        }
}