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