Subversion Repositories eFlore/Applications.coel

Rev

Rev 1370 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
982 jpm 1
package org.tela_botanica.client.vues;
2
 
3
import org.tela_botanica.client.Mediateur;
1369 cyprien 4
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
5
import org.tela_botanica.client.composants.pagination.ProxyProjets;
982 jpm 6
import org.tela_botanica.client.i18n.Constantes;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.projet.Projet;
1369 cyprien 9
import org.tela_botanica.client.synchronisation.Sequenceur;
982 jpm 10
 
1369 cyprien 11
import com.extjs.gxt.ui.client.data.ModelData;
12
import com.extjs.gxt.ui.client.data.ModelType;
13
import com.extjs.gxt.ui.client.event.ComponentEvent;
14
import com.extjs.gxt.ui.client.event.KeyListener;
1078 gduche 15
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
16
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
982 jpm 17
import com.extjs.gxt.ui.client.widget.ContentPanel;
1369 cyprien 18
import com.extjs.gxt.ui.client.widget.form.Field;
19
import com.extjs.gxt.ui.client.widget.form.Validator;
1078 gduche 20
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
1372 cyprien 21
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
1369 cyprien 22
import com.google.gwt.event.dom.client.KeyCodes;
982 jpm 23
 
24
public class FiltreVue extends ContentPanel implements Rafraichissable {
25
	private Mediateur mediateur = null;
26
	private Constantes i18nC = null;
1369 cyprien 27
	private Sequenceur sequenceur = new Sequenceur();
982 jpm 28
 
1369 cyprien 29
	private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null;
982 jpm 30
 
31
	public FiltreVue(Mediateur mediateurCourrant) {
32
		mediateur = mediateurCourrant;
33
		i18nC = Mediateur.i18nC;
34
 
35
		setHeading(i18nC.titreFiltre());
1372 cyprien 36
		setLayout(new FormLayout());
982 jpm 37
		setLayoutOnChange(true);
38
 
1369 cyprien 39
		/*********************************/
40
		/**			Champ Projets		**/
41
		/*********************************/
1089 gduche 42
 
1369 cyprien 43
		ModelType modelTypeProjets = new ModelType();
44
		modelTypeProjets.setRoot("projets");
45
		modelTypeProjets.setTotalName("nbElements");
46
		modelTypeProjets.addField("cpr_nom");
47
		modelTypeProjets.addField("cpr_id_projet");
982 jpm 48
 
1369 cyprien 49
		String displayNameProjets = "cpr_nom";
1370 cyprien 50
		ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>(null);
1369 cyprien 51
 
52
		projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
53
		projetsCombo.getCombo().setEmptyText("Tous les projets");
54
		projetsCombo.getCombo().setAllowBlank(true);
55
		projetsCombo.getCombo().setForceSelection(false);
56
		projetsCombo.getCombo().setEditable(true);
57
		projetsCombo.setWidth(215);
58
		projetsCombo.getCombo().setValidator(new Validator() {
59
			public String validate(Field<?> field, String value) {
60
				String retour = null;
61
				if (field.getRawValue().equals("")) {
62
					field.setValue(null);
63
				} else if (projetsCombo.getStore().findModel("cpr_nom", field.getRawValue()) == null) {
64
					String contenuBrut = field.getRawValue();
65
					field.setValue(null);
66
					field.setRawValue(contenuBrut);
67
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
68
				}
69
				return retour;
70
			}
71
		});
72
 
73
		final Projet tousProjets = new Projet();
74
		tousProjets.set("nom", i18nC.tousProjets());
75
 
1078 gduche 76
		// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
1369 cyprien 77
		projetsCombo.getCombo().addSelectionChangedListener(new SelectionChangedListener<ModelData>() {
78
			public void selectionChanged(SelectionChangedEvent<ModelData> se) {
79
				if (se.getSelectedItem() != null) {
80
					mediateur.activerChargement(i18nC.chargement());
81
					Projet projet = new Projet (se.getSelectedItem());
82
					mediateur.selectionnerProjetCourant(projet);
83
				}
982 jpm 84
			}
85
		});
1369 cyprien 86
 
87
		projetsCombo.getCombo().addKeyListener(new KeyListener() {
88
			public void componentKeyUp(ComponentEvent ce) {
89
				projetsCombo.getCombo().setRawValue("Tous les projets");
90
				projetsCombo.getCombo().setValue(null);
91
				projetsCombo.getCombo().clearSelections();
92
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
93
					mediateur.selectionnerProjetCourant(tousProjets);
94
					projetsCombo.getCombo().setValue(tousProjets);
95
					projetsCombo.getCombo().setVisible(false);
96
					projetsCombo.getCombo().collapse();
97
					projetsCombo.getCombo().setVisible(true);
98
				}
99
			}
100
		});
101
 
102
		add(projetsCombo);
982 jpm 103
	}
104
 
1369 cyprien 105
	public String getProjet() {
106
		if (projetsCombo.getValeur() != null) {
107
			Projet projet = new Projet(projetsCombo.getValeur());
108
			return projet.getAbreviation();
109
		} else {
110
			return null;
111
		}
112
 
1078 gduche 113
	}
114
 
982 jpm 115
	public void rafraichir(Object nouvellesDonnees) {
1369 cyprien 116
		// empty ...
982 jpm 117
	}
1078 gduche 118
}