1,7 → 1,5 |
package org.tela_botanica.client.vues; |
|
import java.util.Iterator; |
|
import org.tela_botanica.client.Mediateur; |
import org.tela_botanica.client.RegistreId; |
import org.tela_botanica.client.i18n.Constantes; |
10,18 → 8,20 |
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.layout.FlowLayout; |
import com.extjs.gxt.ui.client.widget.form.ComboBox; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.google.gwt.core.client.GWT; |
import com.google.gwt.event.dom.client.ChangeEvent; |
import com.google.gwt.event.dom.client.ChangeHandler; |
import com.google.gwt.user.client.ui.ListBox; |
|
public class FiltreVue extends ContentPanel implements Rafraichissable { |
private Mediateur mediateur = null; |
private Constantes i18nC = null; |
private ListStore<Projet> projets = null; |
|
private ListBox listeProjets; |
private ComboBox<Projet> listeProjets; |
private ProjetListe projetsCache = null; |
|
public FiltreVue(Mediateur mediateurCourrant) { |
29,11 → 29,11 |
i18nC = Mediateur.i18nC; |
|
setHeading(i18nC.titreFiltre()); |
setLayout(new FlowLayout()); |
setLayout(new FitLayout()); |
setLayoutOnChange(true); |
|
chargerProjets(); |
afficherListeProjets(); |
initialiserListeProjets(); |
} |
|
private void chargerProjets() { |
40,39 → 40,44 |
mediateur.selectionnerProjet(this, null); |
} |
|
private void afficherListeProjets() { |
private void initialiserListeProjets() { |
|
// Ajout de la sélection des projets |
listeProjets = new ListBox(false); |
listeProjets.setWidth("100%"); |
listeProjets.addItem(i18nC.txtListeProjetDefaut(), "NULL"); |
add(listeProjets); |
listeProjets = new ComboBox<Projet>(); |
projets = new ListStore<Projet>(); |
listeProjets.setStore(projets); |
listeProjets.setEditable(false); |
listeProjets.setDisplayField("nom"); |
listeProjets.setEmptyText(i18nC.txtListeProjetDefaut()); |
|
// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre |
listeProjets.addChangeHandler(new ChangeHandler() { |
listeProjets.addSelectionChangedListener(new SelectionChangedListener<Projet>() { |
|
@Override |
public void onChange(ChangeEvent event) { |
public void selectionChanged(SelectionChangedEvent<Projet> se) { |
mediateur.activerChargement(i18nC.chargement()); |
mediateur.selectionnerProjetCourant(projetsCache.get(listeProjets.getValue(listeProjets.getSelectedIndex()))); |
mediateur.selectionnerProjetCourant(se.getSelectedItem()); |
} |
}); |
|
add(listeProjets); |
} |
|
private void afficherListeProjets(ProjetListe projetsRecus) { |
projets.removeAll(); |
projets.add(projetsRecus.toList()); |
listeProjets.setStore(projets); |
layout(); |
} |
|
@Override |
public void rafraichir(Object nouvellesDonnees) { |
if (nouvellesDonnees instanceof ProjetListe) { |
projetsCache = (ProjetListe) nouvellesDonnees; |
Registry.register(RegistreId.PROJETS, projetsCache); |
ajouterProjetsAListe(); |
afficherListeProjets(projetsCache); |
} else { |
GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null); |
} |
} |
|
private void ajouterProjetsAListe() { |
Iterator<Projet> it = projetsCache.values().iterator(); |
while (it.hasNext()) { |
Projet projetCourant = it.next(); |
listeProjets.addItem(projetCourant.getNom(), projetCourant.getId()); |
} |
} |
} |
} |