Subversion Repositories eFlore/Applications.del

Rev

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