Subversion Repositories eFlore/Applications.del

Rev

Details | 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;
344 aurelien 9
import org.tela_botanica.del.client.modeles.Image;
10
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
312 gduche 11
import org.tela_botanica.del.client.services.rest.ImageService;
344 aurelien 12
import org.tela_botanica.del.client.services.rest.async.ImagesParTaxonCallback;
178 benjamin 13
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImagePresenteur;
311 gduche 14
import org.tela_botanica.del.client.vues.rechercheimages.resultats.images.ImageVue;
359 benjamin 15
 
178 benjamin 16
import com.google.gwt.user.client.ui.HasWidgets;
17
import com.google.gwt.user.client.ui.Panel;
18
 
19
public class ResultatRechercheImagePresenteur {
20
 
21
	private final ResultatRechercheImageVue vue = new ResultatRechercheImageVue();
22
	private List<ImagePresenteur> observationPresenteurs = new ArrayList<ImagePresenteur>();
344 aurelien 23
	private ImageService imageService;
359 benjamin 24
 
344 aurelien 25
	public ResultatRechercheImagePresenteur(ImageService imageService) {
26
		this.imageService = imageService;
178 benjamin 27
	}
28
 
29
	public void go(HasWidgets composite) {
30
		composite.add(vue);
359 benjamin 31
 
361 benjamin 32
		vue.startChargement();
33
 
359 benjamin 34
		// appel du service d'image pour avoir le nb total d'elements pour la
35
		// pagination
36
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
37
 
38
			@Override
39
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
40
				creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche());
361 benjamin 41
				afficherImages(imagesRecues, 0, CacheClient.getInstance().getPasPagination());
359 benjamin 42
			}
43
		};
361 benjamin 44
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), 0, CacheClient.getInstance().getPasPagination(), callback);
359 benjamin 45
 
178 benjamin 46
	}
47
 
360 benjamin 48
	private void chargerEtAfficherImages(final int premier, final int dernier) {
361 benjamin 49
		vue.nettoyer();
344 aurelien 50
		vue.startChargement();
359 benjamin 51
 
344 aurelien 52
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
359 benjamin 53
 
344 aurelien 54
			@Override
55
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
178 benjamin 56
 
360 benjamin 57
				afficherImages(imagesRecues, premier, dernier);
344 aurelien 58
			}
59
		};
359 benjamin 60
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback);
61
 
178 benjamin 62
	}
63
 
360 benjamin 64
	private void afficherImages(ImageServiceResultat imageServiceResult, int premier, int dernier) {
65
 
361 benjamin 66
		List<Image> images = imageServiceResult.getImages();
67
 
68
		// verifie si le nb d'images renvoyes par le service est correct sinon
69
		// coupe la liste d'images
360 benjamin 70
		int taille = dernier - premier;
71
		if (images.size() > taille) {
361 benjamin 72
			images = imageServiceResult.getImages().subList(0, taille);
360 benjamin 73
		}
359 benjamin 74
 
75
		List<Panel> panneauxImagesAffichees = new ArrayList<Panel>();
76
		vue.creerPanneauxObservations(imageServiceResult.getImages().size());
77
 
78
		Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator();
360 benjamin 79
		for (Image image : images) {
359 benjamin 80
			Panel imagePanel = panelIterator.next();
81
			ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue());
82
			imagePresenteur.go(imagePanel);
83
			panneauxImagesAffichees.add(imagePanel);
84
			observationPresenteurs.add(imagePresenteur);
178 benjamin 85
		}
359 benjamin 86
 
87
		vue.afficherPanneauxObservation(panneauxImagesAffichees);
88
		vue.stopChargement();
178 benjamin 89
	}
90
 
359 benjamin 91
	private void creerWidgetPagination(int nbImages) {
178 benjamin 92
 
311 gduche 93
		PaginationPresenteur pagination = new PaginationPresenteur(nbImages, CacheClient.getInstance().getPasPagination()) {
178 benjamin 94
 
95
			@Override
96
			public void changerPage(int debut, int fin) {
359 benjamin 97
				chargerEtAfficherImages(debut, fin);
98
				CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
178 benjamin 99
			}
359 benjamin 100
 
263 gduche 101
			@Override
102
			public void actualiserPasCache(int pas) {
311 gduche 103
				CacheClient.getInstance().setPasPagination(pas);
263 gduche 104
			}
105
		};
106
		pagination.go(vue.getPanneauPagination());
365 gduche 107
 
108
		PaginationPresenteur paginationHaut = new PaginationPresenteur(nbImages, CacheClient.getInstance().getPasPagination()) {
109
 
110
			@Override
111
			public void changerPage(int debut, int fin) {
112
				chargerEtAfficherImages(debut, fin);
113
				CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
114
			}
115
 
116
			@Override
117
			public void actualiserPasCache(int pas) {
118
				CacheClient.getInstance().setPasPagination(pas);
119
			}
120
		};
121
		paginationHaut.go(vue.getPanneauPaginationHaut());
178 benjamin 122
	}
123
 
124
}