Subversion Repositories eFlore/Applications.coel

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
982 jpm 1
package org.tela_botanica.client.vues;
2
 
3
import java.util.Iterator;
4
 
5
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.RegistreId;
7
import org.tela_botanica.client.i18n.Constantes;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.projet.Projet;
10
import org.tela_botanica.client.modeles.projet.ProjetListe;
11
 
12
import com.extjs.gxt.ui.client.Registry;
13
import com.extjs.gxt.ui.client.widget.ContentPanel;
14
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
15
import com.google.gwt.core.client.GWT;
16
import com.google.gwt.event.dom.client.ChangeEvent;
17
import com.google.gwt.event.dom.client.ChangeHandler;
18
import com.google.gwt.user.client.ui.ListBox;
19
 
20
public class FiltreVue extends ContentPanel implements Rafraichissable {
21
	private Mediateur mediateur = null;
22
	private Constantes i18nC = null;
23
 
24
	private ListBox listeProjets;
25
	private ProjetListe projetsCache = null;
26
 
27
	public FiltreVue(Mediateur mediateurCourrant) {
28
		mediateur = mediateurCourrant;
29
		i18nC = Mediateur.i18nC;
30
 
31
		setHeading(i18nC.titreFiltre());
32
		setLayout(new FlowLayout());
33
		setLayoutOnChange(true);
34
 
35
		chargerProjets();
36
		afficherListeProjets();
37
	}
38
 
39
	private void chargerProjets() {
40
		mediateur.selectionnerProjet(this, null);
41
	}
42
 
43
	private void afficherListeProjets() {
44
		// Ajout de la sélection des projets
45
		listeProjets = new ListBox(false);
46
		listeProjets.setWidth("100%");
47
		listeProjets.addItem(i18nC.txtListeProjetDefaut(), "NULL");
48
		add(listeProjets);
49
 
50
	    // Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
51
	    listeProjets.addChangeHandler(new ChangeHandler() {
52
			@Override
53
			public void onChange(ChangeEvent event) {
54
				mediateur.activerChargement(i18nC.chargement());
55
				mediateur.selectionnerProjetCourant(projetsCache.get(listeProjets.getValue(listeProjets.getSelectedIndex())));
56
			}
57
		});
58
	}
59
 
60
	@Override
61
	public void rafraichir(Object nouvellesDonnees) {
62
		if (nouvellesDonnees instanceof ProjetListe) {
63
			projetsCache = (ProjetListe) nouvellesDonnees;
64
			Registry.register(RegistreId.PROJETS, projetsCache);
65
			ajouterProjetsAListe();
66
		} else {
67
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
68
		}
69
	}
70
 
71
	private void ajouterProjetsAListe()	{
72
		Iterator<Projet> it = projetsCache.values().iterator();
73
		while (it.hasNext())	{
74
			Projet projetCourant = it.next();
75
			listeProjets.addItem(projetCourant.getNom(), projetCourant.getId());
76
		}
77
	}
78
}