Subversion Repositories eFlore/Applications.del

Rev

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;
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();
436 benjamin 51
 
443 aurelien 52
		imagePrincipale = CacheClient.getInstance().getImageCourante();
445 benjamin 53
		if(imagePrincipale != null) {
444 aurelien 54
			vue.chargerImagePrincipale(imagePrincipale);
55
		} else if (listeImages.size() > 0){
56
			vue.chargerImagePrincipale(listeImages.get(0));
57
		}
436 benjamin 58
 
437 aurelien 59
		int nbImage = 0;
60
		for (final org.tela_botanica.del.client.modeles.Image imageCourante : listeImages) {
61
			if(!imageCourante.equals(imagePrincipale)) {
62
				int nbImageEncours = nbImage;
63
				vue.ajouterPhoto(imageCourante, creerGestionnaireClic(nbImageEncours, imageCourante));
436 benjamin 64
			}
437 aurelien 65
			nbImage++;
436 benjamin 66
		}
67
	}
68
 
69
	public void go(HasWidgets composite) {
70
		composite.add(vue.asWidget());
71
		chargerImagesObservation();
72
		gererEvenements();
73
	}
74
 
75
	protected void gererEvenements() {
441 aurelien 76
		vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClic(0, imagePrincipale));
437 aurelien 77
	}
78
 
79
	protected ClickHandler creerGestionnaireClic(final int indexImage, final Image imageCourante) {
80
		ClickHandler gestionnaireClic = new ClickHandler() {
436 benjamin 81
			public void onClick(ClickEvent event) {
437 aurelien 82
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
83
 
84
					@Override
85
					public void surClicBoutonSuivant() {
86
						int index = getIndexElementAffiche() + 1;
87
						if(index >= listeImages.size()) {
88
							index = 0;
89
						}
90
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
91
					}
92
 
93
					@Override
94
					public void surClicBoutonPrecedent() {
95
						int index = getIndexElementAffiche() - 1;
96
						if(index < 0) {
97
							index = listeImages.size() - 1;
98
						}
99
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
100
					}
101
				};
102
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
440 aurelien 103
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
436 benjamin 104
			}
437 aurelien 105
		};
106
		return gestionnaireClic;
436 benjamin 107
	}
108
}