Subversion Repositories eFlore/Applications.del

Rev

Rev 1934 | Rev 2062 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1196 gduche 1
package org.tela_botanica.del.client.vues.identiplante.resultats.observations;
2
 
2050 aurelien 3
import java.util.HashMap;
4
import java.util.Iterator;
1196 gduche 5
import java.util.List;
2050 aurelien 6
import java.util.Map;
1196 gduche 7
 
8
import org.tela_botanica.del.client.cache.CacheClient;
9
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
10
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
11
import org.tela_botanica.del.client.composants.observations.ObservationImagesPresenteur;
12
import org.tela_botanica.del.client.composants.observations.ObservationImagesVue;
13
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
14
import org.tela_botanica.del.client.modeles.Image;
15
import org.tela_botanica.del.client.modeles.ModeRecherche;
16
import org.tela_botanica.del.client.modeles.Observation;
17
import org.tela_botanica.del.client.modeles.PropositionDetermination;
18
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
19
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
20
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
21
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.EvenementAjoutDetermination;
22
import org.tela_botanica.del.client.navigation.evenement.ajoutdetermination.GestionnaireEvenementAjoutDetermination;
23
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
24
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
25
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
26
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
27
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
28
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionPresenteur;
29
import org.tela_botanica.del.client.composants.formulaires.formulaireproposition.FormulairePropositionVue;
30
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
31
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
32
import org.tela_botanica.del.client.services.rest.PropositionDeterminationServiceConcret;
2050 aurelien 33
import org.tela_botanica.del.client.utils.StringUtils;
1196 gduche 34
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationPresenteur;
35
import org.tela_botanica.del.client.vues.identiplante.resultats.observationdeterminations.ObservationDeterminationVue;
36
 
2050 aurelien 37
import com.gargoylesoftware.htmlunit.html.Util;
38
import com.google.gwt.core.shared.GWT;
1196 gduche 39
import com.google.gwt.event.dom.client.ClickEvent;
40
import com.google.gwt.event.dom.client.ClickHandler;
41
import com.google.gwt.event.dom.client.HasClickHandlers;
1934 aurelien 42
import com.google.gwt.user.client.Window;
1196 gduche 43
import com.google.gwt.user.client.ui.HasWidgets;
44
import com.google.gwt.user.client.ui.IsWidget;
45
 
46
public class ObservationPresenteur extends Presenteur {
47
 
48
	public interface Vue extends IsWidget {
49
		public HasClickHandlers getBoutonAjoutProposition();
50
 
51
		public HasWidgets getDeterminationsPanel();
52
 
53
		public HasWidgets getImagesPanel();
54
 
55
		public HasWidgets getMetadonneesPanel();
56
 
57
		public HasClickHandlers getNomEspece();
58
 
59
		public void setNomEspece(String nomEspece);
60
 
1934 aurelien 61
		public void setNbCommentaires(String nbCommentaires);
62
 
1196 gduche 63
		public HasClickHandlers getBoutonAjoutCommentaire();
64
		public HasClickHandlers getBoutonPlusDeDetails();
2050 aurelien 65
 
66
		public void afficherEvenementsObservation(String evenementsObs);
67
 
68
		public void cacherEvenementsObservation();
69
 
70
		public void mettreEnValeurEvenementsObs();
1196 gduche 71
	}
72
 
73
	private Vue vue;
74
 
75
	private Observation observation;
76
 
77
	private Image imagePrincipale;
78
 
79
	private ObservationDeterminationPresenteur observationDeterminationPresenteur;
80
 
81
	private FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur;
82
 
83
	public ObservationPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
84
		this.observation = observation;
85
		this.vue = vue;
86
		this.imagePrincipale=imagePrincipale;
87
		chargerObservation();
88
	}
89
 
90
	public void chargerObservation() {
1553 jpm 91
		new ObservationImagesPresenteur(new ObservationImagesVue(), observation, imagePrincipale).go(vue.getImagesPanel());
1196 gduche 92
		new MetadonneesPresenteur(new MetadonneesVue(), observation, ModeRecherche.MODE_OBSERVATION, false).go(vue.getMetadonneesPanel());
93
		observationDeterminationPresenteur = new ObservationDeterminationPresenteur(new ObservationDeterminationVue(), observation.getPropositionDeterminations());
94
		observationDeterminationPresenteur.go(vue.getDeterminationsPanel());
95
		vue.setNomEspece(observation.getNomRetenu());
1934 aurelien 96
		vue.setNbCommentaires(observation.getNbCommentaires());
2050 aurelien 97
		gererAffichageEvenementsObs();
1196 gduche 98
		gererEvenements();
99
	}
100
 
2050 aurelien 101
	private void gererAffichageEvenementsObs() {
102
		if(!observation.getEvenementsAssocies().isEmpty()) {
103
			Map<String, Integer> nbEventsParEvent = new HashMap<String, Integer>();
104
 
105
			List<String> evts = observation.getEvenementsAssocies();
106
			GWT.log("Evenements pour l'obs "+observation.getId());
107
			GWT.log(observation.getEvenementsAssocies().size()+" evenements dans la liste");
108
			for (Iterator<String> iterator = evts.iterator(); iterator.hasNext();) {
109
				String evenement = iterator.next();
110
				if(nbEventsParEvent.containsKey(evenement)) {
111
					Integer nbEvent = nbEventsParEvent.get(evenement);
112
					nbEvent++;
113
					nbEventsParEvent.put(evenement, nbEvent);
114
					GWT.log("ajout à l'évènement "+evenement+" "+(nbEvent));
115
				} else {
116
					GWT.log("nouvel évènement "+evenement);
117
					nbEventsParEvent.put(evenement, 1);
118
				}
119
 
120
				GWT.log("vérif évenement "+evenement+" "+nbEventsParEvent.get(evenement));
121
			}
122
 
123
			StringBuilder stb = new StringBuilder();
124
			for (Iterator<String> iterator = nbEventsParEvent.keySet().iterator(); iterator.hasNext();) {
125
				String evtNom = (String) iterator.next();
126
				stb.append(StringUtils.getCorrespondanceChaineEvenementObs(evtNom, nbEventsParEvent.get(evtNom)));
127
				if(iterator.hasNext()) {
128
					stb.append(", ");
129
				}
130
			}
131
 
132
			vue.afficherEvenementsObservation(stb.toString());
133
		} else {
134
			vue.cacherEvenementsObservation();
135
		}
136
	}
137
 
1196 gduche 138
	public void go(HasWidgets composite) {
139
		composite.add(vue.asWidget());
140
	}
141
 
142
	protected void gererEvenements() {
143
 
144
		BusEvenementiel.getInstance().addHandler(EvenementAjoutDetermination.TYPE, new GestionnaireEvenementAjoutDetermination() {
145
			@Override
146
			public void onAjoutDetermination(EvenementAjoutDetermination event) {
147
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
148
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
149
					ajouterPropositionDetermination(event.getPropositionDetermination());
150
				}
151
			}
152
		});
153
 
154
		vue.getBoutonAjoutProposition().addClickHandler(new ClickHandler() {
155
			@Override
156
			public void onClick(ClickEvent event) {
157
				List<Image> images = observation.getImages();
158
				if (images.size() > 0) {
159
					CacheClient.getInstance().setImageCourante(images.get(0));
160
				} else {
161
					CacheClient.getInstance().setImageCourante(null);
162
				}
163
				CacheClient.getInstance().setObservationCourante(observation);
164
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
165
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(new FormulairePropositionPresenteur(new FormulairePropositionVue(), new PropositionDeterminationServiceConcret()));
166
			}
167
		});
168
 
169
		ClickHandler versDetails = new ClickHandler() {
170
			@Override
171
			public void onClick(ClickEvent event) {
172
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
173
			}
174
		};
175
		vue.getNomEspece().addClickHandler(versDetails);
176
		vue.getBoutonPlusDeDetails().addClickHandler(versDetails);
177
 
178
		vue.getBoutonAjoutCommentaire().addClickHandler(new ClickHandler() {
179
			@Override
180
			public void onClick(ClickEvent event) {
181
				FormulaireCommentairePresenteur commentairePresenteur = new FormulaireCommentairePresenteur(observation, new CommentaireServiceConcret(), new FormulaireCommentaireVue());
182
				fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
183
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(commentairePresenteur);
184
			}
185
		});
186
 
187
		BusEvenementiel.getInstance().addHandler(EvenementAjoutCommentaire.TYPE, new GestionnaireEvenementAjoutCommentaire() {
188
 
189
			@Override
190
			public void onAjoutCommentaire(EvenementAjoutCommentaire event) {
191
				if (fenetreOverlaySimplePresenteur != null && fenetreOverlaySimplePresenteur.fenetreModaleEstOuverte()) {
192
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
193
				}
194
			}
195
		});
196
	}
197
 
198
	private void ajouterPropositionDetermination(PropositionDetermination propositionDetermination) {
199
		observationDeterminationPresenteur.setPropositions(observation.getPropositionDeterminations());
200
	}
2050 aurelien 201
 
202
	public void mettreEnValeurEvenementsObs() {
203
		vue.mettreEnValeurEvenementsObs();
204
	}
1196 gduche 205
}