Subversion Repositories eFlore/Applications.del

Rev

Rev 2067 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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