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() {
46
		mediateur.selectionnerProjet(this, null);
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
 
982 jpm 66
			@Override
1078 gduche 67
			public void selectionChanged(SelectionChangedEvent<Projet> se) {
982 jpm 68
				mediateur.activerChargement(i18nC.chargement());
1078 gduche 69
				mediateur.selectionnerProjetCourant(se.getSelectedItem());
982 jpm 70
			}
71
		});
1078 gduche 72
 
73
	    add(listeProjets);
982 jpm 74
	}
75
 
1088 gduche 76
	private void afficherListeProjets(List projetsRecus) {
1078 gduche 77
		projets.removeAll();
1089 gduche 78
 
1091 gduche 79
		List<Projet> selection = new LinkedList<Projet>();
1090 gduche 80
		Projet tousProjets = new Projet();
1091 gduche 81
		tousProjets.set("nom", i18nC.tousProjets());
1090 gduche 82
		projetsRecus.add(0, tousProjets);
1091 gduche 83
		selection.add(tousProjets);
1088 gduche 84
		projets.add(projetsRecus);
1078 gduche 85
		listeProjets.setStore(projets);
1091 gduche 86
		listeProjets.setSelection(selection);
1078 gduche 87
		layout();
88
	}
89
 
982 jpm 90
	@Override
91
	public void rafraichir(Object nouvellesDonnees) {
92
		if (nouvellesDonnees instanceof ProjetListe) {
93
			projetsCache = (ProjetListe) nouvellesDonnees;
94
			Registry.register(RegistreId.PROJETS, projetsCache);
1088 gduche 95
			afficherListeProjets(projetsCache.toList());
96
		} else if (nouvellesDonnees instanceof List) {
97
			List<Projet> projets = (List) nouvellesDonnees;
98
			Registry.register(RegistreId.PROJETS, projets);
99
			afficherListeProjets(projets);
982 jpm 100
		} else {
101
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
102
		}
103
	}
1078 gduche 104
}