Subversion Repositories eFlore/Applications.del

Rev

Details | Last modification | View Log | RSS feed

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