Subversion Repositories eFlore/Applications.del

Rev

Rev 309 | Go to most recent revision | Details | Compare with Previous | 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
 
6
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
7
import org.tela_botanica.del.client.modeles.Observation;
183 gduche 8
import org.tela_botanica.del.client.modeles.PropositionDetermination;
166 gduche 9
 
200 gduche 10
import com.google.gwt.event.dom.client.ClickEvent;
11
import com.google.gwt.event.dom.client.ClickHandler;
309 aurelien 12
import com.google.gwt.event.dom.client.HasClickHandlers;
314 gduche 13
import com.google.gwt.user.client.Window;
309 aurelien 14
import com.google.gwt.user.client.ui.FlexTable;
15
import com.google.gwt.user.client.ui.HasText;
166 gduche 16
import com.google.gwt.user.client.ui.HasWidgets;
200 gduche 17
import com.google.gwt.user.client.ui.Image;
309 aurelien 18
import com.google.gwt.user.client.ui.IsWidget;
19
import com.google.gwt.user.client.ui.Label;
20
import com.google.gwt.user.client.ui.Panel;
166 gduche 21
 
22
public class ObservationPresenteur extends Presenteur {
309 aurelien 23
 
24
	public abstract interface Vue extends IsWidget {
25
		public HasText getAuteur();
26
		public HasText getDate();
27
		public HasText getFamille();
28
		public HasText getLocalite();
29
		public HasText getMotsClefs();
30
		public HasText getNomRetenu();
31
		public HasText getNumNomenclatural();
32
		public FlexTable getTableauPropositions();
33
		public HasClickHandlers getPhotoPrincipale();
34
		public HasWidgets getPhotos();
35
		public void setUrlImagePrincipale(String url);
36
		public void setTitreImagePrincipale(String titre);
37
		public void setAltTextImagePrincipale(String altText);
38
		public String getUrlImagePrincipale();
39
		public String getTitreImagePrincipale();
40
		public String getAltTextImagePrincipale();
41
		public void setTexteTableau(int ligne, int colonne, String texte);
42
	}
43
 
44
	private Vue vue;
166 gduche 45
 
46
	private Observation observation;
47
 
309 aurelien 48
	public ObservationPresenteur(Vue vue, Observation observation) {
166 gduche 49
		this.observation = observation;
314 gduche 50
		this.vue = vue;
166 gduche 51
		chargerObservation();
52
	}
53
 
54
	public void chargerObservation() {
314 gduche 55
		HasText auteur = vue.getAuteur();
56
		auteur.setText(observation.getAuteur());
309 aurelien 57
		vue.getDate().setText(observation.getDate());
58
		vue.getFamille().setText(observation.getFamille());
59
		vue.getLocalite().setText(observation.getLocalite());
166 gduche 60
 
61
		List<String> motsCles = observation.getMotsClefs();
62
		Iterator<String> itMotsCles = motsCles.iterator();
63
		String motsClesChaine = "";
64
		while (itMotsCles.hasNext()) {
65
			String motCle = itMotsCles.next();
66
			motsClesChaine += motCle;
67
			if (itMotsCles.hasNext()) {
68
				motsClesChaine += ", ";
69
			}
70
		}
309 aurelien 71
		vue.getMotsClefs().setText(motsClesChaine);
72
		vue.getNomRetenu().setText(observation.getNomRetenu());
73
		vue.getNumNomenclatural().setText(observation.getNumNomenclatural());
166 gduche 74
 
200 gduche 75
		List<org.tela_botanica.del.client.modeles.Image> images = observation.getImages();
183 gduche 76
 
243 gduche 77
		if (images != null && images.size() > 0) {
78
			org.tela_botanica.del.client.modeles.Image imagePrincipale = images.get(0);
309 aurelien 79
			vue.setUrlImagePrincipale(imagePrincipale.getUrl());
80
			vue.setTitreImagePrincipale(imagePrincipale.getUrlFormat("L"));
81
			vue.setAltTextImagePrincipale(observation.getAuteur() + " - " + observation.getNomRetenu());
243 gduche 82
			images.remove(0);
83
		}
200 gduche 84
 
85
		int nbImagesAffichees = 0;
86
		for (org.tela_botanica.del.client.modeles.Image imageCourante : images) {
87
			nbImagesAffichees++;
88
			if (nbImagesAffichees < 5) {
89
				Image photo = new Image();
90
				photo.setUrl(imageCourante.getUrlFormat("CRX2S"));
91
				photo.setTitle(imageCourante.getUrlFormat("L"));
92
				photo.setAltText(observation.getAuteur() + " - " + observation.getNomRetenu());
93
				photo.addClickHandler(new ClickHandler() {
94
 
95
					public void onClick(ClickEvent event) {
96
						Image photo = (Image) event.getSource();
309 aurelien 97
						ouvrirFenetreModale(new DetailImagePresenteur(vue.getTitreImagePrincipale(), vue.getAltTextImagePrincipale(), new DetailImageVue()));
200 gduche 98
					}
99
				});
309 aurelien 100
				vue.getPhotos().add(photo);
200 gduche 101
			}
102
		}
103
 
183 gduche 104
		List<PropositionDetermination> propositions = observation.getPropositionsDetermination();
105
 
309 aurelien 106
		vue.setTexteTableau(0, 0, "Certitude");
107
		vue.setTexteTableau(0, 1, "Commentaires");
108
		vue.setTexteTableau(0, 2, "Nom");
109
		vue.setTexteTableau(0, 3, "Votez");
183 gduche 110
 
111
		int i = 0;
112
		for (PropositionDetermination proposition : propositions) {
113
			i++;
309 aurelien 114
			vue.setTexteTableau(i, 0, String.valueOf(proposition.getVotesDeterminations().size()));
200 gduche 115
			/*
116
			 * List<VoteDetermination> votes =
117
			 * proposition.getVotesDeterminations(); for (VoteDetermination vote
118
			 * : votes) { vote.getVote(); }
119
			 */
309 aurelien 120
			vue.setTexteTableau(i, 1, String.valueOf(proposition.getListeCommentaires().size()));
121
			vue.setTexteTableau(i, 2, proposition.getEspece());
183 gduche 122
		}
123
 
220 gduche 124
		gererEvenements();
183 gduche 125
		// vue.propositions.setText(ch);
166 gduche 126
	}
127
 
128
	public void go(HasWidgets composite) {
309 aurelien 129
		composite.add(vue.asWidget());
166 gduche 130
	}
131
 
220 gduche 132
	protected void gererEvenements() {
309 aurelien 133
		vue.getPhotoPrincipale().addClickHandler(new ClickHandler() {
166 gduche 134
 
200 gduche 135
			public void onClick(ClickEvent event) {
309 aurelien 136
				//FIXME : faire une interface pour les images
137
				//Image photoPrincipale = (Image) event.getSource();
138
				//ouvrirFenetreModale(new DetailImagePresenteur(photoPrincipale.getTitreImagePrincipale(), vue.getAltTextImagePrincipale(), new DetailImageVue()));
200 gduche 139
			}
140
		});
141
 
166 gduche 142
	}
143
}