Subversion Repositories eFlore/Applications.del

Rev

Rev 52 | Go to most recent revision | Details | Compare with Previous | 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;
8
import org.tela_botanica.del.client.utils.KeyboardKeyListener;
9
import org.tela_botanica.del.client.utils.MockDatasource;
14 benjamin 10
import org.tela_botanica.del.client.vues.rechercheobservations.pagination.NumeroPagePresenteur;
9 benjamin 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
52 gduche 37
		chargerObservations();
9 benjamin 38
 
26 gduche 39
		vue.getLabelChercher().addClickHandler(new ClickHandler() {
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
	}
86 benjamin 86
 
87
	public void fermerTousPanneauxDetailsObservations(){
88
		for(ObservationPresenteur observationPresenteur: observationPresenteurs){
89
			if(observationPresenteur.isDetailsOpen()){
90
				observationPresenteur.cacherDetails();
91
			}
92
		}
93
	}
9 benjamin 94
 
95
	private void createPaginationWidget(int nbImages) {
96
 
26 gduche 97
		int nbPages = nbImages / vue.getNbImagesPerPage();
98
		if (nbImages % vue.getNbImagesPerPage() == 0) {
9 benjamin 99
			nbPages--;
100
		}
101
		for (int i = 0; i <= nbPages; i++) {
26 gduche 102
			new NumeroPagePresenteur(i + 1).go(vue.getPanneauPagination());
9 benjamin 103
		}
104
	}
105
 
106
	public void showImagePanels(int first, int last) {
26 gduche 107
		vue.afficherPanneauxImage(first, last);
9 benjamin 108
	}
109
 
14 benjamin 110
	public static ObservationRecherchePresenteur getInstance() {
9 benjamin 111
		return instance;
112
	}
113
 
14 benjamin 114
	public ObservationRechercheVue getView() {
26 gduche 115
		return vue;
9 benjamin 116
	}
117
 
118
	public List<Observation> getObservations() {
119
		return observations;
120
	}
121
 
122
}