New file |
0,0 → 1,132 |
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.images.Images; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.projet.Projet; |
import org.tela_botanica.client.synchronisation.Sequenceur; |
|
import com.extjs.gxt.ui.client.data.ModelData; |
import com.extjs.gxt.ui.client.data.ModelType; |
import com.extjs.gxt.ui.client.event.ButtonEvent; |
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.event.SelectionListener; |
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.Field; |
import com.extjs.gxt.ui.client.widget.form.Validator; |
import com.extjs.gxt.ui.client.widget.layout.BoxLayout; |
import com.extjs.gxt.ui.client.widget.layout.FitLayout; |
import com.extjs.gxt.ui.client.widget.layout.FlowLayout; |
import com.extjs.gxt.ui.client.widget.layout.FormLayout; |
import com.extjs.gxt.ui.client.widget.layout.HBoxLayout; |
import com.google.gwt.event.dom.client.KeyCodes; |
|
public class FiltreVue extends ContentPanel implements Rafraichissable { |
private Mediateur mediateur = null; |
private Constantes i18nC = null; |
private Sequenceur sequenceur = new Sequenceur(); |
|
private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null; |
|
private Button annulerFiltre = null; |
|
public FiltreVue(Mediateur mediateurCourrant) { |
mediateur = mediateurCourrant; |
i18nC = Mediateur.i18nC; |
|
setHeading(i18nC.titreFiltre()); |
setLayout(new HBoxLayout()); |
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>(null); |
|
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.setWidth(215); |
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; |
} |
}); |
|
// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre |
projetsCombo.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); |
mediateur.desactiverChargement(); |
annulerFiltre.setEnabled(true); |
} |
} |
}); |
|
add(projetsCombo); |
|
/** Bouton "annuler" filtre **/ |
annulerFiltre = new Button(); |
annulerFiltre.setIcon(Images.ICONES.annuler()); |
annulerFiltre.setEnabled(false); |
add(annulerFiltre); |
|
final Projet tousProjets = new Projet(); |
tousProjets.set("nom", i18nC.tousProjets()); |
|
annulerFiltre.addSelectionListener(new SelectionListener<ButtonEvent>() { |
public void componentSelected(ButtonEvent ce) { |
projetsCombo.getCombo().clear(); |
mediateur.activerChargement(i18nC.chargement()); |
mediateur.selectionnerProjetCourant(tousProjets); |
mediateur.desactiverChargement(); |
annulerFiltre.setEnabled(false); |
} |
}); |
} |
|
|
|
public String getProjet() { |
if (projetsCombo.getValeur() != null) { |
Projet projet = new Projet(projetsCombo.getValeur()); |
return projet.getAbreviation(); |
} else { |
return null; |
} |
|
} |
|
public void rafraichir(Object nouvellesDonnees) { |
// empty ... |
} |
} |
Property changes: |
Added: svn:mergeinfo |
Merged /branches/v1.0-syrah/src/org/tela_botanica/client/vues/FiltreVue.java:r1136-1368 |