Subversion Repositories eFlore/Applications.del

Rev

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

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