Subversion Repositories eFlore/Applications.del

Rev

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