Subversion Repositories eFlore/Applications.del

Rev

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

Rev 534 Rev 564
1
package org.tela_botanica.del.client.vues.rechercheimages.resultats;
1
package org.tela_botanica.del.client.vues.rechercheimages.resultats;
2
 
-
 
3
import java.util.ArrayList;
-
 
4
import java.util.Iterator;
2
 
5
import java.util.List;
3
import java.util.List;
6
 
4
 
7
import org.tela_botanica.del.client.cache.CacheClient;
5
import org.tela_botanica.del.client.cache.CacheClient;
8
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
6
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
9
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
7
import org.tela_botanica.del.client.composants.pagination.PaginationVue;
10
import org.tela_botanica.del.client.modeles.Image;
8
import org.tela_botanica.del.client.modeles.Image;
11
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
9
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
12
import org.tela_botanica.del.client.modeles.InformationsRecherche;
10
import org.tela_botanica.del.client.modeles.InformationsRecherche;
13
import org.tela_botanica.del.client.modeles.ModeTri;
11
import org.tela_botanica.del.client.modeles.ModeTri;
14
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
12
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
15
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
13
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.EvenementChangementProtocole;
16
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;
14
import org.tela_botanica.del.client.navigation.evenement.changementprotocole.GestionnaireEvenementChangementProtocole;
17
import org.tela_botanica.del.client.services.rest.ImageService;
15
import org.tela_botanica.del.client.services.rest.ImageService;
18
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
16
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
19
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur;
17
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur;
20
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImageVue;
18
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImageVue;
21
 
19
 
22
import com.google.gwt.event.dom.client.ClickEvent;
20
import com.google.gwt.event.dom.client.ClickEvent;
23
import com.google.gwt.event.dom.client.ClickHandler;
21
import com.google.gwt.event.dom.client.ClickHandler;
24
import com.google.gwt.event.dom.client.HasClickHandlers;
22
import com.google.gwt.event.dom.client.HasClickHandlers;
-
 
23
import com.google.gwt.user.client.ui.HTMLPanel;
25
import com.google.gwt.user.client.ui.HasWidgets;
24
import com.google.gwt.user.client.ui.HasWidgets;
26
import com.google.gwt.user.client.ui.IsWidget;
25
import com.google.gwt.user.client.ui.IsWidget;
27
 
26
 
28
public class ResultatRechercheImagePresenteur {
27
public class ResultatRechercheImagePresenteur {
29
 
28
 
30
	public interface Vue extends IsWidget {
29
	public interface Vue extends IsWidget {
31
		public void startChargement();
30
		public void startChargement();
32
 
31
 
33
		public void nettoyer();
32
		public void nettoyer();
34
 
-
 
35
		public void afficherPanneauxObservation(List<HasWidgets> panneauxImagesAffichees);
-
 
36
 
33
 
37
		public void creerPanneauxObservations(int size);
34
		public void creerPanneauxObservations(int size);
38
 
35
 
39
		public void stopChargement();
36
		public void stopChargement();
40
 
37
 
41
		public List<HasWidgets> getPanneauxImages();
38
		public List<HasWidgets> getPanneauxImages();
42
 
39
 
43
		public HasWidgets getPanneauPagination();
40
		public HasWidgets getPanneauPagination();
44
 
41
 
45
		public HasWidgets getPanneauPaginationHaut();
42
		public HasWidgets getPanneauPaginationHaut();
46
 
43
 
47
		public HasClickHandlers getTriParNbVotesAscendant();
44
		public HasClickHandlers getTriParNbVotesAscendant();
48
 
45
 
49
		public HasClickHandlers getTriParNbVotesDescendant();
46
		public HasClickHandlers getTriParNbVotesDescendant();
50
 
47
 
51
		public HasClickHandlers getTriParDateAscendant();
48
		public HasClickHandlers getTriParDateAscendant();
52
 
49
 
53
		public HasClickHandlers getTriParDateDescendant();
50
		public HasClickHandlers getTriParDateDescendant();
-
 
51
 
-
 
52
		public void afficherElementsAucunResultatTrouve();
-
 
53
 
-
 
54
		public void afficherElementsResultatsTrouve();
-
 
55
 
-
 
56
		public HTMLPanel getImageTable();
54
	}
57
	}
55
 
58
 
56
	// new ResultatRechercheImageVue();
59
	// new ResultatRechercheImageVue();
57
	private Vue vue;
60
	private Vue vue;
58
	private List<ImagePresenteur> ImagePresenteurs = new ArrayList<ImagePresenteur>();
-
 
59
	private ImageService imageService;
61
	private ImageService imageService;
60
 
62
 
61
	public ResultatRechercheImagePresenteur(ImageService imageService, Vue vue) {
63
	public ResultatRechercheImagePresenteur(ImageService imageService, Vue vue) {
62
		this.vue = vue;
64
		this.vue = vue;
63
		this.imageService = imageService;
65
		this.imageService = imageService;
64
	}
66
	}
65
 
67
 
66
	public void go(HasWidgets composite) {
68
	public void go(HasWidgets composite) {
67
		composite.add(vue.asWidget());
69
		composite.add(vue.asWidget());
68
		vue.startChargement();
70
		vue.startChargement();
69
		rechercherImagesEtCreerWidgetPagination();
71
		rechercherImagesEtCreerWidgetPagination();
70
		gererEvenements();
72
		gererEvenements();
71
	}
73
	}
72
 
74
 
73
	public void gererEvenements() {
75
	public void gererEvenements() {
74
 
76
 
75
		vue.getTriParNbVotesAscendant().addClickHandler(new ClickHandler() {
77
		vue.getTriParNbVotesAscendant().addClickHandler(new ClickHandler() {
76
 
78
 
77
			@Override
79
			@Override
78
			public void onClick(ClickEvent arg0) {
80
			public void onClick(ClickEvent arg0) {
79
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
81
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
80
				int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();
82
				int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();
81
				informationsRechercheImages.setTriParNbVotes(ModeTri.TRI_ASCENDANT);
83
				informationsRechercheImages.setTriParNbVotes(ModeTri.TRI_ASCENDANT);
82
				informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");
84
				informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");
83
				informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI);
85
				informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI);
84
				chargerEtAfficherImagesPageEnCours();
86
				chargerEtAfficherImagesPageEnCours();
85
			}
87
			}
86
		});
88
		});
87
 
89
 
88
		vue.getTriParNbVotesDescendant().addClickHandler(new ClickHandler() {
90
		vue.getTriParNbVotesDescendant().addClickHandler(new ClickHandler() {
89
 
91
 
90
			@Override
92
			@Override
91
			public void onClick(ClickEvent arg0) {
93
			public void onClick(ClickEvent arg0) {
92
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
94
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
93
				int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();
95
				int IdProtocole = CacheClient.getInstance().getProtocoleCourant().getId();
94
				informationsRechercheImages.setTriParNbVotes(ModeTri.TRI_DESCENDANT);
96
				informationsRechercheImages.setTriParNbVotes(ModeTri.TRI_DESCENDANT);
95
				informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");
97
				informationsRechercheImages.setIdProtocoleSelectionne(IdProtocole + "");
96
				informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI);
98
				informationsRechercheImages.setTriParDate(ModeTri.PAS_DE_TRI);
97
				chargerEtAfficherImagesPageEnCours();
99
				chargerEtAfficherImagesPageEnCours();
98
			}
100
			}
99
		});
101
		});
100
 
102
 
101
		vue.getTriParDateAscendant().addClickHandler(new ClickHandler() {
103
		vue.getTriParDateAscendant().addClickHandler(new ClickHandler() {
102
 
104
 
103
			@Override
105
			@Override
104
			public void onClick(ClickEvent arg0) {
106
			public void onClick(ClickEvent arg0) {
105
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
107
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
106
				informationsRechercheImages.setTriParDate(ModeTri.TRI_ASCENDANT);
108
				informationsRechercheImages.setTriParDate(ModeTri.TRI_ASCENDANT);
107
				informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI);
109
				informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI);
108
				chargerEtAfficherImagesPageEnCours();
110
				chargerEtAfficherImagesPageEnCours();
109
			}
111
			}
110
		});
112
		});
111
 
113
 
112
		vue.getTriParDateDescendant().addClickHandler(new ClickHandler() {
114
		vue.getTriParDateDescendant().addClickHandler(new ClickHandler() {
113
 
115
 
114
			@Override
116
			@Override
115
			public void onClick(ClickEvent arg0) {
117
			public void onClick(ClickEvent arg0) {
116
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
118
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
117
				informationsRechercheImages.setTriParDate(ModeTri.TRI_DESCENDANT);
119
				informationsRechercheImages.setTriParDate(ModeTri.TRI_DESCENDANT);
118
				informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI);
120
				informationsRechercheImages.setTriParNbVotes(ModeTri.PAS_DE_TRI);
119
				chargerEtAfficherImagesPageEnCours();
121
				chargerEtAfficherImagesPageEnCours();
120
			}
122
			}
121
		});
123
		});
122
 
124
 
123
		BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {
125
		BusEvenementiel.getInstance().addHandler(EvenementChangementProtocole.TYPE, new GestionnaireEvenementChangementProtocole() {
124
			@Override
126
			@Override
125
			public void onChangementProtocole(EvenementChangementProtocole event) {
127
			public void onChangementProtocole(EvenementChangementProtocole event) {
126
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
128
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
127
				if (informationsRechercheImages.getTriParNbVotes() != ModeTri.PAS_DE_TRI) {
129
				if (informationsRechercheImages.getTriParNbVotes() != ModeTri.PAS_DE_TRI) {
128
					informationsRechercheImages.setIdProtocoleSelectionne(event.getProtocole().getId() + "");
130
					informationsRechercheImages.setIdProtocoleSelectionne(event.getProtocole().getId() + "");
129
					chargerEtAfficherImagesPageEnCours();
131
					chargerEtAfficherImagesPageEnCours();
130
				}
132
				}
131
			}
133
			}
132
		});
134
		});
133
	}
135
	}
134
 
136
 
135
	public void rechercherImagesEtCreerWidgetPagination() {
137
	public void rechercherImagesEtCreerWidgetPagination() {
136
 
138
 
137
		// appel du service d'image pour avoir le nb total d'elements pour la
139
		// appel du service d'image pour avoir le nb total d'elements pour la
138
		// pagination
140
		// pagination
139
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
141
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
140
			@Override
142
			@Override
141
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
143
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
142
				creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche());
144
				creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche());
143
				afficherImages(imagesRecues);
145
				afficherImages(imagesRecues);
144
			}
146
			}
145
		};
147
		};
146
 
148
 
147
		final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
149
		final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
148
		final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
150
		final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
149
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), debut, fin, callback);
151
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), debut, fin, callback);
150
	}
152
	}
151
 
153
 
152
	private void chargerEtAfficherImages(final int premier, final int dernier) {
154
	private void chargerEtAfficherImages(final int premier, final int dernier) {
153
		vue.startChargement();
155
		vue.startChargement();
154
		vue.nettoyer();
156
		vue.nettoyer();
155
 
157
 
156
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
158
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
157
			@Override
159
			@Override
158
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
160
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
159
				afficherImages(imagesRecues);
161
				afficherImages(imagesRecues);
160
			}
162
			}
161
		};
163
		};
162
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback);
164
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback);
163
 
165
 
164
	}
166
	}
165
 
167
 
166
	public void afficherImages(ImageServiceResultat imageServiceResult) {
168
	public void afficherImages(ImageServiceResultat imageServiceResult) {
167
 
169
 
168
		List<Image> images = imageServiceResult.getImages();
170
		List<Image> images = imageServiceResult.getImages();
169
 
171
 
170
		List<HasWidgets> panneauxImagesAffichees = new ArrayList<HasWidgets>();
172
		if (images == null || images.size() == 0) {
-
 
173
			vue.afficherElementsAucunResultatTrouve();
-
 
174
		}
171
		vue.creerPanneauxObservations(imageServiceResult.getImages().size());
175
 
172
 
176
		else {
173
		Iterator<HasWidgets> panelIterator = vue.getPanneauxImages().iterator();
-
 
174
		for (Image image : images) {
177
			vue.afficherElementsResultatsTrouve();
175
			HasWidgets imagePanel = panelIterator.next();
178
			for (Image image : images) {
176
			ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue());
-
 
177
			imagePresenteur.go(imagePanel);
179
				ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue());
178
			panneauxImagesAffichees.add(imagePanel);
180
				imagePresenteur.go(vue.getImageTable());
179
			ImagePresenteurs.add(imagePresenteur);
-
 
180
		}
-
 
181
 
181
			}
182
		vue.afficherPanneauxObservation(panneauxImagesAffichees);
182
		}
183
		vue.stopChargement();
183
		vue.stopChargement();
184
	}
184
	}
185
 
185
 
186
	private void creerWidgetPagination(int nbImages) {
186
	private void creerWidgetPagination(int nbImages) {
187
 
187
 
188
		PaginationPresenteur imagesPaginationPresenteurHaut = creerPresenteurPagination(nbImages);
188
		PaginationPresenteur imagesPaginationPresenteurHaut = creerPresenteurPagination(nbImages);
189
		PaginationPresenteur imagesPaginationPresenteurBas = creerPresenteurPagination(nbImages);
189
		PaginationPresenteur imagesPaginationPresenteurBas = creerPresenteurPagination(nbImages);
190
		imagesPaginationPresenteurHaut.setGroupePagination("pagination_images");
190
		imagesPaginationPresenteurHaut.setGroupePagination("pagination_images");
191
		imagesPaginationPresenteurBas.setGroupePagination("pagination_images");
191
		imagesPaginationPresenteurBas.setGroupePagination("pagination_images");
192
		imagesPaginationPresenteurHaut.go(vue.getPanneauPaginationHaut());
192
		imagesPaginationPresenteurHaut.go(vue.getPanneauPaginationHaut());
193
		imagesPaginationPresenteurBas.go(vue.getPanneauPagination());
193
		imagesPaginationPresenteurBas.go(vue.getPanneauPagination());
194
	}
194
	}
195
 
195
 
196
	public PaginationPresenteur creerPresenteurPagination(int nbImages) {
196
	public PaginationPresenteur creerPresenteurPagination(int nbImages) {
197
		PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheImage()) {
197
		PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheImage()) {
198
			@Override
198
			@Override
199
			public void chargerElements(int debut, int fin) {
199
			public void chargerElements(int debut, int fin) {
200
 
200
 
201
				chargerEtAfficherImages(debut, fin);
201
				chargerEtAfficherImages(debut, fin);
202
				CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
202
				CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
203
			}
203
			}
204
 
204
 
205
			@Override
205
			@Override
206
			public void actualiserPasCache(int pas) {
206
			public void actualiserPasCache(int pas) {
207
				CacheClient.getInstance().setPasPagination(pas);
207
				CacheClient.getInstance().setPasPagination(pas);
208
			}
208
			}
209
		};
209
		};
210
		return imagesPaginationPresenteur;
210
		return imagesPaginationPresenteur;
211
	}
211
	}
212
 
212
 
213
	public void chargerEtAfficherImagesPageEnCours() {
213
	public void chargerEtAfficherImagesPageEnCours() {
214
		final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
214
		final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
215
		final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
215
		final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
216
		chargerEtAfficherImages(debut, fin);
216
		chargerEtAfficherImages(debut, fin);
217
	}
217
	}
218
 
218
 
219
	public Vue getVue() {
219
	public Vue getVue() {
220
		return vue;
220
		return vue;
221
	}
221
	}
222
}
222
}