Subversion Repositories eFlore/Applications.del

Rev

Rev 1112 | Rev 1221 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1112 Rev 1113
1
package org.tela_botanica.del.client.composants.observations;
1
package org.tela_botanica.del.client.composants.observations;
2
 
2
 
3
import java.util.List;
3
import java.util.List;
4
 
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilantePresenteur;
6
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilantePresenteur;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
7
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlayDefilanteVue;
8
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
8
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
9
import org.tela_botanica.del.client.composants.images.DetailImageVue;
9
import org.tela_botanica.del.client.composants.images.DetailImageVue;
10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
10
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
11
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
11
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
12
import org.tela_botanica.del.client.modeles.Image;
12
import org.tela_botanica.del.client.modeles.Image;
13
import org.tela_botanica.del.client.modeles.Observation;
13
import org.tela_botanica.del.client.modeles.Observation;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
15
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
16
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
16
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
17
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
17
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
18
 
18
 
19
import com.google.gwt.event.dom.client.ClickEvent;
19
import com.google.gwt.event.dom.client.ClickEvent;
20
import com.google.gwt.event.dom.client.ClickHandler;
20
import com.google.gwt.event.dom.client.ClickHandler;
21
import com.google.gwt.event.dom.client.HasClickHandlers;
21
import com.google.gwt.event.dom.client.HasClickHandlers;
22
import com.google.gwt.user.client.History;
22
import com.google.gwt.user.client.History;
-
 
23
import com.google.gwt.user.client.Window;
23
import com.google.gwt.user.client.ui.HTML;
24
import com.google.gwt.user.client.ui.HTML;
24
import com.google.gwt.user.client.ui.HasWidgets;
25
import com.google.gwt.user.client.ui.HasWidgets;
25
import com.google.gwt.user.client.ui.IsWidget;
26
import com.google.gwt.user.client.ui.IsWidget;
26
 
27
 
27
public class ObservationImagesPresenteur extends Presenteur {
28
public class ObservationImagesPresenteur extends Presenteur {
28
 
29
 
29
	public abstract interface Vue extends IsWidget {
30
	public abstract interface Vue extends IsWidget {
30
		public HasClickHandlers getPhotoPrincipale();
31
		public HasClickHandlers getPhotoPrincipale();
31
 
32
 
32
		public HasWidgets getPhotos();
33
		public HasWidgets getPhotos();
33
 
34
 
34
		public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image);
35
		public void chargerImagePrincipale(org.tela_botanica.del.client.modeles.Image image);
35
 
36
 
36
		public void ajouterPhoto(Image image, ClickHandler gestionnaireClic);
37
		public void ajouterPhoto(Image image, ClickHandler gestionnaireClic);
37
 
38
 
38
		public void afficherLienPlateformeValidation();
39
		public void afficherLienPlateformeValidation();
39
 
40
 
40
		public HTML getLienPlateforme();
41
		public HTML getLienPlateforme();
41
	}
42
	}
42
 
43
 
43
	private Vue vue;
44
	private Vue vue;
44
 
45
 
45
	private Observation observation;
46
	private Observation observation;
46
 
47
 
47
	private Image imagePrincipale;
48
	private Image imagePrincipale;
48
 
49
 
49
	private List<Image> listeImages;
50
	private List<Image> listeImages;
-
 
51
 
-
 
52
	private String page;
50
 
53
	
51
	public ObservationImagesPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
54
	public ObservationImagesPresenteur(Vue vue, Observation observation, Image imagePrincipale, String page) {
52
		this.observation = observation;
55
		this.observation = observation;
53
		this.vue = vue;
56
		this.vue = vue;
54
		this.imagePrincipale = imagePrincipale;
57
		this.imagePrincipale = imagePrincipale;
-
 
58
		this.page = page;
55
	}
59
	}
56
 
60
 
57
	public void chargerImagesObservation() {
61
	public void chargerImagesObservation() {
58
 
62
 
59
		listeImages = observation.getImages();
63
		listeImages = observation.getImages();
60
		if (imagePrincipale != null) {
64
		if (imagePrincipale != null) {
61
			vue.chargerImagePrincipale(imagePrincipale);
65
			vue.chargerImagePrincipale(imagePrincipale);
62
			vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClicGalerieImages(0, imagePrincipale));
66
			vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClicGalerieImages(0, imagePrincipale));
63
		}
67
		}
64
 
68
 
65
		int nbImage = 0;
69
		int nbImage = 0;
66
		for (Image imageCourante : listeImages) {
70
		for (Image imageCourante : listeImages) {
67
			vue.ajouterPhoto(imageCourante, creerGestionnaireClicChangementImagePrincipale(imageCourante));
71
			vue.ajouterPhoto(imageCourante, creerGestionnaireClicChangementImagePrincipale(imageCourante));
68
			nbImage++;
72
			nbImage++;
69
 
73
 
70
			if (!History.getToken().contains(ConstantesNavigation.PAGE_RECHERCHE_IMAGES) && !History.getToken().contains(ConstantesNavigation.PAGE_VALIDATION) && nbImage >= 5) {
74
			if (page.equals(ConstantesNavigation.PAGE_RECHERCHE_OBSERVATIONS) && nbImage >= 5) {
71
				vue.afficherLienPlateformeValidation();
75
				vue.afficherLienPlateformeValidation();
72
				break;
76
				break;
73
			}
77
			}
74
		}
78
		}
75
	}
79
	}
76
 
80
 
77
	public void go(HasWidgets composite) {
81
	public void go(HasWidgets composite) {
78
		composite.add(vue.asWidget());
82
		composite.add(vue.asWidget());
79
		chargerImagesObservation();
83
		chargerImagesObservation();
80
		gererEvenements();
84
		gererEvenements();
81
	}
85
	}
82
 
86
 
83
	protected void gererEvenements() {
87
	protected void gererEvenements() {
84
		vue.getLienPlateforme().addClickHandler(new ClickHandler() {
88
		vue.getLienPlateforme().addClickHandler(new ClickHandler() {
85
 
89
 
86
			@Override
90
			@Override
87
			public void onClick(ClickEvent arg0) {
91
			public void onClick(ClickEvent arg0) {
88
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
92
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
89
			}
93
			}
90
 
94
 
91
		});
95
		});
92
 
96
 
93
		BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
97
		BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
94
 
98
 
95
			@Override
99
			@Override
96
			public void onChangementImage(EvenementChangementImageValidation event) {
100
			public void onChangementImage(EvenementChangementImageValidation event) {
97
				if (CacheClient.getInstance().getImageCourante().getObservation().getId().equals(observation.getId())) {
101
				if (CacheClient.getInstance().getImageCourante().getObservation().getId().equals(observation.getId())) {
98
					vue.chargerImagePrincipale(CacheClient.getInstance().getImageCourante());
102
					vue.chargerImagePrincipale(CacheClient.getInstance().getImageCourante());
99
				}
103
				}
100
			}
104
			}
101
		});
105
		});
102
 
106
 
103
	}
107
	}
104
 
108
 
105
	protected ClickHandler creerGestionnaireClicGalerieImages(final int indexImage, final Image imageCourante) {
109
	protected ClickHandler creerGestionnaireClicGalerieImages(final int indexImage, final Image imageCourante) {
106
		ClickHandler gestionnaireClic = new ClickHandler() {
110
		ClickHandler gestionnaireClic = new ClickHandler() {
107
			public void onClick(ClickEvent event) {
111
			public void onClick(ClickEvent event) {
108
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
112
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
109
 
113
 
110
					@Override
114
					@Override
111
					public void surClicBoutonSuivant() {
115
					public void surClicBoutonSuivant() {
112
						int index = getIndexElementAffiche() + 1;
116
						int index = getIndexElementAffiche() + 1;
113
						if (index >= listeImages.size()) {
117
						if (index >= listeImages.size()) {
114
							index = 0;
118
							index = 0;
115
						}
119
						}
116
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
120
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
117
					}
121
					}
118
 
122
 
119
					@Override
123
					@Override
120
					public void surClicBoutonPrecedent() {
124
					public void surClicBoutonPrecedent() {
121
						int index = getIndexElementAffiche() - 1;
125
						int index = getIndexElementAffiche() - 1;
122
						if (index < 0) {
126
						if (index < 0) {
123
							index = listeImages.size() - 1;
127
							index = listeImages.size() - 1;
124
						}
128
						}
125
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
129
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
126
					}
130
					}
127
				};
131
				};
128
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
132
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
129
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
133
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
130
			}
134
			}
131
		};
135
		};
132
		return gestionnaireClic;
136
		return gestionnaireClic;
133
	}
137
	}
134
 
138
 
135
	protected ClickHandler creerGestionnaireClicChangementImagePrincipale(final Image imageCourante) {
139
	protected ClickHandler creerGestionnaireClicChangementImagePrincipale(final Image imageCourante) {
136
		ClickHandler gestionnaireClic = new ClickHandler() {
140
		ClickHandler gestionnaireClic = new ClickHandler() {
137
			public void onClick(ClickEvent event) {
141
			public void onClick(ClickEvent event) {
138
				CacheClient.getInstance().setImageCourante(imageCourante);
142
				CacheClient.getInstance().setImageCourante(imageCourante);
139
				BusEvenementiel.getInstance().fireEvent(new EvenementChangementImageValidation());
143
				BusEvenementiel.getInstance().fireEvent(new EvenementChangementImageValidation());
140
			}
144
			}
141
		};
145
		};
142
		return gestionnaireClic;
146
		return gestionnaireClic;
143
	}
147
	}
144
 
148
 
145
}
149
}