Subversion Repositories eFlore/Applications.coel

Rev

Rev 1513 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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