Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
477 benjamin 1
package org.tela_botanica.del.client.composants.observations;
436 benjamin 2
 
3
import java.util.List;
4
 
1006 benjamin 5
import org.tela_botanica.del.client.cache.CacheClient;
608 aurelien 6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilantePresenteur;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
477 benjamin 8
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
9
import org.tela_botanica.del.client.composants.images.DetailImageVue;
436 benjamin 10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
1042 benjamin 11
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
436 benjamin 12
import org.tela_botanica.del.client.modeles.Image;
13
import org.tela_botanica.del.client.modeles.Observation;
1006 benjamin 14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
1045 benjamin 15
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
16
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
1041 benjamin 17
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
1196 gduche 18
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora;
436 benjamin 19
 
1196 gduche 20
import com.google.gwt.core.shared.GWT;
436 benjamin 21
import com.google.gwt.event.dom.client.ClickEvent;
22
import com.google.gwt.event.dom.client.ClickHandler;
23
import com.google.gwt.event.dom.client.HasClickHandlers;
1042 benjamin 24
import com.google.gwt.user.client.History;
1113 gduche 25
import com.google.gwt.user.client.Window;
1041 benjamin 26
import com.google.gwt.user.client.ui.HTML;
436 benjamin 27
import com.google.gwt.user.client.ui.HasWidgets;
28
import com.google.gwt.user.client.ui.IsWidget;
29
 
30
public class ObservationImagesPresenteur extends Presenteur {
31
 
32
	public abstract interface Vue extends IsWidget {
33
		public HasClickHandlers getPhotoPrincipale();
1006 benjamin 34
 
436 benjamin 35
		public HasWidgets getPhotos();
1006 benjamin 36
 
436 benjamin 37
		public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image);
1006 benjamin 38
 
436 benjamin 39
		public void ajouterPhoto(Image image, ClickHandler gestionnaireClic);
1046 benjamin 40
 
1041 benjamin 41
		public void afficherLienPlateformeValidation();
1046 benjamin 42
 
1041 benjamin 43
		public HTML getLienPlateforme();
436 benjamin 44
	}
45
 
46
	private Vue vue;
47
 
48
	private Observation observation;
49
 
50
	private Image imagePrincipale;
1006 benjamin 51
 
437 aurelien 52
	private List<Image> listeImages;
436 benjamin 53
 
1113 gduche 54
	private String page;
55
 
56
	public ObservationImagesPresenteur(Vue vue, Observation observation, Image imagePrincipale, String page) {
436 benjamin 57
		this.observation = observation;
58
		this.vue = vue;
1039 benjamin 59
		this.imagePrincipale = imagePrincipale;
1113 gduche 60
		this.page = page;
436 benjamin 61
	}
62
 
63
	public void chargerImagesObservation() {
64
 
437 aurelien 65
		listeImages = observation.getImages();
1039 benjamin 66
		if (imagePrincipale != null) {
444 aurelien 67
			vue.chargerImagePrincipale(imagePrincipale);
1006 benjamin 68
			vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClicGalerieImages(0, imagePrincipale));
444 aurelien 69
		}
436 benjamin 70
 
437 aurelien 71
		int nbImage = 0;
953 gduche 72
		for (Image imageCourante : listeImages) {
1039 benjamin 73
			vue.ajouterPhoto(imageCourante, creerGestionnaireClicChangementImagePrincipale(imageCourante));
437 aurelien 74
			nbImage++;
1046 benjamin 75
 
1113 gduche 76
			if (page.equals(ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS) && nbImage >= 5) {
1041 benjamin 77
				vue.afficherLienPlateformeValidation();
78
				break;
79
			}
436 benjamin 80
		}
81
	}
82
 
83
	public void go(HasWidgets composite) {
84
		composite.add(vue.asWidget());
85
		chargerImagesObservation();
1041 benjamin 86
		gererEvenements();
436 benjamin 87
	}
88
 
89
	protected void gererEvenements() {
1196 gduche 90
		if (this.page.equals(ConstantesNavigation.PAGE_VALIDATION)) {
91
			vue.getLienPlateforme().addClickHandler(new ClickHandler() {
92
 
93
				@Override
94
				public void onClick(ClickEvent arg0) {
95
					BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
96
				}
97
 
98
			});
99
		} else {
100
			vue.getLienPlateforme().addClickHandler(new ClickHandler() {
101
 
102
				@Override
103
				public void onClick(ClickEvent arg0) {
104
					BusEvenementiel.getInstance().fireEvent(new EvenementValidationPictoflora(observation));
105
				}
106
 
107
			});
108
		}
1046 benjamin 109
 
1045 benjamin 110
		BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
1046 benjamin 111
 
1045 benjamin 112
			@Override
113
			public void onChangementImage(EvenementChangementImageValidation event) {
1046 benjamin 114
				if (CacheClient.getInstance().getImageCourante().getObservation().getId().equals(observation.getId())) {
115
					vue.chargerImagePrincipale(CacheClient.getInstance().getImageCourante());
116
				}
1045 benjamin 117
			}
118
		});
1046 benjamin 119
 
437 aurelien 120
	}
1006 benjamin 121
 
122
	protected ClickHandler creerGestionnaireClicGalerieImages(final int indexImage, final Image imageCourante) {
437 aurelien 123
		ClickHandler gestionnaireClic = new ClickHandler() {
436 benjamin 124
			public void onClick(ClickEvent event) {
437 aurelien 125
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
1006 benjamin 126
 
437 aurelien 127
					@Override
128
					public void surClicBoutonSuivant() {
129
						int index = getIndexElementAffiche() + 1;
1006 benjamin 130
						if (index >= listeImages.size()) {
437 aurelien 131
							index = 0;
132
						}
133
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
134
					}
1006 benjamin 135
 
437 aurelien 136
					@Override
137
					public void surClicBoutonPrecedent() {
138
						int index = getIndexElementAffiche() - 1;
1006 benjamin 139
						if (index < 0) {
437 aurelien 140
							index = listeImages.size() - 1;
141
						}
142
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
143
					}
144
				};
145
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
440 aurelien 146
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
436 benjamin 147
			}
437 aurelien 148
		};
149
		return gestionnaireClic;
436 benjamin 150
	}
1006 benjamin 151
 
152
	protected ClickHandler creerGestionnaireClicChangementImagePrincipale(final Image imageCourante) {
153
		ClickHandler gestionnaireClic = new ClickHandler() {
154
			public void onClick(ClickEvent event) {
155
				CacheClient.getInstance().setImageCourante(imageCourante);
1045 benjamin 156
				BusEvenementiel.getInstance().fireEvent(new EvenementChangementImageValidation());
1006 benjamin 157
			}
158
		};
159
		return gestionnaireClic;
160
	}
1046 benjamin 161
 
436 benjamin 162
}