Subversion Repositories eFlore/Applications.del

Rev

Rev 335 | 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;
344 aurelien 8
import org.tela_botanica.del.client.modeles.Image;
9
import org.tela_botanica.del.client.modeles.ImageServiceResultat;
335 benjamin 10
import org.tela_botanica.del.client.composants.pagination.PaginationPresenteur;
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;
178 benjamin 15
import com.google.gwt.user.client.ui.HasWidgets;
16
import com.google.gwt.user.client.ui.Panel;
17
 
18
public class ResultatRechercheImagePresenteur {
19
 
20
	private final ResultatRechercheImageVue vue = new ResultatRechercheImageVue();
21
	private static ResultatRechercheImagePresenteur instance;
22
	private List<ImagePresenteur> observationPresenteurs = new ArrayList<ImagePresenteur>();
344 aurelien 23
	private ImageService imageService;
312 gduche 24
 
344 aurelien 25
	public ResultatRechercheImagePresenteur(ImageService imageService) {
178 benjamin 26
		instance = this;
344 aurelien 27
		this.imageService = imageService;
178 benjamin 28
	}
29
 
30
	public void go(HasWidgets composite) {
31
		composite.add(vue);
344 aurelien 32
		int pas = CacheClient.getInstance().getPasPagination();
33
		int pageCourante = CacheClient.getInstance().getPageCouranteRecherche();
34
		actualiserImagesEtMoyenneVoteProtocole(pageCourante*pas, (pageCourante+1)*(pas));
178 benjamin 35
	}
36
 
311 gduche 37
	private void actualiserImagesEtMoyenneVoteProtocole(int premier, int dernier) {
344 aurelien 38
 
39
		vue.startChargement();
40
 
41
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
42
 
43
			@Override
44
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
45
 
46
				CacheClient.getInstance().setImages(imagesRecues.getImages());
47
				createPaginationWidget(imagesRecues.getNbTotalImagesPourLaRecherche());
48
				vue.nettoyer();
178 benjamin 49
 
344 aurelien 50
				List<Panel> panneauxImagesAffichees = new ArrayList<Panel>();
51
				vue.creerPanneauxObservations(imagesRecues.getImages().size());
178 benjamin 52
 
344 aurelien 53
				Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator();
54
				for (Image image : imagesRecues.getImages()) {
55
					Panel imagePanel = panelIterator.next();
56
					ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue());
57
					imagePresenteur.go(imagePanel);
58
					panneauxImagesAffichees.add(imagePanel);
59
					observationPresenteurs.add(imagePresenteur);
60
				}
241 gduche 61
 
344 aurelien 62
				vue.afficherPanneauxObservation(panneauxImagesAffichees);
63
				vue.stopChargement();
64
			}
65
		};
66
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(),premier, dernier , callback);
178 benjamin 67
	}
68
 
69
	public void fermerTousPanneauxDetailsObservations() {
70
		for (ImagePresenteur observationPresenteur : observationPresenteurs) {
71
			if (observationPresenteur.isDetailsOpen()) {
72
				observationPresenteur.cacherDetails();
73
			}
74
		}
75
	}
76
 
77
	private void createPaginationWidget(int nbImages) {
78
 
311 gduche 79
		PaginationPresenteur pagination = new PaginationPresenteur(nbImages, CacheClient.getInstance().getPasPagination()) {
178 benjamin 80
 
81
			@Override
82
			public void changerPage(int debut, int fin) {
83
				showImagePanels(debut, fin);
311 gduche 84
				CacheClient.getInstance().setPageCouranteRecherche(getPageCourante());
178 benjamin 85
			}
263 gduche 86
 
87
			@Override
88
			public void actualiserPasCache(int pas) {
311 gduche 89
				CacheClient.getInstance().setPasPagination(pas);
263 gduche 90
			}
91
		};
92
		pagination.go(vue.getPanneauPagination());
178 benjamin 93
	}
94
 
95
	public void showImagePanels(int first, int last) {
311 gduche 96
		actualiserImagesEtMoyenneVoteProtocole(first, last);
178 benjamin 97
	}
98
 
99
	public ResultatRechercheImageVue getView() {
100
		return vue;
101
	}
102
 
103
	public static ResultatRechercheImagePresenteur getInstance() {
104
		return instance;
105
	}
106
 
107
}