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;
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);
79
				chargerEtAfficherImagesPageEnCours();
80
			}
81
		});
82
 
83
		vue.getTriParNbVotesDescendant().addClickHandler(new ClickHandler() {
84
 
85
			@Override
86
			public void onClick(ClickEvent arg0) {
87
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
88
				informationsRechercheImages.setTriParNbVotes(ModeTri.TRI_DESCENDANT);
89
				chargerEtAfficherImagesPageEnCours();
90
			}
91
		});
92
 
93
		vue.getTriParDateAscendant().addClickHandler(new ClickHandler() {
94
 
95
			@Override
96
			public void onClick(ClickEvent arg0) {
97
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
98
				informationsRechercheImages.setTriParDate(ModeTri.TRI_ASCENDANT);
99
				chargerEtAfficherImagesPageEnCours();
100
			}
101
		});
102
 
103
		vue.getTriParDateDescendant().addClickHandler(new ClickHandler() {
104
 
105
			@Override
106
			public void onClick(ClickEvent arg0) {
107
				InformationsRecherche informationsRechercheImages = CacheClient.getInstance().getInformationsRechercheImage();
108
				informationsRechercheImages.setTriParDate(ModeTri.TRI_DESCENDANT);
109
				chargerEtAfficherImagesPageEnCours();
110
			}
111
		});
112
	}
113
 
445 benjamin 114
	public void rechercherImagesEtCreerWidgetPagination() {
455 benjamin 115
 
359 benjamin 116
		// appel du service d'image pour avoir le nb total d'elements pour la
117
		// pagination
118
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
119
			@Override
120
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
121
				creerWidgetPagination(imagesRecues.getNbTotalImagesPourLaRecherche());
455 benjamin 122
				afficherImages(imagesRecues);
359 benjamin 123
			}
124
		};
455 benjamin 125
 
126
		final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
127
		final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
128
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), debut, fin, callback);
178 benjamin 129
	}
130
 
360 benjamin 131
	private void chargerEtAfficherImages(final int premier, final int dernier) {
390 aurelien 132
		vue.startChargement();
361 benjamin 133
		vue.nettoyer();
359 benjamin 134
 
344 aurelien 135
		ImagesParTaxonCallback callback = new ImagesParTaxonCallback() {
136
			@Override
137
			public void surImagesRecues(ImageServiceResultat imagesRecues) {
455 benjamin 138
				afficherImages(imagesRecues);
344 aurelien 139
			}
140
		};
359 benjamin 141
		imageService.getImagesParTaxon(CacheClient.getInstance().getInformationsRechercheImage(), premier, dernier, callback);
142
 
178 benjamin 143
	}
144
 
455 benjamin 145
	private void afficherImages(ImageServiceResultat imageServiceResult) {
360 benjamin 146
 
361 benjamin 147
		List<Image> images = imageServiceResult.getImages();
148
 
359 benjamin 149
		List<Panel> panneauxImagesAffichees = new ArrayList<Panel>();
150
		vue.creerPanneauxObservations(imageServiceResult.getImages().size());
151
 
152
		Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator();
360 benjamin 153
		for (Image image : images) {
359 benjamin 154
			Panel imagePanel = panelIterator.next();
155
			ImagePresenteur imagePresenteur = new ImagePresenteur(image, CacheClient.getInstance().getProtocoleCourant(), new ImageVue());
156
			imagePresenteur.go(imagePanel);
157
			panneauxImagesAffichees.add(imagePanel);
391 aurelien 158
			ImagePresenteurs.add(imagePresenteur);
178 benjamin 159
		}
359 benjamin 160
 
161
		vue.afficherPanneauxObservation(panneauxImagesAffichees);
162
		vue.stopChargement();
178 benjamin 163
	}
164
 
359 benjamin 165
	private void creerWidgetPagination(int nbImages) {
178 benjamin 166
 
445 benjamin 167
		PaginationPresenteur imagesPaginationPresenteurHaut = creerPresenteurPagination(nbImages);
168
		PaginationPresenteur imagesPaginationPresenteurBas = creerPresenteurPagination(nbImages);
446 aurelien 169
		imagesPaginationPresenteurHaut.setGroupePagination("pagination_images");
170
		imagesPaginationPresenteurBas.setGroupePagination("pagination_images");
445 benjamin 171
		imagesPaginationPresenteurHaut.go(vue.getPanneauPaginationHaut());
172
		imagesPaginationPresenteurBas.go(vue.getPanneauPagination());
173
	}
359 benjamin 174
 
445 benjamin 175
	public PaginationPresenteur creerPresenteurPagination(int nbImages) {
176
		PaginationPresenteur imagesPaginationPresenteur = new PaginationPresenteur(new PaginationVue(), nbImages, CacheClient.getInstance().getPasPagination(), CacheClient.getInstance().getPageCouranteRechercheImage()) {
263 gduche 177
			@Override
445 benjamin 178
			public void chargerElements(int debut, int fin) {
436 benjamin 179
 
445 benjamin 180
				chargerEtAfficherImages(debut, fin);
365 gduche 181
				CacheClient.getInstance().setPageCouranteRechercheImages(getPageCourante());
182
			}
183
 
184
			@Override
185
			public void actualiserPasCache(int pas) {
186
				CacheClient.getInstance().setPasPagination(pas);
187
			}
188
		};
445 benjamin 189
		return imagesPaginationPresenteur;
178 benjamin 190
	}
459 benjamin 191
 
192
	public void chargerEtAfficherImagesPageEnCours() {
193
		final int debut = (CacheClient.getInstance().getPageCouranteRechercheImage() - 1) * CacheClient.getInstance().getPasPagination();
194
		final int fin = (CacheClient.getInstance().getPageCouranteRechercheImage()) * CacheClient.getInstance().getPasPagination();
195
		chargerEtAfficherImages(debut, fin);
196
	}
178 benjamin 197
}