Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1151 Rev 1152
1
package org.tela_botanica.del.client.vues.rechercheimages.resultats.images;
1
package org.tela_botanica.del.client.vues.rechercheimages.resultats.images;
2
 
2
 
3
import java.util.HashMap;
3
import java.util.HashMap;
4
import java.util.List;
4
import java.util.List;
5
 
5
 
6
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.cache.CacheClient;
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.fenetreoverlay.FenetreOverlaySimplePresenteur;
8
import org.tela_botanica.del.client.composants.fenetreoverlay.FenetreOverlaySimplePresenteur;
9
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
9
import org.tela_botanica.del.client.composants.images.DetailImagePresenteur;
10
import org.tela_botanica.del.client.composants.images.DetailImageVue;
10
import org.tela_botanica.del.client.composants.images.DetailImageVue;
11
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
11
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesPresenteur;
12
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
12
import org.tela_botanica.del.client.composants.metadonnees.MetadonneesVue;
13
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImagePresenteur;
13
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImagePresenteur;
14
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImageVue;
14
import org.tela_botanica.del.client.composants.motsclesimages.MotsClesImageVue;
15
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur;
15
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImagePresenteur;
16
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImageVue;
16
import org.tela_botanica.del.client.composants.motsclesimages.formulairesaisiemotclesimages.FormulaireSaisieMotsClesImageVue;
17
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
17
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
18
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;
18
import org.tela_botanica.del.client.composants.votefleur.VoteFleurPresenteur;
19
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;
19
import org.tela_botanica.del.client.composants.votefleur.VoteFleurVue;
20
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur;
20
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVotePresenteur;
21
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue;
21
import org.tela_botanica.del.client.composants.votes.moyennevotes.MoyenneVoteVue;
22
import org.tela_botanica.del.client.modeles.Image;
22
import org.tela_botanica.del.client.modeles.Image;
23
import org.tela_botanica.del.client.modeles.ModeRecherche;
23
import org.tela_botanica.del.client.modeles.ModeRecherche;
24
import org.tela_botanica.del.client.modeles.Observation;
24
import org.tela_botanica.del.client.modeles.Observation;
25
import org.tela_botanica.del.client.modeles.Protocole;
25
import org.tela_botanica.del.client.modeles.Protocole;
26
import org.tela_botanica.del.client.modeles.VoteProtocole;
26
import org.tela_botanica.del.client.modeles.VoteProtocole;
27
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
27
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
28
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
28
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
29
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;
29
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;
30
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage;
30
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementVoirDetailsImage;
31
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementVoirDetailsImage;
31
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.GestionnaireEvenementVoirDetailsImage;
32
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
32
import org.tela_botanica.del.client.navigation.evenement.validationobservation.EvenementValidation;
33
import org.tela_botanica.del.client.services.rest.MotsClesService;
33
import org.tela_botanica.del.client.services.rest.MotsClesService;
34
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret;
34
import org.tela_botanica.del.client.services.rest.MotsClesServiceConcret;
35
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;
35
import org.tela_botanica.del.client.services.rest.VoteProtocoleServiceConcret;
36
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
36
import org.tela_botanica.del.client.services.rest.async.ListeMotsClesImageCallBack;
37
 
37
 
38
import com.google.gwt.event.dom.client.ClickEvent;
38
import com.google.gwt.event.dom.client.ClickEvent;
39
import com.google.gwt.event.dom.client.ClickHandler;
39
import com.google.gwt.event.dom.client.ClickHandler;
40
import com.google.gwt.event.dom.client.HasClickHandlers;
40
import com.google.gwt.event.dom.client.HasClickHandlers;
41
import com.google.gwt.user.client.Window;
41
import com.google.gwt.user.client.Window;
42
import com.google.gwt.user.client.ui.HasWidgets;
42
import com.google.gwt.user.client.ui.HasWidgets;
43
import com.google.gwt.user.client.ui.IsWidget;
43
import com.google.gwt.user.client.ui.IsWidget;
44
import com.google.gwt.user.client.ui.Widget;
44
import com.google.gwt.user.client.ui.Widget;
45
 
45
 
46
public class ImagePresenteur extends Presenteur {
46
public class ImagePresenteur extends Presenteur {
47
 
47
 
48
	public interface Vue extends IsWidget {
48
	public interface Vue extends IsWidget {
49
		public abstract void loadImage(Image image);
49
		public abstract void loadImage(Image image);
50
 
50
 
51
		public abstract HasClickHandlers getImagePrincipale();
51
		public abstract HasClickHandlers getImagePrincipale();
52
 
52
 
53
		public IsWidget getImagePrincipaleWidget();
53
		public IsWidget getImagePrincipaleWidget();
54
 
54
 
55
		public void setUrlImagePrincipale(String url);
55
		public void setUrlImagePrincipale(String url);
56
 
56
 
57
		public void setTitreImagePrincipale(String titre);
57
		public void setTitreImagePrincipale(String titre);
58
 
58
 
59
		public void setAltTextImagePrincipale(String altText);
59
		public void setAltTextImagePrincipale(String altText);
60
 
60
 
61
		public String getUrlImagePrincipale();
61
		public String getUrlImagePrincipale();
62
 
62
 
63
		public String getTitreImagePrincipale();
63
		public String getTitreImagePrincipale();
64
 
64
 
65
		public String getAltTextImagePrincipale();
65
		public String getAltTextImagePrincipale();
66
 
66
 
67
		public abstract HasClickHandlers getEnSavoirPlus();
67
		public abstract HasClickHandlers getEnSavoirPlus();
68
 
68
 
69
		public abstract void cacherZoneCache();
69
		public abstract void cacherZoneCache();
70
 
70
 
71
		public abstract void afficherZoneCache();
71
		public abstract void afficherZoneCache();
72
 
72
 
73
		public abstract HasWidgets getZoneVoter();
73
		public abstract HasWidgets getZoneVoter();
74
 
74
 
75
		public HasClickHandlers getNomAuteur();
75
		public HasClickHandlers getNomAuteur();
76
 
76
 
77
		public HasClickHandlers getNomEspece();
77
		public HasClickHandlers getNomEspece();
78
 
78
 
79
		public HasWidgets getMetadonnees();
79
		public HasWidgets getMetadonnees();
80
 
80
 
81
		public HasClickHandlers getVoirMotsCles();
81
		public HasClickHandlers getVoirMotsCles();
82
		
82
		
83
		public HasWidgets getZoneMotsCles();
83
		public HasWidgets getZoneMotsCles();
84
 
84
 
85
		public void cacherZoneMotsCles();
85
		public void cacherZoneMotsCles();
86
 
86
 
87
		public void afficherZoneMotsCles();
87
		public void afficherZoneMotsCles();
88
	}
88
	}
89
 
89
 
90
	private Vue vue;
90
	private Vue vue;
91
 
91
 
92
	private final Image image;
92
	private final Image image;
93
	private boolean detailsOuverts = false;
93
	private boolean detailsOuverts = false;
94
 
94
 
95
	private Protocole protocole;
95
	private Protocole protocole;
96
 
96
 
97
	private boolean motsClesOuverts = false;
97
	private boolean motsClesOuverts = false;
98
	
98
	
99
	private MotsClesImagePresenteur motsClesImagePresenteur;
99
	private MotsClesImagePresenteur motsClesImagePresenteur;
100
 
100
 
101
	public ImagePresenteur(Image image, Protocole protocole, Vue vue) {
101
	public ImagePresenteur(Image image, Protocole protocole, Vue vue) {
102
		this.image = image;
102
		this.image = image;
103
		this.protocole = protocole;
103
		this.protocole = protocole;
104
		this.vue = vue;
104
		this.vue = vue;
105
	}
105
	}
106
 
106
 
107
	public void go(HasWidgets composite) {
107
	public void go(HasWidgets composite) {
108
		composite.add(vue.asWidget());
108
		composite.add(vue.asWidget());
109
		vue.loadImage(image);
109
		vue.loadImage(image);
110
		new MetadonneesPresenteur(new MetadonneesVue(), image.getObservation(), ModeRecherche.MODE_IMAGE, true).go(vue.getMetadonnees());
110
		new MetadonneesPresenteur(new MetadonneesVue(), image.getObservation(), ModeRecherche.MODE_IMAGE, true).go(vue.getMetadonnees());
111
		motsClesImagePresenteur = new MotsClesImagePresenteur(new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(), new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue());	
111
		motsClesImagePresenteur = new MotsClesImagePresenteur(new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImagePresenteur(image.getIdImage(), new MotsClesServiceConcret(), new FormulaireSaisieMotsClesImageVue()), new MotsClesImageVue());	
112
		motsClesImagePresenteur.go(vue.getZoneMotsCles());
112
		motsClesImagePresenteur.go(vue.getZoneMotsCles());
113
		chargerDonneesValidation();
113
		chargerDonneesValidation();
114
		gererEvenements();
114
		gererEvenements();
115
	}
115
	}
116
 
116
 
117
	private void chargerDonneesValidation() {
117
	private void chargerDonneesValidation() {
118
		vue.getZoneVoter().clear();
118
		vue.getZoneVoter().clear();
119
		if (protocole != null) {
119
		if (protocole != null) {
120
			HashMap<String, VoteProtocole> observationValidationDatas = image.getVotesProtocoles(protocole.getId());
120
			HashMap<String, VoteProtocole> observationValidationDatas = image.getVotesProtocoles(protocole.getId());
121
			if (observationValidationDatas != null) {
121
			if (observationValidationDatas != null) {
122
				new MoyenneVotePresenteur(image, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret()).go(vue.getZoneVoter());
122
				new MoyenneVotePresenteur(image, protocole, new MoyenneVoteVue(), new VoteProtocoleServiceConcret()).go(vue.getZoneVoter());
123
			}
123
			}
124
		}
124
		}
125
	}
125
	}
126
 
126
 
127
	private void lancerEvenementValidation() {
127
	private void lancerEvenementValidation() {
128
		CacheClient.getInstance().setImageCourante(image);
128
		CacheClient.getInstance().setImageCourante(image);
129
		final Observation obs = image.getObservation();
129
		final Observation obs = image.getObservation();
130
		BusEvenementiel.getInstance().fireEvent(new EvenementValidation(obs));
130
		BusEvenementiel.getInstance().fireEvent(new EvenementValidation(obs));
131
	}
131
	}
132
 
132
 
133
	protected void gererEvenements() {
133
	protected void gererEvenements() {
134
		
134
		
135
		ClickHandler zoomeur = new ClickHandler() {
135
		ClickHandler zoomeur = new ClickHandler() {
136
			public void onClick(ClickEvent event) {
136
			public void onClick(ClickEvent event) {
137
				FenetreOverlaySimplePresenteur presenteurGalerie = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
137
				FenetreOverlaySimplePresenteur presenteurGalerie = new FenetreOverlaySimplePresenteur(new FenetreOverlayDefilanteVue());
138
				presenteurGalerie.ouvrirFenetreModaleDefilante(0, new DetailImagePresenteur(image, new DetailImageVue()));
138
				presenteurGalerie.ouvrirFenetreModaleDefilante(0, new DetailImagePresenteur(image, new DetailImageVue()));
139
				presenteurGalerie.afficherBoutonsSuivantsPrecedents(false);
139
				presenteurGalerie.afficherBoutonsSuivantsPrecedents(false);
140
			}};
140
			}};
141
			
141
			
142
		vue.getImagePrincipale().addClickHandler(zoomeur);
142
		vue.getImagePrincipale().addClickHandler(zoomeur);
143
 
143
 
144
		vue.getNomAuteur().addClickHandler(new ClickHandler() {
144
		vue.getNomAuteur().addClickHandler(new ClickHandler() {
145
			public void onClick(ClickEvent event) {
145
			public void onClick(ClickEvent event) {
146
				lancerEvenementValidation();
146
				lancerEvenementValidation();
147
			}
147
			}
148
		});
148
		});
149
 
149
 
150
		vue.getNomEspece().addClickHandler(new ClickHandler() {
150
		vue.getNomEspece().addClickHandler(new ClickHandler() {
151
			public void onClick(ClickEvent event) {
151
			public void onClick(ClickEvent event) {
152
				lancerEvenementValidation();
152
				lancerEvenementValidation();
153
			}
153
			}
154
		});
154
		});
155
 
155
 
156
		vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {
156
		vue.getEnSavoirPlus().addClickHandler(new ClickHandler() {
157
 
157
 
158
			@Override
158
			@Override
159
			public void onClick(ClickEvent event) {
159
			public void onClick(ClickEvent event) {
160
				BusEvenementiel.getInstance().fireEvent(new EvenementVoirDetailsImage(image));
160
				BusEvenementiel.getInstance().fireEvent(new EvenementVoirDetailsImage(image));
161
			}
161
			}
162
		});
162
		});
163
		
163
		
164
		vue.getVoirMotsCles().addClickHandler(new ClickHandler() {
164
		vue.getVoirMotsCles().addClickHandler(new ClickHandler() {
165
			@Override
165
			@Override
166
			public void onClick(ClickEvent event) {
166
			public void onClick(ClickEvent event) {
167
				if(!motsClesOuverts) {
167
				if(!motsClesOuverts) {
168
					afficherPanneauMotsCles();
168
					afficherPanneauMotsCles();
169
				} else {
169
				} else {
170
					cacherPanneauMotsCles();
170
					cacherPanneauMotsCles();
171
				}
171
				}
172
 
172
 
173
			}
173
			}
174
		});
174
		});
175
 
175
 
176
		BusEvenementiel.getInstance().addHandler(EvenementVoirDetailsImage.TYPE, new GestionnaireEvenementVoirDetailsImage() {
176
		BusEvenementiel.getInstance().addHandler(EvenementVoirDetailsImage.TYPE, new GestionnaireEvenementVoirDetailsImage() {
177
			@Override
177
			@Override
178
			public void onVoirDetailsImage(EvenementVoirDetailsImage event) {
178
			public void onVoirDetailsImage(EvenementVoirDetailsImage event) {
179
				if (image.getIdImage().equals(event.getImage().getIdImage())) {
179
				if (image.getIdImage().equals(event.getImage().getIdImage())) {
180
					if (!detailsOuverts) {
180
					if (!detailsOuverts) {
181
						afficherDetails();
181
						afficherDetails();
182
					} else {
182
					} else {
183
						cacherDetails();
183
						cacherDetails();
184
					}
184
					}
185
				} else {
185
				} else {
186
					cacherDetails();
186
					cacherDetails();
187
				}
187
				}
188
			}
188
			}
189
		});
189
		});
190
 
190
 
191
		BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {
191
		BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {
192
			@Override
192
			@Override
193
			public void onChangementProtocole(EvenementChangementProtocole event) {
193
			public void onChangementProtocole(EvenementChangementProtocole event) {
194
				setProtocole(event.getProtocole());
194
				setProtocole(event.getProtocole());
195
				chargerDonneesValidation();
195
				chargerDonneesValidation();
196
			}
196
			}
197
		});
197
		});
198
	}
198
	}
199
 
199
 
200
	protected void afficherPanneauMotsCles() {
200
	protected void afficherPanneauMotsCles() {
201
		vue.afficherZoneMotsCles();
201
		vue.afficherZoneMotsCles();
202
		motsClesOuverts = true;
202
		motsClesOuverts = true;
203
		motsClesImagePresenteur.chargerMotsCles(image.getIdImage());
203
		motsClesImagePresenteur.chargerMotsCles(image.getIdImage());
-
 
204
		motsClesImagePresenteur.focuserChampsSaisie();
204
	}
205
	}
205
	
206
	
206
	protected void cacherPanneauMotsCles() {
207
	protected void cacherPanneauMotsCles() {
207
		vue.cacherZoneMotsCles();
208
		vue.cacherZoneMotsCles();
208
		motsClesOuverts = false;
209
		motsClesOuverts = false;
209
	}
210
	}
210
 
211
 
211
	public void cacherDetails() {
212
	public void cacherDetails() {
212
		vue.cacherZoneCache();
213
		vue.cacherZoneCache();
213
		detailsOuverts = false;
214
		detailsOuverts = false;
214
	}
215
	}
215
 
216
 
216
	public void afficherDetails() {
217
	public void afficherDetails() {
217
		vue.afficherZoneCache();
218
		vue.afficherZoneCache();
218
		detailsOuverts = true;
219
		detailsOuverts = true;
219
	}
220
	}
220
 
221
 
221
	public boolean isDetailsOpen() {
222
	public boolean isDetailsOpen() {
222
		return detailsOuverts;
223
		return detailsOuverts;
223
	}
224
	}
224
 
225
 
225
	public Protocole getProtocole() {
226
	public Protocole getProtocole() {
226
		return protocole;
227
		return protocole;
227
	}
228
	}
228
 
229
 
229
	public void setProtocole(Protocole protocole) {
230
	public void setProtocole(Protocole protocole) {
230
		this.protocole = protocole;
231
		this.protocole = protocole;
231
	}
232
	}
232
}
233
}