Subversion Repositories eFlore/Applications.del

Rev

Rev 1553 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1553 Rev 1704
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.config.Config;
11
import org.tela_botanica.del.client.config.Config;
12
import org.tela_botanica.del.client.gestionhistorique.ConstantesNavigation;
-
 
13
import org.tela_botanica.del.client.modeles.Image;
12
import org.tela_botanica.del.client.modeles.Image;
14
import org.tela_botanica.del.client.modeles.Observation;
13
import org.tela_botanica.del.client.modeles.Observation;
15
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
16
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
15
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.EvenementChangementImageValidation;
17
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
16
import org.tela_botanica.del.client.navigation.evenement.changementimagevalidation.GestionnaireEvenementChangementImageValidation;
18
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
17
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
19
import org.tela_botanica.del.client.navigation.evenement.validationobservationpictoflora.EvenementValidationPictoflora;
-
 
-
 
18
 
20
 
19
import com.google.gwt.core.client.GWT;
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.event.shared.HandlerRegistration;
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();
-
 
43
		
-
 
44
		public HandlerRegistration setImgPrincipaleClicGestionnaire(ClickHandler gestionnaireClic);
44
	}
45
	}
45
 
46
 
46
	private Vue vue;
47
	private Vue vue;
47
 
48
 
48
	private Observation observation;
49
	private Observation observation;
49
 
50
 
50
	private Image imagePrincipale;
51
	private Image imagePrincipale;
51
 
52
 
52
	private List<Image> listeImages;
53
	private List<Image> listeImages;
53
 
54
	
54
	public ObservationImagesPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
55
	public ObservationImagesPresenteur(Vue vue, Observation observation, Image imagePrincipale) {
55
		this.observation = observation;
56
		this.observation = observation;
56
		this.vue = vue;
57
		this.vue = vue;
57
		this.imagePrincipale = imagePrincipale;
58
		this.imagePrincipale = imagePrincipale;
58
	}
59
	}
59
 
60
 
60
	public void chargerImagesObservation() {
61
	public void chargerImagesObservation() {
61
		listeImages = observation.getImages();
62
		listeImages = observation.getImages();
62
		if (imagePrincipale != null) {
63
		if (imagePrincipale != null) {
63
			vue.chargerImagePrincipale(imagePrincipale);
64
			vue.chargerImagePrincipale(imagePrincipale);
64
			vue.getPhotoPrincipale().addClickHandler(creerGestionnaireClicGalerieImages(0, imagePrincipale));
65
			vue.setImgPrincipaleClicGestionnaire(creerGestionnaireClicGalerieImages(0, imagePrincipale));
65
		}
66
		}
66
 
67
 
67
		String urlCourante = Window.Location.getHref();
68
		String urlCourante = Window.Location.getHref();
68
		Config config = new Config();
69
		Config config = new Config();
69
		String urlAppliObs = config.getUrl("identiplante");
70
		String urlAppliObs = config.getUrl("identiplante");
70
		int nbImage = 0;
71
		int indexImage = 0;
71
		for (Image imageCourante : listeImages) {
72
		for (Image imageCourante : listeImages) {
72
			vue.ajouterPhoto(imageCourante, creerGestionnaireClicChangementImagePrincipale(imageCourante));
73
			vue.ajouterPhoto(imageCourante, creerGestionnaireClicChangementImagePrincipale(indexImage, imageCourante));
73
			nbImage++;
74
			indexImage++;
74
 
75
 
75
			if (urlCourante.contains(urlAppliObs) && nbImage >= 5) {
76
			if (urlCourante.contains(urlAppliObs) && indexImage >= 5) {
76
				vue.afficherLienPlateformeValidation();
77
				vue.afficherLienPlateformeValidation();
77
				break;
78
				break;
78
			}
79
			}
79
		}
80
		}
80
	}
81
	}
81
 
82
 
82
	public void go(HasWidgets composite) {
83
	public void go(HasWidgets composite) {
83
		composite.add(vue.asWidget());
84
		composite.add(vue.asWidget());
84
		chargerImagesObservation();
85
		chargerImagesObservation();
85
		gererEvenements();
86
		gererEvenements();
86
	}
87
	}
87
 
88
 
88
	protected void gererEvenements() {
89
	protected void gererEvenements() {
89
		vue.getLienPlateforme().addClickHandler(new ClickHandler() {
90
		vue.getLienPlateforme().addClickHandler(new ClickHandler() {
90
 
-
 
91
			@Override
91
			@Override
92
			public void onClick(ClickEvent arg0) {
92
			public void onClick(ClickEvent arg0) {
93
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
93
				BusEvenementiel.getInstance().fireEvent(new EvenementValidation(observation));
94
			}
94
			}
95
 
-
 
96
		});
95
		});
97
 
96
 
98
		BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
97
		BusEvenementiel.getInstance().addHandler(EvenementChangementImageValidation.TYPE, new GestionnaireEvenementChangementImageValidation() {
99
 
-
 
100
			@Override
98
			@Override
101
			public void onChangementImage(EvenementChangementImageValidation event) {
99
			public void onChangementImage(EvenementChangementImageValidation event) {
102
				if (CacheClient.getInstance().getImageCourante().getObservation().getId().equals(observation.getId())) {
100
				if (CacheClient.getInstance().getImageCourante().getObservation().getId().equals(observation.getId())) {
-
 
101
					GWT.log("Reception event Chgmt img index :"+event.indexImage);
103
					vue.chargerImagePrincipale(CacheClient.getInstance().getImageCourante());
102
					vue.chargerImagePrincipale(CacheClient.getInstance().getImageCourante());
-
 
103
					vue.setImgPrincipaleClicGestionnaire(creerGestionnaireClicGalerieImages(event.indexImage, imagePrincipale));
104
				}
104
				}
105
			}
105
			}
106
		});
106
		});
107
 
-
 
108
	}
107
	}
109
 
108
 
110
	protected ClickHandler creerGestionnaireClicGalerieImages(final int indexImage, final Image imageCourante) {
109
	protected ClickHandler creerGestionnaireClicGalerieImages(final int indexImage, final Image imageCourante) {
111
		ClickHandler gestionnaireClic = new ClickHandler() {
110
		ClickHandler gestionnaireClic = new ClickHandler() {
112
			public void onClick(ClickEvent event) {
111
			public void onClick(ClickEvent event) {
113
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
112
				FenetreOverlayDefilantePresenteur presenteurGalerie = new FenetreOverlayDefilantePresenteur(indexImage, new FenetreOverlayDefilanteVue()) {
114
 
113
 
115
					@Override
114
					@Override
116
					public void surClicBoutonSuivant() {
115
					public void surClicBoutonSuivant() {
117
						int index = getIndexElementAffiche() + 1;
116
						int index = getIndexElementAffiche() + 1;
118
						if (index >= listeImages.size()) {
117
						if (index >= listeImages.size()) {
119
							index = 0;
118
							index = 0;
120
						}
119
						}
121
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
120
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
122
					}
121
					}
123
 
122
 
124
					@Override
123
					@Override
125
					public void surClicBoutonPrecedent() {
124
					public void surClicBoutonPrecedent() {
126
						int index = getIndexElementAffiche() - 1;
125
						int index = getIndexElementAffiche() - 1;
127
						if (index < 0) {
126
						if (index < 0) {
128
							index = listeImages.size() - 1;
127
							index = listeImages.size() - 1;
129
						}
128
						}
130
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
129
						setContenuFenetreModale(index, new DetailImagePresenteur(listeImages.get(index), new DetailImageVue()));
131
					}
130
					}
132
				};
131
				};
133
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(imageCourante, new DetailImageVue()));
132
				presenteurGalerie.ouvrirFenetreModaleDefilante(indexImage, new DetailImagePresenteur(listeImages.get(indexImage), new DetailImageVue()));
134
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
133
				presenteurGalerie.afficherBoutonsSuivantsPrecedents((listeImages.size() > 1));
135
			}
134
			}
136
		};
135
		};
137
		return gestionnaireClic;
136
		return gestionnaireClic;
138
	}
137
	}
139
 
138
 
140
	protected ClickHandler creerGestionnaireClicChangementImagePrincipale(final Image imageCourante) {
139
	protected ClickHandler creerGestionnaireClicChangementImagePrincipale(final int indexImage, final Image imageCourante) {
141
		ClickHandler gestionnaireClic = new ClickHandler() {
140
		ClickHandler gestionnaireClic = new ClickHandler() {
142
			public void onClick(ClickEvent event) {
141
			public void onClick(ClickEvent event) {
143
				CacheClient.getInstance().setImageCourante(imageCourante);
142
				CacheClient.getInstance().setImageCourante(imageCourante);
144
				BusEvenementiel.getInstance().fireEvent(new EvenementChangementImageValidation());
143
				EvenementChangementImageValidation chgmtImgEvent = new EvenementChangementImageValidation();
-
 
144
				chgmtImgEvent.indexImage = indexImage;
-
 
145
				BusEvenementiel.getInstance().fireEvent(chgmtImgEvent);
145
			}
146
			}
146
		};
147
		};
147
		return gestionnaireClic;
148
		return gestionnaireClic;
148
	}
149
	}
149
 
150
 
150
}
151
}