Subversion Repositories eFlore/Applications.del

Rev

Rev 1165 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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