Rev 334 | 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.cache.CacheClient;import org.tela_botanica.del.client.composants.presenteur.Presenteur;import org.tela_botanica.del.client.i18n.I18n;import org.tela_botanica.del.client.modeles.Image;import org.tela_botanica.del.client.modeles.MoyenneVote;import org.tela_botanica.del.client.modeles.Observation;import org.tela_botanica.del.client.modeles.PropositionDetermination;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.services.CalculVoteDeterminationService;import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationPresenteur;import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationVue;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.HTMLPanel;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 ObservationPresenteur extends Presenteur {public abstract interface Vue extends IsWidget {public void ajouterPhoto(String url, String titre, String alText, ClickHandler GestionnaireClic);public HasText getAuteur();public HasText getDate();public HasText getFamille();public HasText getLocalite();public HasText getMotsClefs();public HasText getNomRetenu();public HasText getNumNomenclatural();public HasClickHandlers getPhotoPrincipale();public HasWidgets getPhotos();public void setUrlImagePrincipale(String url);public void setTitreImagePrincipale(String titre);public void setAltTextImagePrincipale(String altText);public String getUrlImagePrincipale();public String getTitreImagePrincipale();public String getAltTextImagePrincipale();public void setTexteTableau(int ligne, int colonne, String texte);public void setElementTableau(int ligne, int colonne, IsWidget element);public HasClickHandlers getLienDeterminer();}private Vue vue;private Observation observation;public ObservationPresenteur(Vue vue, Observation observation) {this.observation = observation;this.vue = vue;chargerObservation();}public void chargerObservation() {HasText auteur = vue.getAuteur();auteur.setText(observation.getAuteur());vue.getDate().setText(observation.getDate());vue.getFamille().setText(observation.getFamille());vue.getLocalite().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.getMotsClefs().setText(motsClesChaine);vue.getNomRetenu().setText(observation.getNomRetenu());vue.getNumNomenclatural().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.setUrlImagePrincipale(imagePrincipale.getUrl());vue.setTitreImagePrincipale(imagePrincipale.getUrlFormat("L"));vue.setAltTextImagePrincipale(observation.getAuteur() + " - " + observation.getNomRetenu());images.remove(0);}int nbImagesAffichees = 0;for (org.tela_botanica.del.client.modeles.Image imageCourante : images) {nbImagesAffichees++;if (nbImagesAffichees < 5) {ClickHandler gestionnaireClic = new ClickHandler() {public void onClick(ClickEvent event) {IsWidget image = (IsWidget)event.getSource();ouvrirFenetreModale(new DetailImagePresenteur(image, new DetailImageVue()));}};vue.ajouterPhoto(imageCourante.getUrlFormat("CRX2S"),imageCourante.getUrlFormat("L"),observation.getAuteur() + " - " + observation.getNomRetenu(),gestionnaireClic);}}List<PropositionDetermination> propositions = observation.getPropositionsDetermination();int i = 0;for (PropositionDetermination proposition : propositions) {HTMLPanel panneau = new HTMLPanel("");DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);presenteurVote.go(panneau);vue.setElementTableau(i, 0, panneau);vue.setTexteTableau(i, 1, String.valueOf(proposition.getListeCommentaires().size()) + " " +I18n.getVocabulary().commentaires());i++;}gererEvenements();// vue.propositions.setText(ch);}public void go(HasWidgets composite) {composite.add(vue.asWidget());}protected void gererEvenements() {vue.getPhotoPrincipale().addClickHandler(new ClickHandler() {public void onClick(ClickEvent event) {//FIXME : faire une interface pour les imagesIsWidget image = (IsWidget)event.getSource();ouvrirFenetreModale(new DetailImagePresenteur(image, new DetailImageVue()));}});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));}});}}