Subversion Repositories eFlore/Applications.del

Rev

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