Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
477 benjamin 1
package org.tela_botanica.del.client.composants.observations;
436 benjamin 2
 
3
import java.util.List;
4
 
1006 benjamin 5
import org.tela_botanica.del.client.cache.CacheClient;
608 aurelien 6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilantePresenteur;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
477 benjamin 8
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
9
import org.tela_botanica.del.client.composants.images.DetailImageVue;
436 benjamin 10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
11
import org.tela_botanica.del.client.modeles.Image;
12
import org.tela_botanica.del.client.modeles.Observation;
1006 benjamin 13
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
1041 benjamin 14
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
436 benjamin 15
 
1041 benjamin 16
import sun.security.action.GetLongAction;
17
 
436 benjamin 18
import com.google.gwt.event.dom.client.ClickEvent;
19
import com.google.gwt.event.dom.client.ClickHandler;
20
import com.google.gwt.event.dom.client.HasClickHandlers;
1041 benjamin 21
import com.google.gwt.user.client.ui.HTML;
436 benjamin 22
import com.google.gwt.user.client.ui.HasWidgets;
23
import com.google.gwt.user.client.ui.IsWidget;
24
 
25
public class ObservationImagesPresenteur extends Presenteur {
26
 
27
	public abstract interface Vue extends IsWidget {
28
		public HasClickHandlers getPhotoPrincipale();
1006 benjamin 29
 
436 benjamin 30
		public HasWidgets getPhotos();
1006 benjamin 31
 
436 benjamin 32
		public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image);
1006 benjamin 33
 
436 benjamin 34
		public void ajouterPhoto(Image image, ClickHandler gestionnaireClic);
1041 benjamin 35
 
36
		public void afficherLienPlateformeValidation();
37
 
38
		public HTML getLienPlateforme();
436 benjamin 39
	}
40
 
41
	private Vue vue;
42
 
43
	private Observation observation;
44
 
45
	private Image imagePrincipale;
1006 benjamin 46
 
437 aurelien 47
	private List<Image> listeImages;
436 benjamin 48
 
1006 benjamin 49
	public ObservationImagesPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
436 benjamin 50
		this.observation = observation;
51
		this.vue = vue;
1039 benjamin 52
		this.imagePrincipale = imagePrincipale;
436 benjamin 53
	}
54
 
55
	public void chargerImagesObservation() {
56
 
437 aurelien 57
		listeImages = observation.getImages();
1039 benjamin 58
		if (imagePrincipale != null) {
444 aurelien 59
			vue.chargerImagePrincipale(imagePrincipale);
1006 benjamin 60
			vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClicGalerieImages(0, imagePrincipale));
444 aurelien 61
		}
436 benjamin 62
 
437 aurelien 63
		int nbImage = 0;
953 gduche 64
		for (Image imageCourante : listeImages) {
1039 benjamin 65
			vue.ajouterPhoto(imageCourante, creerGestionnaireClicChangementImagePrincipale(imageCourante));
437 aurelien 66
			nbImage++;
1041 benjamin 67
 
68
			if(nbImage>=5){
69
				vue.afficherLienPlateformeValidation();
70
				break;
71
			}
436 benjamin 72
		}
73
	}
74
 
75
	public void go(HasWidgets composite) {
76
		composite.add(vue.asWidget());
77
		chargerImagesObservation();
1041 benjamin 78
		gererEvenements();
436 benjamin 79
	}
80
 
81
	protected void gererEvenements() {
1041 benjamin 82
		vue.getLienPlateforme().addClickHandler(new ClickHandler() {
83
 
84
			@Override
85
			public void onClick(ClickEvent arg0) {
86
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
87
			}
88
		});
437 aurelien 89
	}
1006 benjamin 90
 
91
	protected ClickHandler creerGestionnaireClicGalerieImages(final int indexImage, final Image imageCourante) {
437 aurelien 92
		ClickHandler gestionnaireClic = new ClickHandler() {
436 benjamin 93
			public void onClick(ClickEvent event) {
437 aurelien 94
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
1006 benjamin 95
 
437 aurelien 96
					@Override
97
					public void surClicBoutonSuivant() {
98
						int index = getIndexElementAffiche() + 1;
1006 benjamin 99
						if (index >= listeImages.size()) {
437 aurelien 100
							index = 0;
101
						}
102
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
103
					}
1006 benjamin 104
 
437 aurelien 105
					@Override
106
					public void surClicBoutonPrecedent() {
107
						int index = getIndexElementAffiche() - 1;
1006 benjamin 108
						if (index < 0) {
437 aurelien 109
							index = listeImages.size() - 1;
110
						}
111
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
112
					}
113
				};
114
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
440 aurelien 115
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
436 benjamin 116
			}
437 aurelien 117
		};
118
		return gestionnaireClic;
436 benjamin 119
	}
1006 benjamin 120
 
121
	protected ClickHandler creerGestionnaireClicChangementImagePrincipale(final Image imageCourante) {
122
		ClickHandler gestionnaireClic = new ClickHandler() {
123
			public void onClick(ClickEvent event) {
124
				CacheClient.getInstance().setImageCourante(imageCourante);
1040 benjamin 125
				vue.chargerImagePrincipale(imageCourante);
1006 benjamin 126
			}
127
		};
128
		return gestionnaireClic;
129
	}
436 benjamin 130
}