Subversion Repositories eFlore/Applications.del

Rev

Rev 445 | Rev 471 | 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;
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);
437 aurelien 50
		listeImages = observation.getImages();
448 aurelien 51
 
52
		if (listeImages.size() > 0){
53
			final Image imagePrincipale = listeImages.get(0);
444 aurelien 54
			vue.chargerImagePrincipale(imagePrincipale);
448 aurelien 55
			vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClic(0, imagePrincipale));
444 aurelien 56
		}
436 benjamin 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();
448 aurelien 71
		//gererEvenements();
436 benjamin 72
	}
73
 
74
	protected void gererEvenements() {
448 aurelien 75
 
437 aurelien 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()));
440 aurelien 102
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
436 benjamin 103
			}
437 aurelien 104
		};
105
		return gestionnaireClic;
436 benjamin 106
	}
107
}