Subversion Repositories eFlore/Applications.del

Rev

Rev 397 | Blame | Last modification | View Log | RSS feed

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

import java.util.List;

import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Image;
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.validationobservation.EvenementValidation;
import org.tela_botanica.del.client.vues.rechercheobservations.observationdeterminations.ObservationDeterminationPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.observationdeterminations.ObservationDeterminationVue;
import org.tela_botanica.del.client.vues.rechercheobservations.observationimages.ObservationImagesPresenteur;
import org.tela_botanica.del.client.vues.rechercheobservations.observationimages.ObservationImagesVue;

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

public class ObservationPresenteur extends Presenteur {

        public abstract interface Vue extends IsWidget {

                public HasClickHandlers getLienDeterminer();

                public HasWidgets getDeterminationsPanel();

                public HasWidgets getImagesPanel();
        }

        private Vue vue;

        private Observation observation;

        public ObservationPresenteur(Vue vue, Observation observation) {
                this.observation = observation;
                this.vue = vue;
                chargerObservation();
        }

        public void chargerObservation() {

                new ObservationImagesPresenteur(new ObservationImagesVue(), observation).go(vue.getImagesPanel());
                new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionsDetermination()).go(vue.getDeterminationsPanel());

                gererEvenements();

        }

        public void go(HasWidgets composite) {
                composite.add(vue.asWidget());
        }

        protected void gererEvenements() {

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

                        public void onClick(ClickEvent event) {
                                List<Image> images = observation.getImages();
                                if (images.size() > 0) {
                                        CacheClient.getInstance().setImageCourante(images.get(0));
                                } else {
                                        CacheClient.getInstance().setImageCourante(null);
                                }
                                BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
                        }
                });
        }
}