Subversion Repositories eFlore/Applications.del

Rev

Rev 534 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

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