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) {
|
1440 |
cyprien |
86 |
mediateur.activerChargement(this, i18nC.chargement());
|
1369 |
cyprien |
87 |
Projet projet = new Projet (se.getSelectedItem());
|
|
|
88 |
mediateur.selectionnerProjetCourant(projet);
|
1440 |
cyprien |
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();
|
1440 |
cyprien |
109 |
mediateur.activerChargement(this, i18nC.chargement());
|
1373 |
cyprien |
110 |
mediateur.selectionnerProjetCourant(tousProjets);
|
1440 |
cyprien |
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 |
}
|