Subversion Repositories eFlore/Applications.del

Rev

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

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