Rev 1090 | Blame | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;import java.util.LinkedList;import java.util.List;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.RegistreId;import org.tela_botanica.client.i18n.Constantes;import org.tela_botanica.client.images.Images;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.projet.Projet;import org.tela_botanica.client.modeles.projet.ProjetListe;import com.extjs.gxt.ui.client.Registry;import com.extjs.gxt.ui.client.event.SelectionChangedEvent;import com.extjs.gxt.ui.client.event.SelectionChangedListener;import com.extjs.gxt.ui.client.store.ListStore;import com.extjs.gxt.ui.client.widget.ContentPanel;import com.extjs.gxt.ui.client.widget.button.Button;import com.extjs.gxt.ui.client.widget.form.ComboBox;import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;import com.extjs.gxt.ui.client.widget.layout.FitLayout;import com.google.gwt.core.client.GWT;public class FiltreVue extends ContentPanel implements Rafraichissable {private Mediateur mediateur = null;private Constantes i18nC = null;private ListStore<Projet> projets = null;private ComboBox<Projet> listeProjets;private ProjetListe projetsCache = null;public FiltreVue(Mediateur mediateurCourrant) {mediateur = mediateurCourrant;i18nC = Mediateur.i18nC;setHeading(i18nC.titreFiltre());setLayout(new FitLayout());setLayoutOnChange(true);chargerProjets();initialiserListeProjets();}private void chargerProjets() {mediateur.selectionnerProjet(this, null);}private void initialiserListeProjets() {// Ajout de la sélection des projetslisteProjets = new ComboBox<Projet>();projets = new ListStore<Projet>();listeProjets.setStore(projets);listeProjets.setEditable(false);listeProjets.setDisplayField("nom");listeProjets.setEmptyText(i18nC.txtListeProjetDefaut());listeProjets.setTypeAhead(true);listeProjets.setTriggerAction(TriggerAction.ALL);// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registrelisteProjets.addSelectionChangedListener(new SelectionChangedListener<Projet>() {@Overridepublic void selectionChanged(SelectionChangedEvent<Projet> se) {mediateur.activerChargement(i18nC.chargement());mediateur.selectionnerProjetCourant(se.getSelectedItem());}});add(listeProjets);}private void afficherListeProjets(List projetsRecus) {projets.removeAll();List<Projet> selection = new LinkedList<Projet>();Projet tousProjets = new Projet();tousProjets.set("nom", i18nC.tousProjets());projetsRecus.add(0, tousProjets);selection.add(tousProjets);projets.add(projetsRecus);listeProjets.setStore(projets);listeProjets.setSelection(selection);layout();}@Overridepublic void rafraichir(Object nouvellesDonnees) {if (nouvellesDonnees instanceof ProjetListe) {projetsCache = (ProjetListe) nouvellesDonnees;Registry.register(RegistreId.PROJETS, projetsCache);afficherListeProjets(projetsCache.toList());} else if (nouvellesDonnees instanceof List) {List<Projet> projets = (List) nouvellesDonnees;Registry.register(RegistreId.PROJETS, projets);afficherListeProjets(projets);} else {GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);}}}