Subversion Repositories eFlore/Applications.del

Rev

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

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

import java.util.Iterator;
import java.util.List;

import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.modeles.Observation;
import org.tela_botanica.del.client.modeles.PropositionDetermination;

import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.Image;

public class ObservationPresenteur extends Presenteur {

        private Observation observation;

        public ObservationPresenteur(Observation observation) {
                super(new ObservationVue());
                this.observation = observation;
                chargerObservation();
        }

        public void chargerObservation() {
                ObservationVue vue = (ObservationVue) this.getVue();
                vue.auteur.setText(observation.getAuteur());
                vue.date.setText(observation.getDate());
                vue.famille.setText(observation.getFamille());
                vue.localite.setText(observation.getLocalite());

                List<String> motsCles = observation.getMotsClefs();
                Iterator<String> itMotsCles = motsCles.iterator();
                String motsClesChaine = "";
                while (itMotsCles.hasNext()) {
                        String motCle = itMotsCles.next();
                        motsClesChaine += motCle;
                        if (itMotsCles.hasNext()) {
                                motsClesChaine += ", ";
                        }
                }
                vue.motsClefs.setText(motsClesChaine);
                vue.nomRetenu.setText(observation.getNomRetenu());
                vue.numNomenclatural.setText(observation.getNumNomenclatural());

                List<org.tela_botanica.del.client.modeles.Image> images = observation.getImages();

                if (images != null && images.size() > 0) {
                        org.tela_botanica.del.client.modeles.Image imagePrincipale = images.get(0);
                        vue.photoPrincipale.setUrl(imagePrincipale.getUrl());
                        vue.photoPrincipale.setTitle(imagePrincipale.getUrlFormat("L"));
                        vue.photoPrincipale.setAltText(observation.getAuteur() + " - " + observation.getNomRetenu());
                        images.remove(0);
                }

                int nbImagesAffichees = 0;
                for (org.tela_botanica.del.client.modeles.Image imageCourante : images) {
                        nbImagesAffichees++;
                        if (nbImagesAffichees < 5) {
                                Image photo = new Image();
                                photo.setUrl(imageCourante.getUrlFormat("CRX2S"));
                                photo.setTitle(imageCourante.getUrlFormat("L"));
                                photo.setAltText(observation.getAuteur() + " - " + observation.getNomRetenu());
                                photo.addClickHandler(new ClickHandler() {

                                        public void onClick(ClickEvent event) {
                                                Image photo = (Image) event.getSource();
                                                ouvrirFenetreModale(new DetailImagePresenteur(photo.getTitle(), photo.getAltText()));
                                        }
                                });
                                vue.photos.add(photo);
                        }
                }

                List<PropositionDetermination> propositions = observation.getPropositionsDetermination();

                vue.tableauPropositions.setText(0, 0, "Certitude");
                vue.tableauPropositions.setText(0, 1, "Commentaires");
                vue.tableauPropositions.setText(0, 2, "Nom");
                vue.tableauPropositions.setText(0, 3, "Votez");

                int i = 0;
                for (PropositionDetermination proposition : propositions) {
                        i++;
                        vue.tableauPropositions.setText(i, 0, String.valueOf(proposition.getVotesDeterminations().size()));
                        /*
                         * List<VoteDetermination> votes =
                         * proposition.getVotesDeterminations(); for (VoteDetermination vote
                         * : votes) { vote.getVote(); }
                         */
                        vue.tableauPropositions.setText(i, 1, String.valueOf(proposition.getCommentaires().size()));
                        vue.tableauPropositions.setText(i, 2, proposition.getEspece());
                }

                gererEvenements();
                // vue.propositions.setText(ch);
        }

        public void go(HasWidgets composite) {
                composite.add(this.getVue());
        }

        protected void gererEvenements() {
                ObservationVue vue = (ObservationVue) this.getVue();
                vue.photoPrincipale.addClickHandler(new ClickHandler() {

                        public void onClick(ClickEvent event) {
                                Image photoPrincipale = (Image) event.getSource();
                                ouvrirFenetreModale(new DetailImagePresenteur(photoPrincipale.getTitle(), photoPrincipale.getAltText()));
                        }
                });

        }
}