Subversion Repositories eFlore/Applications.coel

Rev

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