Subversion Repositories eFlore/Applications.coel

Rev

Rev 1078 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
982 jpm 1
package org.tela_botanica.client.vues;
2
 
1088 gduche 3
import java.util.List;
4
 
982 jpm 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;
1078 gduche 13
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
14
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
15
import com.extjs.gxt.ui.client.store.ListStore;
982 jpm 16
import com.extjs.gxt.ui.client.widget.ContentPanel;
1078 gduche 17
import com.extjs.gxt.ui.client.widget.form.ComboBox;
18
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
982 jpm 19
import com.google.gwt.core.client.GWT;
20
 
21
public class FiltreVue extends ContentPanel implements Rafraichissable {
22
	private Mediateur mediateur = null;
23
	private Constantes i18nC = null;
1078 gduche 24
	private ListStore<Projet> projets = null;
982 jpm 25
 
1078 gduche 26
	private ComboBox<Projet> listeProjets;
982 jpm 27
	private ProjetListe projetsCache = null;
28
 
29
	public FiltreVue(Mediateur mediateurCourrant) {
30
		mediateur = mediateurCourrant;
31
		i18nC = Mediateur.i18nC;
32
 
33
		setHeading(i18nC.titreFiltre());
1078 gduche 34
		setLayout(new FitLayout());
982 jpm 35
		setLayoutOnChange(true);
36
 
37
		chargerProjets();
1078 gduche 38
		initialiserListeProjets();
982 jpm 39
	}
40
 
41
	private void chargerProjets() {
42
		mediateur.selectionnerProjet(this, null);
43
	}
44
 
1078 gduche 45
	private void initialiserListeProjets() {
46
 
982 jpm 47
		// Ajout de la sélection des projets
1078 gduche 48
		listeProjets = new ComboBox<Projet>();
49
		projets = new ListStore<Projet>();
50
		listeProjets.setStore(projets);
51
		listeProjets.setEditable(false);
52
		listeProjets.setDisplayField("nom");
53
		listeProjets.setEmptyText(i18nC.txtListeProjetDefaut());
982 jpm 54
 
1078 gduche 55
		// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
56
	    listeProjets.addSelectionChangedListener(new SelectionChangedListener<Projet>() {
57
 
982 jpm 58
			@Override
1078 gduche 59
			public void selectionChanged(SelectionChangedEvent<Projet> se) {
982 jpm 60
				mediateur.activerChargement(i18nC.chargement());
1078 gduche 61
				mediateur.selectionnerProjetCourant(se.getSelectedItem());
982 jpm 62
			}
63
		});
1078 gduche 64
 
65
	    add(listeProjets);
982 jpm 66
	}
67
 
1088 gduche 68
	private void afficherListeProjets(List projetsRecus) {
1078 gduche 69
		projets.removeAll();
1088 gduche 70
		projets.add(projetsRecus);
1078 gduche 71
		listeProjets.setStore(projets);
72
		layout();
73
	}
74
 
982 jpm 75
	@Override
76
	public void rafraichir(Object nouvellesDonnees) {
77
		if (nouvellesDonnees instanceof ProjetListe) {
78
			projetsCache = (ProjetListe) nouvellesDonnees;
79
			Registry.register(RegistreId.PROJETS, projetsCache);
1088 gduche 80
			afficherListeProjets(projetsCache.toList());
81
		} else if (nouvellesDonnees instanceof List) {
82
			List<Projet> projets = (List) nouvellesDonnees;
83
			Registry.register(RegistreId.PROJETS, projets);
84
			afficherListeProjets(projets);
982 jpm 85
		} else {
86
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
87
		}
88
	}
1078 gduche 89
}