Subversion Repositories eFlore/Applications.del

Rev

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