Subversion Repositories eFlore/Applications.del

Rev

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

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