Subversion Repositories eFlore/Applications.del

Rev

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