Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
148 benjamin 1
package org.tela_botanica.del.client.vues.rechercheimages;
9 benjamin 2
 
86 benjamin 3
import java.util.ArrayList;
4
import java.util.Iterator;
9 benjamin 5
import java.util.List;
6
 
148 benjamin 7
import org.tela_botanica.del.client.cache.CacheClient;
8
import org.tela_botanica.del.client.modeles.Image;
9
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
10
import org.tela_botanica.del.client.navigation.evenement.rechercheimage.EvenementRechercheImage;
124 gduche 11
import org.tela_botanica.del.client.pagination.PaginationPresenteur;
9 benjamin 12
import org.tela_botanica.del.client.utils.KeyboardKeyListener;
13
import org.tela_botanica.del.client.utils.MockDatasource;
14
 
15
import com.google.gwt.event.dom.client.ClickEvent;
16
import com.google.gwt.event.dom.client.ClickHandler;
17
import com.google.gwt.user.client.ui.HasWidgets;
86 benjamin 18
import com.google.gwt.user.client.ui.Panel;
9 benjamin 19
 
148 benjamin 20
public class ImageRecherchePresenteur {
9 benjamin 21
 
26 gduche 22
	private final MockDatasource observationService = MockDatasource.getInstance();
148 benjamin 23
	private final ImageRechercheVue vue = new ImageRechercheVue();
24
	private static ImageRecherchePresenteur instance;
25
	private List<ImagePresenteur> observationPresenteurs = new ArrayList<ImagePresenteur>();
9 benjamin 26
 
148 benjamin 27
	public ImageRecherchePresenteur() {
9 benjamin 28
		instance = this;
29
	}
30
 
31
	public void go(HasWidgets composite) {
26 gduche 32
		composite.add(vue);
33
		gererEvenements();
148 benjamin 34
 
35
		if (CacheClient.getInstance().getImages() != null) {
36
			chargerObservations();
37
		}
9 benjamin 38
	}
39
 
40
	@SuppressWarnings("deprecation")
26 gduche 41
	public void gererEvenements() {
9 benjamin 42
 
124 gduche 43
		vue.getBoutonChercher().addClickHandler(new ClickHandler() {
26 gduche 44
 
9 benjamin 45
			@Override
46
			public void onClick(ClickEvent event) {
148 benjamin 47
				getImages();
9 benjamin 48
			}
49
		});
50
 
26 gduche 51
		// TODO : remplacer par KeyUp, KeyDown ... etc.
52
		vue.getTextBox().addKeyboardListener(new KeyboardKeyListener() {
9 benjamin 53
 
54
			@Override
55
			public void onEnterKeyUp() {
148 benjamin 56
				getImages();
9 benjamin 57
			}
58
		});
148 benjamin 59
	}
9 benjamin 60
 
148 benjamin 61
	private void getImages() {
62
		List<Image> imagesFromDatabase = observationService.getImages();
63
		EvenementRechercheImage evenementRechercheImage = new EvenementRechercheImage(imagesFromDatabase);
64
		BusEvenementiel.getInstance().fireEvent(evenementRechercheImage);
9 benjamin 65
	}
66
 
26 gduche 67
	private void chargerObservations() {
9 benjamin 68
 
26 gduche 69
		// Remise à zéro du panneau d'affichage et des composants
70
		vue.nettoyer();
9 benjamin 71
 
26 gduche 72
		// TODO : créer une méthode globale pour l'application ? voir
73
		// superclasse présenteur ?
32 gduche 74
		// FIXME : ne s'affiche pas
27 gduche 75
		vue.startChargement();
148 benjamin 76
		vue.creerPanneauxObservation(CacheClient.getInstance().getImages());
9 benjamin 77
 
86 benjamin 78
		Iterator<Panel> panelIterator = vue.getPanneauxImages().iterator();
148 benjamin 79
		for (Image image : CacheClient.getInstance().getImages()) {
86 benjamin 80
			Panel imagePanel = panelIterator.next();
148 benjamin 81
			ImagePresenteur observationPresenteur = new ImagePresenteur(image);
86 benjamin 82
			observationPresenteur.go(imagePanel);
83
			observationPresenteurs.add(observationPresenteur);
84
		}
85
 
26 gduche 86
		vue.afficherPanneauxImage(0, vue.getNbImagesPerPage());
148 benjamin 87
		createPaginationWidget(CacheClient.getInstance().getImages().size());
9 benjamin 88
 
26 gduche 89
		vue.stopChargement();
9 benjamin 90
 
91
	}
124 gduche 92
 
148 benjamin 93
	public void fermerTousPanneauxDetailsObservations() {
94
		for (ImagePresenteur observationPresenteur : observationPresenteurs) {
95
			if (observationPresenteur.isDetailsOpen()) {
86 benjamin 96
				observationPresenteur.cacherDetails();
97
			}
98
		}
99
	}
148 benjamin 100
 
9 benjamin 101
	private void createPaginationWidget(int nbImages) {
102
 
124 gduche 103
		new PaginationPresenteur(nbImages) {
104
 
105
			@Override
106
			public void changerPage(int debut, int fin) {
148 benjamin 107
				ImageRecherchePresenteur.getInstance().showImagePanels(debut, fin);
124 gduche 108
			}
109
		}.go(vue.getPanneauPagination());
9 benjamin 110
	}
111
 
112
	public void showImagePanels(int first, int last) {
26 gduche 113
		vue.afficherPanneauxImage(first, last);
9 benjamin 114
	}
115
 
148 benjamin 116
	public static ImageRecherchePresenteur getInstance() {
9 benjamin 117
		return instance;
118
	}
119
 
148 benjamin 120
	public ImageRechercheVue getView() {
26 gduche 121
		return vue;
9 benjamin 122
	}
123
 
124
}