Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
166 gduche 1
package org.tela_botanica.del.client.vues.rechercheobservations;
2
 
3
import java.util.Iterator;
4
import java.util.List;
5
 
332 gduche 6
import org.tela_botanica.del.client.cache.CacheClient;
166 gduche 7
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
337 gduche 8
import org.tela_botanica.del.client.i18n.I18n;
332 gduche 9
import org.tela_botanica.del.client.modeles.Image;
166 gduche 10
import org.tela_botanica.del.client.modeles.Observation;
183 gduche 11
import org.tela_botanica.del.client.modeles.PropositionDetermination;
332 gduche 12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
13
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
334 gduche 14
import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationPresenteur;
15
import org.tela_botanica.del.client.vues.rechercheobservations.detail.DetailVoteObservationVue;
166 gduche 16
 
200 gduche 17
import com.google.gwt.event.dom.client.ClickEvent;
18
import com.google.gwt.event.dom.client.ClickHandler;
309 aurelien 19
import com.google.gwt.event.dom.client.HasClickHandlers;
334 gduche 20
import com.google.gwt.user.client.ui.HTMLPanel;
309 aurelien 21
import com.google.gwt.user.client.ui.HasText;
166 gduche 22
import com.google.gwt.user.client.ui.HasWidgets;
309 aurelien 23
import com.google.gwt.user.client.ui.IsWidget;
166 gduche 24
 
25
public class ObservationPresenteur extends Presenteur {
309 aurelien 26
 
27
	public abstract interface Vue extends IsWidget {
316 aurelien 28
		public void ajouterPhoto(String url, String titre, String alText, ClickHandler GestionnaireClic);
309 aurelien 29
		public HasText getAuteur();
30
		public HasText getDate();
31
		public HasText getFamille();
32
		public HasText getLocalite();
33
		public HasText getMotsClefs();
34
		public HasText getNomRetenu();
35
		public HasText getNumNomenclatural();
36
		public HasClickHandlers getPhotoPrincipale();
37
		public HasWidgets getPhotos();
38
		public void setUrlImagePrincipale(String url);
39
		public void setTitreImagePrincipale(String titre);
40
		public void setAltTextImagePrincipale(String altText);
41
		public String getUrlImagePrincipale();
42
		public String getTitreImagePrincipale();
43
		public String getAltTextImagePrincipale();
44
		public void setTexteTableau(int ligne, int colonne, String texte);
334 gduche 45
		public void setElementTableau(int ligne, int colonne, IsWidget element);
332 gduche 46
		public HasClickHandlers getLienDeterminer();
309 aurelien 47
	}
48
 
49
	private Vue vue;
166 gduche 50
 
51
	private Observation observation;
52
 
309 aurelien 53
	public ObservationPresenteur(Vue vue, Observation observation) {
166 gduche 54
		this.observation = observation;
314 gduche 55
		this.vue = vue;
166 gduche 56
		chargerObservation();
57
	}
58
 
59
	public void chargerObservation() {
314 gduche 60
		HasText auteur = vue.getAuteur();
61
		auteur.setText(observation.getAuteur());
309 aurelien 62
		vue.getDate().setText(observation.getDate());
63
		vue.getFamille().setText(observation.getFamille());
64
		vue.getLocalite().setText(observation.getLocalite());
166 gduche 65
 
66
		List<String> motsCles = observation.getMotsClefs();
67
		Iterator<String> itMotsCles = motsCles.iterator();
68
		String motsClesChaine = "";
69
		while (itMotsCles.hasNext()) {
70
			String motCle = itMotsCles.next();
71
			motsClesChaine += motCle;
72
			if (itMotsCles.hasNext()) {
73
				motsClesChaine += ", ";
74
			}
75
		}
309 aurelien 76
		vue.getMotsClefs().setText(motsClesChaine);
77
		vue.getNomRetenu().setText(observation.getNomRetenu());
78
		vue.getNumNomenclatural().setText(observation.getNumNomenclatural());
166 gduche 79
 
200 gduche 80
		List<org.tela_botanica.del.client.modeles.Image> images = observation.getImages();
183 gduche 81
 
243 gduche 82
		if (images != null && images.size() > 0) {
83
			org.tela_botanica.del.client.modeles.Image imagePrincipale = images.get(0);
309 aurelien 84
			vue.setUrlImagePrincipale(imagePrincipale.getUrl());
85
			vue.setTitreImagePrincipale(imagePrincipale.getUrlFormat("L"));
86
			vue.setAltTextImagePrincipale(observation.getAuteur() + " - " + observation.getNomRetenu());
243 gduche 87
			images.remove(0);
88
		}
200 gduche 89
 
90
		int nbImagesAffichees = 0;
371 gduche 91
		for (final org.tela_botanica.del.client.modeles.Image imageCourante : images) {
200 gduche 92
			nbImagesAffichees++;
93
			if (nbImagesAffichees < 5) {
316 aurelien 94
				ClickHandler gestionnaireClic = new ClickHandler() {
200 gduche 95
					public void onClick(ClickEvent event) {
371 gduche 96
						ouvrirFenetreModale(new DetailImagePresenteur(imageCourante.getUrlFormat("L"), imageCourante.getObservation().getAuteur()+ " - " + imageCourante.getObservation().getNomRetenu(),  new DetailImageVue()));
200 gduche 97
					}
316 aurelien 98
				};
99
				vue.ajouterPhoto(imageCourante.getUrlFormat("CRX2S"),
100
								 imageCourante.getUrlFormat("L"),
101
								 observation.getAuteur() + " - " + observation.getNomRetenu(),
102
								 gestionnaireClic);
200 gduche 103
			}
104
		}
105
 
183 gduche 106
		List<PropositionDetermination> propositions = observation.getPropositionsDetermination();
107
		int i = 0;
108
		for (PropositionDetermination proposition : propositions) {
337 gduche 109
 
334 gduche 110
			HTMLPanel panneau = new HTMLPanel("");
111
			DetailVoteObservationPresenteur presenteurVote = new DetailVoteObservationPresenteur(new DetailVoteObservationVue(), proposition);
112
			presenteurVote.go(panneau);
113
			vue.setElementTableau(i, 0, panneau);
337 gduche 114
			vue.setTexteTableau(i, 1, String.valueOf(proposition.getListeCommentaires().size()) + " " +I18n.getVocabulary().commentaires());
115
			i++;
183 gduche 116
		}
117
 
220 gduche 118
		gererEvenements();
183 gduche 119
		// vue.propositions.setText(ch);
166 gduche 120
	}
121
 
122
	public void go(HasWidgets composite) {
309 aurelien 123
		composite.add(vue.asWidget());
166 gduche 124
	}
125
 
220 gduche 126
	protected void gererEvenements() {
309 aurelien 127
		vue.getPhotoPrincipale().addClickHandler(new ClickHandler() {
200 gduche 128
			public void onClick(ClickEvent event) {
371 gduche 129
				ouvrirFenetreModale(new DetailImagePresenteur(vue.getTitreImagePrincipale(), vue.getAltTextImagePrincipale(), new DetailImageVue()));
200 gduche 130
			}
131
		});
332 gduche 132
 
133
		vue.getLienDeterminer().addClickHandler(new ClickHandler() {
134
 
135
			public void onClick(ClickEvent event) {
136
				List<Image> images = observation.getImages();
137
				if (images.size() > 0) {
138
					CacheClient.getInstance().setImageCourante(images.get(0));
139
				} else {
140
					CacheClient.getInstance().setImageCourante(null);
141
				}
142
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
143
			}
144
		});
166 gduche 145
	}
146
}