Subversion Repositories eFlore/Applications.coel

Rev

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