Subversion Repositories eFlore/Applications.coel

Rev

Rev 1248 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1248 Rev 1330
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
2
 
-
 
3
import java.util.LinkedList;
-
 
4
import java.util.List;
-
 
5
 
2
 
-
 
3
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.Mediateur;
4
import org.tela_botanica.client.composants.ChampComboBoxRechercheTempsReelPaginable;
7
import org.tela_botanica.client.RegistreId;
5
import org.tela_botanica.client.composants.pagination.ProxyProjets;
8
import org.tela_botanica.client.i18n.Constantes;
-
 
9
import org.tela_botanica.client.images.Images;
6
import org.tela_botanica.client.i18n.Constantes;
10
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
8
import org.tela_botanica.client.modeles.projet.Projet;
11
import org.tela_botanica.client.modeles.projet.Projet;
9
import org.tela_botanica.client.util.Debug;
-
 
10
import org.tela_botanica.client.util.UtilString;
-
 
11
 
-
 
12
import com.extjs.gxt.ui.client.data.ModelData;
12
import org.tela_botanica.client.modeles.projet.ProjetListe;
13
import com.extjs.gxt.ui.client.data.ModelType;
13
 
14
import com.extjs.gxt.ui.client.event.ComponentEvent;
14
import com.extjs.gxt.ui.client.Registry;
15
import com.extjs.gxt.ui.client.event.KeyListener;
15
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
-
 
16
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
16
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
17
import com.extjs.gxt.ui.client.store.ListStore;
17
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
18
import com.extjs.gxt.ui.client.widget.ContentPanel;
18
import com.extjs.gxt.ui.client.widget.ContentPanel;
19
import com.extjs.gxt.ui.client.widget.button.Button;
-
 
20
import com.extjs.gxt.ui.client.widget.form.ComboBox;
19
import com.extjs.gxt.ui.client.widget.form.Field;
21
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
20
import com.extjs.gxt.ui.client.widget.form.Validator;
22
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
21
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
23
import com.google.gwt.core.client.GWT;
22
import com.google.gwt.event.dom.client.KeyCodes;
24
 
23
 
25
public class FiltreVue extends ContentPanel implements Rafraichissable {
24
public class FiltreVue extends ContentPanel implements Rafraichissable {
26
	private Mediateur mediateur = null;
25
	private Mediateur mediateur = null;
27
	private Constantes i18nC = null;
26
	private Constantes i18nC = null;
28
	private ListStore<Projet> projets = null;
27
	private Projet tousProjets = null;
29
	
-
 
30
	private ComboBox<Projet> listeProjets;
28
	
31
	private ProjetListe projetsCache = null;
29
	private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null;
-
 
30
	
32
	
31
	public FiltreVue(Mediateur mediateurCourrant) {
33
	public FiltreVue(Mediateur mediateurCourrant) {
32
		
34
		mediateur = mediateurCourrant;
33
		mediateur = mediateurCourrant;
35
		i18nC = Mediateur.i18nC;
34
		i18nC = Mediateur.i18nC;
-
 
35
		
-
 
36
		tousProjets = new Projet();
-
 
37
		tousProjets.set("nom", i18nC.tousProjets());
36
		
38
		
37
		setHeading(i18nC.titreFiltre());
39
		setHeading(i18nC.titreFiltre());
38
		setLayout(new FitLayout());
40
		setLayout(new FormLayout());
39
		setLayoutOnChange(true);
-
 
40
 
-
 
41
		chargerProjets();
-
 
42
		initialiserListeProjets();
-
 
43
	}
-
 
44
	
-
 
45
	private void chargerProjets() {
-
 
46
		mediateur.selectionnerProjet(this, null);
-
 
47
	}
-
 
48
	
-
 
49
	private void initialiserListeProjets() {
-
 
50
	
41
		setLayoutOnChange(true);
51
		
-
 
52
		// Ajout de la sélection des projets
42
		
53
		listeProjets = new ComboBox<Projet>();
-
 
54
		projets = new ListStore<Projet>();
-
 
55
		listeProjets.setStore(projets);
43
		/*********************************/
56
		listeProjets.setEditable(false);
-
 
57
		listeProjets.setDisplayField("nom");
-
 
58
		listeProjets.setEmptyText(i18nC.txtListeProjetDefaut());
-
 
59
		listeProjets.setTypeAhead(true);
-
 
60
		listeProjets.setTriggerAction(TriggerAction.ALL);  
44
		/**			Champ Projets		**/
-
 
45
		/*********************************/
-
 
46
		
-
 
47
		ModelType modelTypeProjets = new ModelType();
-
 
48
		modelTypeProjets.setRoot("projets");
-
 
49
		modelTypeProjets.setTotalName("nbElements");
-
 
50
		modelTypeProjets.addField("cpr_nom");
61
		  
51
		modelTypeProjets.addField("cpr_id_projet");
62
		
52
		
-
 
53
		String displayNameProjets = "cpr_nom";
-
 
54
		ProxyProjets<ModelData> proxyProjets = new ProxyProjets<ModelData>();
-
 
55
		
-
 
56
		projetsCombo = new ChampComboBoxRechercheTempsReelPaginable(proxyProjets, modelTypeProjets, displayNameProjets);
-
 
57
		projetsCombo.getCombo().setEmptyText("Tous les projets");
-
 
58
		projetsCombo.getCombo().setAllowBlank(true);
63
		// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
59
		projetsCombo.getCombo().setForceSelection(false);
-
 
60
		projetsCombo.getCombo().setEditable(true);
-
 
61
		projetsCombo.getCombo().setValidator(new Validator() {
-
 
62
			public String validate(Field<?> field, String value) {
-
 
63
				String retour = null;
-
 
64
				if (field.getRawValue().equals("")) {
-
 
65
					field.setValue(null);
64
	    listeProjets.addSelectionChangedListener(new SelectionChangedListener<Projet>() {
66
				} else if (projetsCombo.getStore().findModel("cpr_nom", field.getRawValue()) == null) {
65
			
67
					String contenuBrut = field.getRawValue();
-
 
68
					field.setValue(null);
-
 
69
					field.setRawValue(contenuBrut);
66
			public void selectionChanged(SelectionChangedEvent<Projet> se) {
70
					retour = "Veuillez sélectionner une valeur ou laisser le champ vide";
67
				mediateur.activerChargement(i18nC.chargement());
71
				}
68
				mediateur.selectionnerProjetCourant(se.getSelectedItem());
-
 
69
			}
-
 
70
		});
-
 
71
	    
-
 
72
	    add(listeProjets);
-
 
73
	}
-
 
74
	
-
 
75
	private void afficherListeProjets(List projetsRecus) {
72
				return retour;
76
		projets.removeAll();
73
			}
-
 
74
		});
-
 
75
		
-
 
76
		final Projet tousProjets = new Projet();
-
 
77
		tousProjets.set("nom", i18nC.tousProjets());
-
 
78
		
-
 
79
		// Ajout d'un écouteur pour le changement => enregistre la valeur courante du projet dans le registre
-
 
80
		projetsCombo.getCombo().addSelectionChangedListener(new SelectionChangedListener<ModelData>() {
-
 
81
			public void selectionChanged(SelectionChangedEvent<ModelData> se) {
-
 
82
				if (se.getSelectedItem() != null) {
-
 
83
					mediateur.activerChargement(i18nC.chargement());
-
 
84
					Projet projet = new Projet (se.getSelectedItem());
-
 
85
					mediateur.selectionnerProjetCourant(projet);
-
 
86
				}
-
 
87
			}
-
 
88
		});
-
 
89
		
77
		
90
		projetsCombo.getCombo().addKeyListener(new KeyListener() {
-
 
91
			public void componentKeyUp(ComponentEvent ce) {
78
		List<Projet> selection = new LinkedList<Projet>();
92
				projetsCombo.getCombo().setRawValue("Tous les projets");
-
 
93
				projetsCombo.getCombo().setValue(null);
79
		Projet tousProjets = new Projet();
94
				projetsCombo.getCombo().clearSelections();
80
		tousProjets.set("nom", i18nC.tousProjets());
95
				if (ce.getKeyCode() == KeyCodes.KEY_ENTER) {
81
		projetsRecus.add(0, tousProjets);
96
					mediateur.selectionnerProjetCourant(tousProjets);
-
 
97
					projetsCombo.getCombo().setValue(tousProjets);
-
 
98
					projetsCombo.getCombo().setVisible(false);
82
		selection.add(tousProjets);
99
					projetsCombo.getCombo().collapse();
-
 
100
					projetsCombo.getCombo().setVisible(true);
-
 
101
				}
83
		projets.add(projetsRecus);
102
			}
84
		listeProjets.setStore(projets);
103
		});
85
		listeProjets.setSelection(selection);
104
 
86
		layout();
105
		add(projetsCombo);
87
	}
106
	}
88
	
107
	
89
	public void rafraichir(Object nouvellesDonnees) {
108
	public void rafraichir(Object nouvellesDonnees) {
90
		if (nouvellesDonnees instanceof ProjetListe) {
-
 
91
			projetsCache = (ProjetListe) nouvellesDonnees;
-
 
92
			Registry.register(RegistreId.PROJETS, projetsCache);
-
 
93
			afficherListeProjets(projetsCache.toList());
-
 
94
		} else if (nouvellesDonnees instanceof List) {
-
 
95
			List<Projet> projets = (List) nouvellesDonnees;
-
 
96
			Registry.register(RegistreId.PROJETS, projets);
-
 
97
			afficherListeProjets(projets);
-
 
98
		} else {
109
		// empty ...
99
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
-
 
100
		}		
-
 
101
	}
110
	}
102
}
111
}