Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
436 benjamin 1
package org.tela_botanica.del.client.vues.rechercheobservations.observationimages;
2
 
3
import java.util.List;
4
 
443 aurelien 5
import org.tela_botanica.del.client.cache.CacheClient;
437 aurelien 6
import org.tela_botanica.del.client.composants.fenetreOverlayDefilante.FenetreOverlayDefilantePresenteur;
7
import org.tela_botanica.del.client.composants.fenetreOverlayDefilante.FenetreOverlayDefilanteVue;
436 benjamin 8
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
9
import org.tela_botanica.del.client.modeles.Image;
10
import org.tela_botanica.del.client.modeles.Observation;
11
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImagePresenteur;
12
import org.tela_botanica.del.client.vues.rechercheobservations.DetailImageVue;
13
 
14
import com.google.gwt.event.dom.client.ClickEvent;
15
import com.google.gwt.event.dom.client.ClickHandler;
16
import com.google.gwt.event.dom.client.HasClickHandlers;
437 aurelien 17
import com.google.gwt.user.client.Window;
436 benjamin 18
import com.google.gwt.user.client.ui.HasWidgets;
19
import com.google.gwt.user.client.ui.IsWidget;
20
 
21
public class ObservationImagesPresenteur extends Presenteur {
22
 
23
	public abstract interface Vue extends IsWidget {
24
		public HasClickHandlers getPhotoPrincipale();
25
 
26
		public HasWidgets getPhotos();
27
 
28
		public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image);
29
 
30
		public void ajouterPhoto(Image image, ClickHandler gestionnaireClic);
31
 
32
		public void chargerInformationsObservation(Observation observation);
33
	}
34
 
35
	private Vue vue;
36
 
37
	private Observation observation;
38
 
39
	private Image imagePrincipale;
437 aurelien 40
 
41
	private List<Image> listeImages;
436 benjamin 42
 
43
	public ObservationImagesPresenteur(Vue vue, Observation observation) {
44
		this.observation = observation;
45
		this.vue = vue;
46
	}
47
 
48
	public void chargerImagesObservation() {
49
 
50
		vue.chargerInformationsObservation(observation);
437 aurelien 51
		listeImages = observation.getImages();
436 benjamin 52
 
443 aurelien 53
		imagePrincipale = CacheClient.getInstance().getImageCourante();
54
		vue.chargerImagePrincipale(imagePrincipale);
436 benjamin 55
 
437 aurelien 56
		int nbImage = 0;
57
		for (final org.tela_botanica.del.client.modeles.Image imageCourante : listeImages) {
58
			if(!imageCourante.equals(imagePrincipale)) {
59
				int nbImageEncours = nbImage;
60
				vue.ajouterPhoto(imageCourante, creerGestionnaireClic(nbImageEncours, imageCourante));
436 benjamin 61
			}
437 aurelien 62
			nbImage++;
436 benjamin 63
		}
64
	}
65
 
66
	public void go(HasWidgets composite) {
67
		composite.add(vue.asWidget());
68
		chargerImagesObservation();
69
		gererEvenements();
70
	}
71
 
72
	protected void gererEvenements() {
441 aurelien 73
		vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClic(0, imagePrincipale));
437 aurelien 74
	}
75
 
76
	protected ClickHandler creerGestionnaireClic(final int indexImage, final Image imageCourante) {
77
		ClickHandler gestionnaireClic = new ClickHandler() {
436 benjamin 78
			public void onClick(ClickEvent event) {
437 aurelien 79
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
80
 
81
					@Override
82
					public void surClicBoutonSuivant() {
83
						int index = getIndexElementAffiche() + 1;
84
						if(index >= listeImages.size()) {
85
							index = 0;
86
						}
87
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
88
					}
89
 
90
					@Override
91
					public void surClicBoutonPrecedent() {
92
						int index = getIndexElementAffiche() - 1;
93
						if(index < 0) {
94
							index = listeImages.size() - 1;
95
						}
96
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
97
					}
98
				};
99
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
440 aurelien 100
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
436 benjamin 101
			}
437 aurelien 102
		};
103
		return gestionnaireClic;
436 benjamin 104
	}
105
}