Subversion Repositories eFlore/Applications.del

Rev

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