Subversion Repositories eFlore/Applications.del

Rev

Rev 2050 | Rev 2067 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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