Subversion Repositories eFlore/Applications.del

Rev

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