Rev 1248 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.vues;import org.tela_botanica.client.Mediateur;import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;import org.tela_botanica.client.composants.pagination.ProxyProjets;import org.tela_botanica.client.i18n.Constantes;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.modeles.projet.Projet;import org.tela_botanica.client.util.Debug;import org.tela_botanica.client.util.UtilString;import com.extjs.gxt.ui.client.data.ModelData;import com.extjs.gxt.ui.client.data.ModelType;import com.extjs.gxt.ui.client.event.ComponentEvent;import com.extjs.gxt.ui.client.event.KeyListener;import com.extjs.gxt.ui.client.event.SelectionChangedEvent;import com.extjs.gxt.ui.client.event.SelectionChangedListener;import com.extjs.gxt.ui.client.widget.ContentPanel;import com.extjs.gxt.ui.client.widget.form.Field;import com.extjs.gxt.ui.client.widget.form.Validator;import com.extjs.gxt.ui.client.widget.layout.FormLayout;import com.google.gwt.event.dom.client.KeyCodes;public class FiltreVue extends ContentPanel implements Rafraichissable {private Mediateur mediateur = null;private Constantes i18nC = null;private Projet tousProjets = null;private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null;public FiltreVue(Mediateur mediateurCourrant) {mediateur = mediateurCourrant;i18nC = Mediateur.i18nC;tousProjets = new Projet();tousProjets.set("nom", i18nC.tousProjets());setHeading(i18nC.titreFiltre());setLayout(new FormLayout());setLayoutOnChange(true);/*********************************//** Champ Projets **//*********************************/ModelType modelTypeProjets = new ModelType();modelTypeProjets.setRoot("projets");modelTypeProjets.setTotalName("nbElements");modelTypeProjets.addField("cpr_nom");modelTypeProjets.addField("cpr_id_projet");String displayNameProjets = "cpr_nom";ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>();projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);projetsCombo.getCombo().setEmptyText("Tous les projets");projetsCombo.getCombo().setAllowBlank(true);projetsCombo.getCombo().setForceSelection(false);projetsCombo.getCombo().setEditable(true);projetsCombo.getCombo().setValidator(new Validator() {public String validate(Field<?> field, String value) {String retour = null;if (field.getRawValue().equals("")) {field.setValue(null);} else if (projetsCombo.getStore().findModel("cpr_nom", field.getRawValue()) == null) {String contenuBrut = field.getRawValue();field.setValue(null);field.setRawValue(contenuBrut);retour = "Veuillez sélectionner une valeur ou laisser le champ vide";}return retour;}});final Projet tousProjets = new Projet();tousProjets.set("nom", i18nC.tousProjets());// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registreprojetsCombo.getCombo().addSelectionChangedListener(new SelectionChangedListener<ModelData>() {public void selectionChanged(SelectionChangedEvent<ModelData> se) {if (se.getSelectedItem() != null) {mediateur.activerChargement(i18nC.chargement());Projet projet = new Projet (se.getSelectedItem());mediateur.selectionnerProjetCourant(projet);}}});projetsCombo.getCombo().addKeyListener(new KeyListener() {public void componentKeyUp(ComponentEvent ce) {projetsCombo.getCombo().setRawValue("Tous les projets");projetsCombo.getCombo().setValue(null);projetsCombo.getCombo().clearSelections();if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {mediateur.selectionnerProjetCourant(tousProjets);projetsCombo.getCombo().setValue(tousProjets);projetsCombo.getCombo().setVisible(false);projetsCombo.getCombo().collapse();projetsCombo.getCombo().setVisible(true);}}});add(projetsCombo);}public void rafraichir(Object nouvellesDonnees) {// empty ...}}