Subversion Repositories eFlore/Applications.coel

Rev

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