Subversion Repositories eFlore/Applications.del

Rev

Rev 953 | Rev 1039 | 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;
11
import org.tela_botanica.del.client.modeles.Image;
12
import org.tela_botanica.del.client.modeles.Observation;
1006 benjamin 13
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
14
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
436 benjamin 15
 
16
import com.google.gwt.event.dom.client.ClickEvent;
17
import com.google.gwt.event.dom.client.ClickHandler;
18
import com.google.gwt.event.dom.client.HasClickHandlers;
19
import com.google.gwt.user.client.ui.HasWidgets;
20
import com.google.gwt.user.client.ui.IsWidget;
21
 
22
public class ObservationImagesPresenteur extends Presenteur {
23
 
24
	public abstract interface Vue extends IsWidget {
25
		public HasClickHandlers getPhotoPrincipale();
1006 benjamin 26
 
436 benjamin 27
		public HasWidgets getPhotos();
1006 benjamin 28
 
436 benjamin 29
		public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image);
1006 benjamin 30
 
436 benjamin 31
		public void ajouterPhoto(Image image, ClickHandler gestionnaireClic);
32
	}
33
 
34
	private Vue vue;
35
 
36
	private Observation observation;
37
 
38
	private Image imagePrincipale;
1006 benjamin 39
 
437 aurelien 40
	private List<Image> listeImages;
436 benjamin 41
 
1006 benjamin 42
	public ObservationImagesPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
436 benjamin 43
		this.observation = observation;
44
		this.vue = vue;
1006 benjamin 45
		this.imagePrincipale=imagePrincipale;
436 benjamin 46
	}
47
 
48
	public void chargerImagesObservation() {
49
 
437 aurelien 50
		listeImages = observation.getImages();
1006 benjamin 51
		if (imagePrincipale!=null) {
444 aurelien 52
			vue.chargerImagePrincipale(imagePrincipale);
1006 benjamin 53
			vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClicGalerieImages(0, imagePrincipale));
444 aurelien 54
		}
436 benjamin 55
 
437 aurelien 56
		int nbImage = 0;
953 gduche 57
		for (Image imageCourante : listeImages) {
1006 benjamin 58
			if (!imageCourante.equals(imagePrincipale)) {
59
				vue.ajouterPhoto(imageCourante, creerGestionnaireClicChangementImagePrincipale(imageCourante));
436 benjamin 60
			}
437 aurelien 61
			nbImage++;
436 benjamin 62
		}
63
	}
64
 
65
	public void go(HasWidgets composite) {
66
		composite.add(vue.asWidget());
67
		chargerImagesObservation();
68
	}
69
 
70
	protected void gererEvenements() {
1006 benjamin 71
 
437 aurelien 72
	}
1006 benjamin 73
 
74
	protected ClickHandler creerGestionnaireClicGalerieImages(final int indexImage, final Image imageCourante) {
437 aurelien 75
		ClickHandler gestionnaireClic = new ClickHandler() {
436 benjamin 76
			public void onClick(ClickEvent event) {
437 aurelien 77
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
1006 benjamin 78
 
437 aurelien 79
					@Override
80
					public void surClicBoutonSuivant() {
81
						int index = getIndexElementAffiche() + 1;
1006 benjamin 82
						if (index >= listeImages.size()) {
437 aurelien 83
							index = 0;
84
						}
85
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
86
					}
1006 benjamin 87
 
437 aurelien 88
					@Override
89
					public void surClicBoutonPrecedent() {
90
						int index = getIndexElementAffiche() - 1;
1006 benjamin 91
						if (index < 0) {
437 aurelien 92
							index = listeImages.size() - 1;
93
						}
94
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
95
					}
96
				};
97
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
440 aurelien 98
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
436 benjamin 99
			}
437 aurelien 100
		};
101
		return gestionnaireClic;
436 benjamin 102
	}
1006 benjamin 103
 
104
	protected ClickHandler creerGestionnaireClicChangementImagePrincipale(final Image imageCourante) {
105
		ClickHandler gestionnaireClic = new ClickHandler() {
106
			public void onClick(ClickEvent event) {
107
				CacheClient.getInstance().setImageCourante(imageCourante);
108
				BusEvenementiel.getInstance().fireEvent(new EvenementChangementImageValidation());
109
			}
110
		};
111
		return gestionnaireClic;
112
	}
436 benjamin 113
}