Subversion Repositories eFlore/Applications.del

Rev

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