Subversion Repositories eFlore/Applications.del

Rev

Rev 1239 | Rev 1323 | Go to most recent revision | 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.pictoflora.resultats.images;
2
 
3
import java.util.HashMap;
4
import java.util.List;
5
 
6
import org.tela_botanica.del.client.cache.CacheClient;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
8
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
1239 gduche 9
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentairePresenteur;
10
import org.tela_botanica.del.client.composants.formulaires.formulairecommentaire.FormulaireCommentaireVue;
1196 gduche 11
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
12
import org.tela_botanica.del.client.composants.images.DetailImageVue;
13
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
14
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
15
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImagePresenteur;
16
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImageVue;
17
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur;
18
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImageVue;
19
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
20
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;
21
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;
22
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur;
23
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue;
24
import org.tela_botanica.del.client.modeles.Image;
25
import org.tela_botanica.del.client.modeles.ModeRecherche;
26
import org.tela_botanica.del.client.modeles.Observation;
27
import org.tela_botanica.del.client.modeles.Protocole;
28
import org.tela_botanica.del.client.modeles.VoteProtocole;
29
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
1239 gduche 30
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.EvenementAjoutCommentaire;
31
import org.tela_botanica.del.client.navigation.evenement.ajoutcommentaire.GestionnaireEvenementAjoutCommentaire;
32
import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.EvenementAjoutMotCleImage;
33
import org.tela_botanica.del.client.navigation.evenement.ajoutmotcleimage.GestionnaireEvenementAjoutMotCleImage;
1196 gduche 34
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
35
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;
1241 gduche 36
import org.tela_botanica.del.client.navigation.evenement.fermermotcleimage.EvenementFermerMotCleImage;
37
import org.tela_botanica.del.client.navigation.evenement.fermermotcleimage.GestionnaireEvenementFermerMotCleImage;
1196 gduche 38
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage;
39
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementVoirDetailsImage;
40
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
41
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora;
1239 gduche 42
import org.tela_botanica.del.client.services.rest.CommentaireServiceConcret;
1196 gduche 43
import org.tela_botanica.del.client.services.rest.MotsClesService;
44
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret;
45
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;
46
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
47
 
48
import com.google.gwt.core.client.GWT;
49
import com.google.gwt.event.dom.client.ClickEvent;
50
import com.google.gwt.event.dom.client.ClickHandler;
51
import com.google.gwt.event.dom.client.HasClickHandlers;
52
import com.google.gwt.user.client.Window;
53
import com.google.gwt.user.client.ui.HasWidgets;
54
import com.google.gwt.user.client.ui.IsWidget;
55
import com.google.gwt.user.client.ui.Widget;
56
 
57
public class ImagePresenteur extends Presenteur {
58
 
59
	public interface Vue extends IsWidget {
60
		public abstract void loadImage(Image image);
61
 
62
		public abstract HasClickHandlers getImagePrincipale();
63
 
64
		public IsWidget getImagePrincipaleWidget();
65
 
66
		public void setUrlImagePrincipale(String url);
67
 
68
		public void setTitreImagePrincipale(String titre);
69
 
70
		public void setAltTextImagePrincipale(String altText);
71
 
72
		public String getUrlImagePrincipale();
73
 
74
		public String getTitreImagePrincipale();
75
 
76
		public String getAltTextImagePrincipale();
77
 
78
		public abstract HasClickHandlers getEnSavoirPlus();
79
 
80
		public abstract void cacherZoneCache();
81
 
82
		public abstract void afficherZoneCache();
83
 
84
		public abstract HasWidgets getZoneVoter();
85
 
86
		public HasClickHandlers getNomAuteur();
87
 
88
		public HasClickHandlers getNomEspece();
89
 
90
		public HasWidgets getMetadonnees();
91
 
92
		public HasClickHandlers getVoirMotsCles();
93
 
94
		public HasWidgets getZoneMotsCles();
95
 
96
		public void cacherZoneMotsCles();
97
 
98
		public void afficherZoneMotsCles();
1236 gduche 99
 
100
		public HasClickHandlers getBoutonFermer();
1196 gduche 101
	}
102
 
103
	private Vue vue;
104
 
105
	private final Image image;
106
	private boolean detailsOuverts = false;
107
 
108
	private Protocole protocole;
109
 
110
	private boolean motsClesOuverts = false;
111
 
112
	private MotsClesImagePresenteur motsClesImagePresenteur;
113
 
1241 gduche 114
	final FenetreOverlaySimplePresenteur fenetreOverlaySimplePresenteur = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
115
 
1196 gduche 116
	public ImagePresenteur(Image image, Protocole protocole, Vue vue) {
117
		this.image = image;
118
		this.protocole = protocole;
119
		this.vue = vue;
120
	}
121
 
122
	public void go(HasWidgets composite) {
123
		composite.add(vue.asWidget());
124
		vue.loadImage(image);
125
		new MetadonneesPresenteur(new MetadonneesVue(), image.getObservation(), ModeRecherche.MODE_IMAGE, true).go(vue.getMetadonnees());
126
		chargerDonneesValidation();
127
		gererEvenements();
128
	}
129
 
130
	private void chargerDonneesValidation() {
131
		vue.getZoneVoter().clear();
132
		if (protocole != null) {
133
			HashMap<String, VoteProtocole> observationValidationDatas = image.getVotesProtocoles(protocole.getId());
134
			if (observationValidationDatas != null) {
135
				new MoyenneVotePresenteur(image, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret()).go(vue.getZoneVoter());
136
			}
137
		}
138
	}
139
 
140
	private void lancerEvenementValidation() {
141
		CacheClient.getInstance().setImageCourante(image);
142
		final Observation obs = image.getObservation();
143
		BusEvenementiel.getInstance().fireEvent(new EvenementValidationPictoflora(obs));
144
	}
145
 
146
	protected void gererEvenements() {
147
 
148
		ClickHandler zoomeur = new ClickHandler() {
149
			public void onClick(ClickEvent event) {
150
				FenetreOverlaySimplePresenteur presenteurGalerie = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
151
				presenteurGalerie.ouvrirFenetreModaleDefilante(0, new DetailImagePresenteur(image, new DetailImageVue()));
152
				presenteurGalerie.afficherBoutonsSuivantsPrecedents(false);
153
			}};
154
 
155
		vue.getImagePrincipale().addClickHandler(zoomeur);
156
 
157
		vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {
158
 
159
			@Override
160
			public void onClick(ClickEvent event) {
161
				BusEvenementiel.getInstance().fireEvent(new EvenementVoirDetailsImage(image));
162
			}
163
		});
164
 
1239 gduche 165
 
166
 
1196 gduche 167
		vue.getVoirMotsCles().addClickHandler(new ClickHandler() {
168
			@Override
169
			public void onClick(ClickEvent event) {
1239 gduche 170
				CacheClient.getInstance().setImageCourante(image);
171
				motsClesImagePresenteur = new MotsClesImagePresenteur(image, new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(),
172
																										new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue());
173
				motsClesImagePresenteur.chargerMotsCles();
174
				fenetreOverlaySimplePresenteur.ouvrirFenetreModale(motsClesImagePresenteur);
1196 gduche 175
			}
176
		});
177
 
1236 gduche 178
 
179
		vue.getBoutonFermer().addClickHandler(new ClickHandler() {
180
			@Override
181
			public void onClick(ClickEvent event) {
182
					cacherPanneauMotsCles();
183
			}
184
		});
1196 gduche 185
		BusEvenementiel.getInstance().addHandler(EvenementVoirDetailsImage.TYPE, new GestionnaireEvenementVoirDetailsImage() {
186
			@Override
187
			public void onVoirDetailsImage(EvenementVoirDetailsImage event) {
188
				if (image.getIdImage().equals(event.getImage().getIdImage())) {
189
					if (!detailsOuverts) {
190
						afficherDetails();
191
					} else {
192
						cacherDetails();
193
					}
194
				} else {
195
					cacherDetails();
196
				}
197
			}
198
		});
199
 
200
		BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {
201
			@Override
202
			public void onChangementProtocole(EvenementChangementProtocole event) {
203
				setProtocole(event.getProtocole());
204
				chargerDonneesValidation();
205
			}
206
		});
1239 gduche 207
 
1241 gduche 208
		BusEvenementiel.getInstance().addHandler(EvenementFermerMotCleImage.TYPE, new GestionnaireEvenementFermerMotCleImage() {
1239 gduche 209
 
210
			@Override
1241 gduche 211
			public void onFermerMotCleImage(
212
					EvenementFermerMotCleImage evenementFermerMotCleImage) {
213
				if (evenementFermerMotCleImage.getIdImage().equals(image.getIdImage())) {
1239 gduche 214
					fenetreOverlaySimplePresenteur.fermerFenetreModale();
1241 gduche 215
				}
1239 gduche 216
			}
217
		});
1196 gduche 218
	}
219
 
220
	protected void afficherPanneauMotsCles() {
221
		vue.afficherZoneMotsCles();
222
		motsClesOuverts = true;
223
		motsClesImagePresenteur.chargerMotsCles();
224
		motsClesImagePresenteur.focuserChampsSaisie();
225
	}
226
 
227
	protected void cacherPanneauMotsCles() {
228
		vue.cacherZoneMotsCles();
229
		motsClesOuverts = false;
230
	}
231
 
232
	public void cacherDetails() {
233
		vue.cacherZoneCache();
234
		detailsOuverts = false;
235
	}
236
 
237
	public void afficherDetails() {
238
		vue.afficherZoneCache();
239
		detailsOuverts = true;
240
	}
241
 
242
	public boolean isDetailsOpen() {
243
		return detailsOuverts;
244
	}
245
 
246
	public Protocole getProtocole() {
247
		return protocole;
248
	}
249
 
250
	public void setProtocole(Protocole protocole) {
251
		this.protocole = protocole;
252
	}
253
}