Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 935 Rev 980
1
package org.tela_botanica.client.vues.projet;
1
package org.tela_botanica.client.vues.projet;
2
 
2
 
3
import java.util.ArrayList;
3
import java.util.ArrayList;
4
import java.util.Iterator;
4
import java.util.Iterator;
-
 
5
 
5
 
6
import org.tela_botanica.client.ComposantClass;
6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.modeles.Information;
9
import org.tela_botanica.client.modeles.Information;
9
import org.tela_botanica.client.modeles.MenuApplicationId;
10
import org.tela_botanica.client.modeles.MenuApplicationId;
10
import org.tela_botanica.client.modeles.Valeur;
11
import org.tela_botanica.client.modeles.Valeur;
11
import org.tela_botanica.client.modeles.ValeurListe;
12
import org.tela_botanica.client.modeles.ValeurListe;
12
import org.tela_botanica.client.modeles.projet.Projet;
13
import org.tela_botanica.client.modeles.projet.Projet;
13
import org.tela_botanica.client.util.Debug;
14
import org.tela_botanica.client.util.Debug;
14
import org.tela_botanica.client.util.Pattern;
15
import org.tela_botanica.client.util.Pattern;
15
import org.tela_botanica.client.util.UtilArray;
16
import org.tela_botanica.client.util.UtilArray;
16
import org.tela_botanica.client.util.UtilString;
17
import org.tela_botanica.client.util.UtilString;
17
import org.tela_botanica.client.vues.Formulaire;
18
import org.tela_botanica.client.vues.Formulaire;
18
 
19
 
19
import com.extjs.gxt.ui.client.Style.SortDir;
20
import com.extjs.gxt.ui.client.Style.SortDir;
-
 
21
import com.extjs.gxt.ui.client.event.Events;
20
import com.extjs.gxt.ui.client.store.ListStore;
22
import com.extjs.gxt.ui.client.store.ListStore;
21
import com.extjs.gxt.ui.client.widget.Info;
23
import com.extjs.gxt.ui.client.widget.Info;
22
import com.extjs.gxt.ui.client.widget.MessageBox;
24
import com.extjs.gxt.ui.client.widget.MessageBox;
23
import com.extjs.gxt.ui.client.widget.form.CheckBox;
25
import com.extjs.gxt.ui.client.widget.form.CheckBox;
24
import com.extjs.gxt.ui.client.widget.form.ComboBox;
26
import com.extjs.gxt.ui.client.widget.form.ComboBox;
25
import com.extjs.gxt.ui.client.widget.form.FieldSet;
27
import com.extjs.gxt.ui.client.widget.form.FieldSet;
26
import com.extjs.gxt.ui.client.widget.form.TextArea;
28
import com.extjs.gxt.ui.client.widget.form.TextArea;
27
import com.extjs.gxt.ui.client.widget.form.TextField;
29
import com.extjs.gxt.ui.client.widget.form.TextField;
28
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
30
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
29
import com.extjs.gxt.ui.client.widget.layout.FormData;
31
import com.extjs.gxt.ui.client.widget.layout.FormData;
30
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
32
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
31
 
33
 
32
public class ProjetForm extends Formulaire implements Rafraichissable {
34
public class ProjetForm extends Formulaire implements Rafraichissable {
33
	
35
	
34
	private Projet projet;
36
	private Projet projet;
35
	
37
	
36
	private String listeValeurIndexationDureeId = "dureesIndexation";
38
	private String listeValeurIndexationDureeId = "dureesIndexation";
37
	private int listeValeurIndexationDureeInt = 1072;
39
	private int listeValeurIndexationDureeInt = 1072;
38
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
40
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
39
	private int listeValeurIndexationFrequenceInt = 1073;
41
	private int listeValeurIndexationFrequenceInt = 1073;
40
	private String listeLanguesId = "langues";
42
	private String listeLanguesId = "langues";
41
	private int listeLanguesInt = 1071;	
43
	private int listeLanguesInt = 1071;	
42
	
44
	
43
	private ListStore<Valeur> listeIndexationDuree = null;
45
	private ListStore<Valeur> listeIndexationDuree = null;
44
	private ListStore<Valeur> listeIndexationFrequence = null;
46
	private ListStore<Valeur> listeIndexationFrequence = null;
45
	private ListStore<Valeur> listeLangue = null;
47
	private ListStore<Valeur> listeLangue = null;
46
	
48
	
47
	private ValeurListe valeurListeIndexationDuree = null;
49
	private ValeurListe valeurListeIndexationDuree = null;
48
	private ValeurListe valeurListeIndexationFrequence = null;
50
	private ValeurListe valeurListeIndexationFrequence = null;
49
	private ValeurListe valeurListeLangue = null;
51
	private ValeurListe valeurListeLangue = null;
50
	
52
	
51
	private boolean listeIndexationDureeChargee = false;
53
	private boolean listeIndexationDureeChargee = false;
52
	private boolean listeIndexationFrequenceChargee = false;
54
	private boolean listeIndexationFrequenceChargee = false;
53
	private boolean listeLangueChargee = false;
55
	private boolean listeLangueChargee = false;
54
	
56
	
55
	
57
	
56
	private FieldSet generalitesFieldset = null;
58
	private FieldSet generalitesFieldset = null;
57
	private TextField<String> nomChp = null;
59
	private TextField<String> nomChp = null;
58
	private TextField<String> abreviationChp = null;
60
	private TextField<String> abreviationChp = null;
59
	private TextArea descriptionChp = null;
61
	private TextArea descriptionChp = null;
60
	private TextArea resumeChp = null;
62
	private TextArea resumeChp = null;
61
	private TextField<String> urlChp = null;
63
	private TextField<String> urlChp = null;
62
			
64
			
63
	private FieldSet complementFieldset = null;
65
	private FieldSet complementFieldset = null;
64
	private TextField<String> motsClesChp = null;
66
	private TextField<String> motsClesChp = null;
65
	private TextField<String> citationChp = null;
67
	private TextField<String> citationChp = null;
66
	private TextField<String> licenceChp = null;
68
	private TextField<String> licenceChp = null;
67
	private ComboBox<Valeur> langueChp = null;
69
	private ComboBox<Valeur> langueChp = null;
68
	private CheckBox markPublicChp = null;
70
	private CheckBox markPublicChp = null;
69
	
71
	
70
	private FieldSet indexationFieldset = null;
72
	private FieldSet indexationFieldset = null;
71
	private TextField<String> indexationHeureChp = null;
73
	private TextField<String> indexationHeureChp = null;
72
	private ComboBox<Valeur> indexationDureeChp = null;
74
	private ComboBox<Valeur> indexationDureeChp = null;
73
	private ComboBox<Valeur> indexationFrequenceChp = null;
75
	private ComboBox<Valeur> indexationFrequenceChp = null;
74
 
76
 
75
	private boolean formulaireValideOk = false;
77
	private boolean formulaireValideOk = false;
76
	private boolean projetValideOk = false;
78
	private boolean projetValideOk = false;
77
 
79
 
78
	private Rafraichissable vueExterneARafraichirApresValidation = null;
80
	private Rafraichissable vueExterneARafraichirApresValidation = null;
79
 
81
 
80
 
82
 
81
	public ProjetForm(Mediateur mediateurCourrant, String projetId) {
83
	public ProjetForm(Mediateur mediateurCourrant, String projetId) {
82
		initialiserProjetForm(mediateurCourrant, projetId);
84
		initialiserProjetForm(mediateurCourrant, projetId);
83
	}
85
	}
84
 
86
 
85
	public ProjetForm(Mediateur mediateurCourrant, String projetId, Rafraichissable vueARafraichirApresValidation) {
87
	public ProjetForm(Mediateur mediateurCourrant, String projetId, Rafraichissable vueARafraichirApresValidation) {
86
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
88
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
87
		initialiserProjetForm(mediateurCourrant, projetId);
89
		initialiserProjetForm(mediateurCourrant, projetId);
88
	}
90
	}
89
	
91
	
90
	private void initialiserProjetForm(Mediateur mediateurCourant, String projetId) {
92
	private void initialiserProjetForm(Mediateur mediateurCourant, String projetId) {
91
		projet = new Projet();
93
		projet = new Projet();
92
		projet.setId(projetId);
94
		projet.setId(projetId);
93
		
95
		
94
		String modeDeCreation = (projet.getId().isEmpty() ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
96
		String modeDeCreation = (projet.getId().isEmpty() ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
95
		initialiserFormulaire(mediateurCourant, modeDeCreation, MenuApplicationId.PROJET);
97
		initialiserFormulaire(mediateurCourant, modeDeCreation, MenuApplicationId.PROJET);
96
		
98
		
97
		panneauFormulaire.setLayout(new FlowLayout());
99
		panneauFormulaire.setLayout(new FlowLayout());
98
		actualiserTitreFormulaire();
100
		actualiserTitreFormulaire();
99
		
101
		
100
		creerZoneGeneralites();
102
		creerZoneGeneralites();
101
		panneauFormulaire.add(generalitesFieldset);
103
		panneauFormulaire.add(generalitesFieldset);
102
		
104
		
103
		creerZoneComplement();
105
		creerZoneComplement();
104
		panneauFormulaire.add(complementFieldset);
106
		panneauFormulaire.add(complementFieldset);
105
		
107
		
106
		creerZoneIndexation();
108
		creerZoneIndexation();
107
		panneauFormulaire.add(indexationFieldset);
109
		panneauFormulaire.add(indexationFieldset);
108
		
110
		
109
		creerTabIndex();
111
		creerTabIndex();
110
		
112
		
111
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
113
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
112
			mediateur.selectionnerProjet(this, projetId);
114
			mediateur.selectionnerProjet(this, projetId);
113
		}
115
		}
114
			
116
			
115
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
117
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
116
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
118
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
117
		mediateur.obtenirListeValeurEtRafraichir(this, listeLanguesId);
119
		mediateur.obtenirListeValeurEtRafraichir(this, listeLanguesId);
118
	}
120
	}
119
	
121
	
120
	private void actualiserTitreFormulaire() {
122
	private void actualiserTitreFormulaire() {
121
		String titre = i18nC.projetTitreFormAjout();
123
		String titre = i18nC.projetTitreFormAjout();
122
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
124
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
123
			 titre = i18nC.projetTitreFormModif()+" - "+i18nC.id()+": "+projet.getId();
125
			 titre = i18nC.projetTitreFormModif()+" - "+i18nC.id()+": "+projet.getId();
124
		}
126
		}
125
		panneauFormulaire.setHeading(titre);
127
		panneauFormulaire.setHeading(titre);
126
	}
128
	}
127
			
129
			
128
	private void creerZoneGeneralites() {
130
	private void creerZoneGeneralites() {
129
		FormLayout layout = new FormLayout();
131
		FormLayout layout = new FormLayout();
130
		layout.setLabelWidth(100);
132
		layout.setLabelWidth(100);
131
		
133
		
132
		// Fieldset Infos Générales
134
		// Fieldset Infos Générales
133
		generalitesFieldset = new FieldSet();
135
		generalitesFieldset = new FieldSet();
134
		generalitesFieldset.setHeading(i18nC.projetTitreInfoGenerale());
136
		generalitesFieldset.setHeading(i18nC.projetTitreInfoGenerale());
135
		generalitesFieldset.setCollapsible(true);
137
		generalitesFieldset.setCollapsible(true);
136
		generalitesFieldset.setLayout(layout);
138
		generalitesFieldset.setLayout(layout);
137
		
139
		
138
		nomChp = new TextField<String>();
140
		nomChp = new TextField<String>();
139
		nomChp.setName("cpu");
141
		nomChp.setName("cpu");
140
		nomChp.setFieldLabel("Nom");
142
		nomChp.setFieldLabel("Nom");
-
 
143
		nomChp.addStyleName(ComposantClass.OBLIGATOIRE);
-
 
144
		nomChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
141
		generalitesFieldset.add(nomChp, new FormData(450, 0));
145
		generalitesFieldset.add(nomChp, new FormData(450, 0));
142
		
146
		
143
		abreviationChp = new TextField<String>();
147
		abreviationChp = new TextField<String>();
144
		abreviationChp.setFieldLabel("Abréviation");
148
		abreviationChp.setFieldLabel("Abréviation");
-
 
149
		abreviationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
145
		generalitesFieldset.add(abreviationChp, new FormData(450, 0));
150
		generalitesFieldset.add(abreviationChp, new FormData(450, 0));
146
		
151
		
147
		descriptionChp = new TextArea();
152
		descriptionChp = new TextArea();
148
		descriptionChp.setFieldLabel("Description");
153
		descriptionChp.setFieldLabel("Description");
-
 
154
		descriptionChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
149
		generalitesFieldset.add(descriptionChp, new FormData(450, 0));
155
		generalitesFieldset.add(descriptionChp, new FormData(450, 0));
150
		
156
		
151
		resumeChp = new TextArea();
157
		resumeChp = new TextArea();
152
		resumeChp.setFieldLabel("Résumé");
158
		resumeChp.setFieldLabel("Résumé");
-
 
159
		resumeChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
153
		generalitesFieldset.add(resumeChp, new FormData(450, 0));
160
		generalitesFieldset.add(resumeChp, new FormData(450, 0));
154
		
161
		
155
		urlChp = new TextField<String>();
162
		urlChp = new TextField<String>();
156
		urlChp.setFieldLabel("URL du projet");
163
		urlChp.setFieldLabel("URL du projet");
157
		generalitesFieldset.add(urlChp, new FormData(450, 0));
164
		generalitesFieldset.add(urlChp, new FormData(450, 0));
158
	}
165
	}
159
	
166
	
160
	private void creerZoneComplement() {
167
	private void creerZoneComplement() {
161
		FormLayout layout = new FormLayout();
168
		FormLayout layout = new FormLayout();
162
		layout.setLabelWidth(100);
169
		layout.setLabelWidth(100);
163
		
170
		
164
		// Fieldset Complément
171
		// Fieldset Complément
165
		complementFieldset = new FieldSet();
172
		complementFieldset = new FieldSet();
166
		complementFieldset.setHeading(i18nC.projetTitreComplement());
173
		complementFieldset.setHeading(i18nC.projetTitreComplement());
167
		complementFieldset.setCollapsible(true);
174
		complementFieldset.setCollapsible(true);
168
		complementFieldset.setLayout(layout);
175
		complementFieldset.setLayout(layout);
169
		
176
		
170
		motsClesChp = new TextField<String>();
177
		motsClesChp = new TextField<String>();
171
		motsClesChp.setFieldLabel("Mots Clés");
178
		motsClesChp.setFieldLabel("Mots Clés");
172
		complementFieldset.add(motsClesChp);
179
		complementFieldset.add(motsClesChp);
173
		
180
		
174
		citationChp = new TextField<String>();
181
		citationChp = new TextField<String>();
175
		citationChp.setFieldLabel("Citation");
182
		citationChp.setFieldLabel("Citation");
176
		complementFieldset.add(citationChp);
183
		complementFieldset.add(citationChp);
177
		
184
		
178
		licenceChp = new TextField<String>();
185
		licenceChp = new TextField<String>();
179
		licenceChp.setFieldLabel("Licence");
186
		licenceChp.setFieldLabel("Licence");
180
		complementFieldset.add(licenceChp);
187
		complementFieldset.add(licenceChp);
181
		
188
		
182
		listeLangue = new ListStore<Valeur>();
189
		listeLangue = new ListStore<Valeur>();
183
		langueChp = new ComboBox<Valeur>();
190
		langueChp = new ComboBox<Valeur>();
184
		langueChp.setStore(listeLangue);
191
		langueChp.setStore(listeLangue);
185
		langueChp.setDisplayField("nom");
192
		langueChp.setDisplayField("nom");
186
		langueChp.setEditable(true);
193
		langueChp.setEditable(true);
187
		langueChp.setForceSelection(true);
194
		langueChp.setForceSelection(true);
188
		langueChp.setTypeAhead(true);
195
		langueChp.setTypeAhead(true);
189
		langueChp.setFieldLabel("Langue");
196
		langueChp.setFieldLabel("Langue");
190
		complementFieldset.add(langueChp);
197
		complementFieldset.add(langueChp);
191
		
198
		
192
		markPublicChp = new CheckBox();
199
		markPublicChp = new CheckBox();
193
		markPublicChp.setFieldLabel("Public");
200
		markPublicChp.setFieldLabel("Public");
194
		complementFieldset.add(markPublicChp);
201
		complementFieldset.add(markPublicChp);
195
	}
202
	}
196
	
203
	
197
	private void creerZoneIndexation() {
204
	private void creerZoneIndexation() {
198
		FormLayout layout = new FormLayout();
205
		FormLayout layout = new FormLayout();
199
		layout.setLabelWidth(100);
206
		layout.setLabelWidth(100);
200
		
207
		
201
		// Fieldset Indexation
208
		// Fieldset Indexation
202
		indexationFieldset = new FieldSet();
209
		indexationFieldset = new FieldSet();
203
		indexationFieldset.setHeading(i18nC.projetTitreIndexation());
210
		indexationFieldset.setHeading(i18nC.projetTitreIndexation());
204
		indexationFieldset.setCollapsible(true);
211
		indexationFieldset.setCollapsible(true);
205
		indexationFieldset.setLayout(layout);
212
		indexationFieldset.setLayout(layout);
206
		
213
		
207
		indexationHeureChp = new TextField<String>();
214
		indexationHeureChp = new TextField<String>();
208
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
215
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
209
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
216
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
210
		
217
		
211
		// liste 1073
218
		// liste 1073
212
		listeIndexationFrequence = new ListStore<Valeur>();
219
		listeIndexationFrequence = new ListStore<Valeur>();
213
		indexationFrequenceChp = new ComboBox<Valeur>();
220
		indexationFrequenceChp = new ComboBox<Valeur>();
214
		indexationFrequenceChp.setStore(listeIndexationFrequence);
221
		indexationFrequenceChp.setStore(listeIndexationFrequence);
215
		indexationFrequenceChp.setDisplayField("nom");
222
		indexationFrequenceChp.setDisplayField("nom");
216
		indexationFrequenceChp.setEditable(true);
223
		indexationFrequenceChp.setEditable(true);
217
		indexationFrequenceChp.setForceSelection(true);
224
		indexationFrequenceChp.setForceSelection(true);
218
		indexationFrequenceChp.setTypeAhead(true);
225
		indexationFrequenceChp.setTypeAhead(true);
219
		indexationFrequenceChp.setFieldLabel(i18nC.projetIndexationFrequence());
226
		indexationFrequenceChp.setFieldLabel(i18nC.projetIndexationFrequence());
220
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
227
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
221
		
228
		
222
		// liste 1072
229
		// liste 1072
223
		listeIndexationDuree = new ListStore<Valeur>();
230
		listeIndexationDuree = new ListStore<Valeur>();
224
		indexationDureeChp = new ComboBox<Valeur>();
231
		indexationDureeChp = new ComboBox<Valeur>();
225
		indexationDureeChp.setStore(listeIndexationDuree);
232
		indexationDureeChp.setStore(listeIndexationDuree);
226
		indexationDureeChp.setDisplayField("nom");
233
		indexationDureeChp.setDisplayField("nom");
227
		indexationDureeChp.setEditable(true);
234
		indexationDureeChp.setEditable(true);
228
		indexationDureeChp.setForceSelection(true);
235
		indexationDureeChp.setForceSelection(true);
229
		indexationDureeChp.setTypeAhead(true);
236
		indexationDureeChp.setTypeAhead(true);
230
		indexationDureeChp.setFieldLabel(i18nC.projetIndexationDuree());
237
		indexationDureeChp.setFieldLabel(i18nC.projetIndexationDuree());
231
		indexationFieldset.add(indexationDureeChp, new FormData(80, 0));
238
		indexationFieldset.add(indexationDureeChp, new FormData(80, 0));
232
				
239
				
233
	}
240
	}
234
	
241
	
235
	private void creerTabIndex() {
242
	private void creerTabIndex() {
236
		nomChp.setTabIndex(1);
243
		nomChp.setTabIndex(1);
237
		abreviationChp.setTabIndex(2);
244
		abreviationChp.setTabIndex(2);
238
		descriptionChp.setTabIndex(3);
245
		descriptionChp.setTabIndex(3);
239
		resumeChp.setTabIndex(4);
246
		resumeChp.setTabIndex(4);
240
		urlChp.setTabIndex(5);
247
		urlChp.setTabIndex(5);
241
				
248
				
242
		motsClesChp.setTabIndex(6);
249
		motsClesChp.setTabIndex(6);
243
		citationChp.setTabIndex(7);
250
		citationChp.setTabIndex(7);
244
		licenceChp.setTabIndex(8);
251
		licenceChp.setTabIndex(8);
245
		langueChp.setTabIndex(9);
252
		langueChp.setTabIndex(9);
246
		markPublicChp.setTabIndex(10);
253
		markPublicChp.setTabIndex(10);
247
		
254
		
248
		indexationHeureChp.setTabIndex(11);
255
		indexationHeureChp.setTabIndex(11);
249
		indexationFrequenceChp.setTabIndex(12);
256
		indexationFrequenceChp.setTabIndex(12);
250
		indexationDureeChp.setTabIndex(13);
257
		indexationDureeChp.setTabIndex(13);
251
		
258
		
252
		nomChp.focus();
259
		nomChp.focus();
253
	}
260
	}
254
 
261
 
255
	public void rafraichir(Object nouvellesDonnees) {
262
	public void rafraichir(Object nouvellesDonnees) {
256
		if (nouvellesDonnees instanceof Information) {
263
		if (nouvellesDonnees instanceof Information) {
257
			Information info = (Information) nouvellesDonnees;
264
			Information info = (Information) nouvellesDonnees;
258
			rafraichirInformation(info);
265
			rafraichirInformation(info);
259
		} else if (nouvellesDonnees instanceof ValeurListe) {
266
		} else if (nouvellesDonnees instanceof ValeurListe) {
260
			ValeurListe valeursListe = (ValeurListe) nouvellesDonnees;
267
			ValeurListe valeursListe = (ValeurListe) nouvellesDonnees;
261
			rafraichirValeurListe(valeursListe);
268
			rafraichirValeurListe(valeursListe);
262
			Debug.log("une liste de valeurs est arrivée "+valeursListe.getId());
269
			Debug.log("une liste de valeurs est arrivée "+valeursListe.getId());
263
		}
270
		}
264
		
271
		
265
		if (etreValide()) {
272
		if (etreValide()) {
266
			initialiserValidation();
273
			initialiserValidation();
267
			repandreRafraichissement();
274
			repandreRafraichissement();
268
			controlerFermetureApresRafraichissement();
275
			controlerFermetureApresRafraichissement();
269
		}
276
		}
270
	}
277
	}
271
 
278
 
272
	private void rafraichirInformation(Information info) {
279
	private void rafraichirInformation(Information info) {
273
		final String type = info.getType();
280
		final String type = info.getType();
274
		
281
		
275
		// Gestion des problèmes
282
		// Gestion des problèmes
276
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
283
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
277
			Debug.log("MESSAGES:\n"+info.getMessages().toString());
284
			Debug.log("MESSAGES:\n"+info.getMessages().toString());
278
		}
285
		}
279
		
286
		
280
		// Gestion des actions
287
		// Gestion des actions
281
		if (type.equals("selection_projet")) {
288
		if (type.equals("selection_projet")) {
282
			if (info.getDonnee(0) != null) {
289
			if (info.getDonnee(0) != null) {
283
				projet = (Projet) info.getDonnee(0);
290
				projet = (Projet) info.getDonnee(0);
284
			}
291
			}
285
			peuplerFormulaire();
292
			peuplerFormulaire();
286
			actualiserTitreFormulaire();
293
			actualiserTitreFormulaire();
287
		} else if (type.equals("modif_projet") || type.equals("ajout_projet") ) {
294
		} else if (type.equals("modif_projet") || type.equals("ajout_projet") ) {
288
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
295
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
289
				String projetId = (String) info.getDonnee(0);
296
				String projetId = (String) info.getDonnee(0);
290
				projet.setId(projetId);
297
				projet.setId(projetId);
291
				projetValideOk = true;
298
				projetValideOk = true;
292
			}
299
			}
293
		}
300
		}
294
		
301
		
295
		// Gestion des messages
302
		// Gestion des messages
296
		if (type.equals("selection_projet")) {
303
		if (type.equals("selection_projet")) {
297
			Info.display(i18nC.projetTitreFormModif(), info.toString());
304
			Info.display(i18nC.projetTitreFormModif(), info.toString());
298
		} else if (type.equals("modif_projet")) {
305
		} else if (type.equals("modif_projet")) {
299
			Info.display(i18nC.projetTitreFormModif(), info.toString());
306
			Info.display(i18nC.projetTitreFormModif(), info.toString());
300
		} else if (type.equals("ajout_projet")) {
307
		} else if (type.equals("ajout_projet")) {
301
			if (!UtilString.isEmpty(projet.getId())) {
308
			if (!UtilString.isEmpty(projet.getId())) {
302
				info.setMessage("Le projet '"+projet.getId()+"' a bien été ajouté");
309
				info.setMessage("Le projet '"+projet.getId()+"' a bien été ajouté");
303
			}
310
			}
304
			Info.display(i18nC.projetTitreFormAjout(), info.toString());
311
			Info.display(i18nC.projetTitreFormAjout(), info.toString());
305
		}
312
		}
306
	}
313
	}
307
	
314
	
308
	private void rafraichirValeurListe(ValeurListe valeursListe) {
315
	private void rafraichirValeurListe(ValeurListe valeursListe) {
309
		if (valeursListe.getId() == listeValeurIndexationDureeInt) {
316
		if (valeursListe.getId() == listeValeurIndexationDureeInt) {
310
			valeurListeIndexationDuree = valeursListe;
317
			valeurListeIndexationDuree = valeursListe;
311
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
318
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
312
				listeIndexationDuree.add(valeursListe.get(it.next()));
319
				listeIndexationDuree.add(valeursListe.get(it.next()));
313
				listeIndexationDuree.sort("id_valeur", SortDir.ASC);
320
				listeIndexationDuree.sort("id_valeur", SortDir.ASC);
314
			}
321
			}
315
			listeIndexationDureeChargee = true;
322
			listeIndexationDureeChargee = true;
316
			
323
			
317
			if (mode.equals(MODE_MODIFIER)) {
324
			if (mode.equals(MODE_MODIFIER)) {
318
				if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
325
				if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
319
					indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
326
					indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
320
					indexationDureeChp.validate();
327
					indexationDureeChp.validate();
321
				}
328
				}
322
			}
329
			}
323
			indexationDureeChp.expand();
330
			indexationDureeChp.expand();
324
		} else if (valeursListe.getId() == listeValeurIndexationFrequenceInt) {
331
		} else if (valeursListe.getId() == listeValeurIndexationFrequenceInt) {
325
			valeurListeIndexationFrequence = valeursListe;
332
			valeurListeIndexationFrequence = valeursListe;
326
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
333
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
327
				listeIndexationFrequence.add(valeursListe.get(it.next()));
334
				listeIndexationFrequence.add(valeursListe.get(it.next()));
328
				listeIndexationFrequence.sort("id_valeur", SortDir.ASC);
335
				listeIndexationFrequence.sort("id_valeur", SortDir.ASC);
329
			}
336
			}
330
			listeIndexationFrequenceChargee = true;
337
			listeIndexationFrequenceChargee = true;
331
			
338
			
332
			if (mode.equals(MODE_MODIFIER)) {
339
			if (mode.equals(MODE_MODIFIER)) {
333
				if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
340
				if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
334
					indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
341
					indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
335
					indexationFrequenceChp.validate();
342
					indexationFrequenceChp.validate();
336
				}
343
				}
337
			}
344
			}
338
			indexationFrequenceChp.expand();
345
			indexationFrequenceChp.expand();
339
		} else if (valeursListe.getId() == listeLanguesInt) {
346
		} else if (valeursListe.getId() == listeLanguesInt) {
340
			valeurListeLangue = valeursListe;
347
			valeurListeLangue = valeursListe;
341
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
348
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
342
				listeLangue.add(valeursListe.get(it.next()));
349
				listeLangue.add(valeursListe.get(it.next()));
343
				listeLangue.sort("id_valeur", SortDir.ASC);
350
				listeLangue.sort("id_valeur", SortDir.ASC);
344
			}
351
			}
345
			listeLangueChargee = true;
352
			listeLangueChargee = true;
346
			
353
			
347
			if (mode.equals(MODE_MODIFIER)) {
354
			if (mode.equals(MODE_MODIFIER)) {
348
				if (valeurListeLangue.get(projet.getLangue()) != null) {
355
				if (valeurListeLangue.get(projet.getLangue()) != null) {
349
					langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
356
					langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
350
					langueChp.validate();
357
					langueChp.validate();
351
				}
358
				}
352
			}
359
			}
353
		}
360
		}
354
	}
361
	}
355
		
362
		
356
	private Boolean etreValide() {
363
	private Boolean etreValide() {
357
		Boolean valide = false;
364
		Boolean valide = false;
358
		if (formulaireValideOk && projetValideOk) {
365
		if (formulaireValideOk && projetValideOk) {
359
			valide = true;
366
			valide = true;
360
		}
367
		}
361
		return valide;
368
		return valide;
362
	}
369
	}
363
	
370
	
364
	private void initialiserValidation() {
371
	private void initialiserValidation() {
365
		formulaireValideOk = false;
372
		formulaireValideOk = false;
366
		projetValideOk = false;
373
		projetValideOk = false;
367
	}
374
	}
368
	
375
	
369
	private void repandreRafraichissement() {
376
	private void repandreRafraichissement() {
370
		if (vueExterneARafraichirApresValidation != null) {
377
		if (vueExterneARafraichirApresValidation != null) {
371
			String type = "projet_modifie";
378
			String type = "projet_modifie";
372
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
379
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
373
				type = "projet_ajoute";
380
				type = "projet_ajoute";
374
			}
381
			}
375
			Information info = new Information(type);
382
			Information info = new Information(type);
376
			info.setDonnee(0, projet);
383
			info.setDonnee(0, projet);
377
			vueExterneARafraichirApresValidation.rafraichir(info);
384
			vueExterneARafraichirApresValidation.rafraichir(info);
378
		}
385
		}
379
	}
386
	}
380
	
387
	
381
	public boolean soumettreFormulaire() {
388
	public boolean soumettreFormulaire() {
382
		formulaireValideOk = verifierFormulaire();
389
		formulaireValideOk = verifierFormulaire();
383
		if (formulaireValideOk) {
390
		if (formulaireValideOk) {
384
			Projet projetCollecte = collecterProjet();
391
			Projet projetCollecte = collecterProjet();
385
			if (projetCollecte != null) {
392
			if (projetCollecte != null) {
386
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
393
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
387
					mediateur.ajouterProjet(this, projetCollecte);
394
					mediateur.ajouterProjet(this, projetCollecte);
388
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
395
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
389
					mediateur.modifierProjet(this, projetCollecte);
396
					mediateur.modifierProjet(this, projetCollecte);
390
				}
397
				}
391
			}
398
			}
392
		}
399
		}
393
		return formulaireValideOk;
400
		return formulaireValideOk;
394
	}
401
	}
395
	
402
	
396
	public boolean verifierFormulaire() {
403
	public boolean verifierFormulaire() {
397
		boolean valide = true;
404
		boolean valide = true;
398
		ArrayList<String> messages = new ArrayList<String>();
405
		ArrayList<String> messages = new ArrayList<String>();
399
		
406
		
400
		String titre = nomChp.getValue();
407
		String titre = nomChp.getValue();
401
		if (titre == null || titre.equals("")) {
408
		if (titre == null || titre.equals("")) {
402
			messages.add("Veuillez saisir le nom du projet !");
409
			messages.add("Veuillez saisir le nom du projet !");
403
		}
410
		}
404
		
411
		
405
		String abr = abreviationChp.getValue();
412
		String abr = abreviationChp.getValue();
406
		if (abr == null || abr.equals("")) {
413
		if (abr == null || abr.equals("")) {
407
			messages.add("Veuillez saisir l'abréviation du projet !");
414
			messages.add("Veuillez saisir l'abréviation du projet !");
408
		}
415
		}
409
		
416
		
410
		String desc = descriptionChp.getValue();
417
		String desc = descriptionChp.getValue();
411
		if (desc == null || desc.equals("")) {
418
		if (desc == null || desc.equals("")) {
412
			messages.add("Veuillez saisir la description du projet !");
419
			messages.add("Veuillez saisir la description du projet !");
413
		}
420
		}
414
		
421
		
415
		String resume = resumeChp.getValue();
422
		String resume = resumeChp.getValue();
416
		if (resume == null || resume.equals("")) {
423
		if (resume == null || resume.equals("")) {
417
			messages.add("Veuillez saisir le résumé du projet !");
424
			messages.add("Veuillez saisir le résumé du projet !");
418
		}
425
		}
419
		
426
		
420
		String uri = urlChp.getValue();
427
		String uri = urlChp.getValue();
421
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
428
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
422
			messages.add("L'URL saisie n'est pas valide !");
429
			messages.add("L'URL saisie n'est pas valide !");
423
		}
430
		}
424
		
431
		
425
		String heure = indexationHeureChp.getValue();
432
		String heure = indexationHeureChp.getValue();
426
		if (!UtilString.isEmpty(heure)) {
433
		if (!UtilString.isEmpty(heure)) {
427
			if (!heure.matches(Pattern.heureMinute)) {
434
			if (!heure.matches(Pattern.heureMinute)) {
428
				messages.add("L'heureMinute d'indexation saisie n'est pas valide !");
435
				messages.add("L'heureMinute d'indexation saisie n'est pas valide !");
429
			}
436
			}
430
		}
437
		}
431
		
438
		
432
		if (messages.size() != 0) {
439
		if (messages.size() != 0) {
433
			String[] tableauDeMessages = {};
440
			String[] tableauDeMessages = {};
434
			tableauDeMessages = messages.toArray(tableauDeMessages);
441
			tableauDeMessages = messages.toArray(tableauDeMessages);
435
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
442
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
436
			valide = false;
443
			valide = false;
437
		}
444
		}
438
		return valide;		
445
		return valide;		
439
	}
446
	}
440
	
447
	
441
	private void peuplerFormulaire() {
448
	private void peuplerFormulaire() {
442
		nomChp.setValue(projet.getNom());
449
		nomChp.setValue(projet.getNom());
443
		abreviationChp.setValue(projet.getAbreviation());
450
		abreviationChp.setValue(projet.getAbreviation());
444
		descriptionChp.setValue(projet.getDescription());
451
		descriptionChp.setValue(projet.getDescription());
445
		resumeChp.setValue(projet.getResume());
452
		resumeChp.setValue(projet.getResume());
446
		urlChp.setValue(projet.getUrl());
453
		urlChp.setValue(projet.getUrl());
447
		
454
		
448
		motsClesChp.setValue(projet.getMotsCles());
455
		motsClesChp.setValue(projet.getMotsCles());
449
		citationChp.setValue(projet.getCitation());
456
		citationChp.setValue(projet.getCitation());
450
		licenceChp.setValue(projet.getLicence());
457
		licenceChp.setValue(projet.getLicence());
451
				
458
				
452
		if (projet.getMarkPublic().equals("1")) {
459
		if (projet.getMarkPublic().equals("1")) {
453
			markPublicChp.setValue(true);
460
			markPublicChp.setValue(true);
454
		} else {
461
		} else {
455
			markPublicChp.setValue(false);
462
			markPublicChp.setValue(false);
456
		}
463
		}
457
		
464
		
458
		if (listeLangueChargee) {
465
		if (listeLangueChargee) {
459
			if(valeurListeLangue.get(projet.getLangue()) != null) {
466
			if(valeurListeLangue.get(projet.getLangue()) != null) {
460
				langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
467
				langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
461
				langueChp.validate();
468
				langueChp.validate();
462
			}
469
			}
463
		}
470
		}
464
		
471
		
465
		if (listeIndexationFrequenceChargee) {
472
		if (listeIndexationFrequenceChargee) {
466
			if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
473
			if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
467
				indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
474
				indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
468
				indexationFrequenceChp.validate();
475
				indexationFrequenceChp.validate();
469
			}
476
			}
470
		}
477
		}
471
		
478
		
472
		if (listeIndexationDureeChargee) {
479
		if (listeIndexationDureeChargee) {
473
			if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
480
			if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
474
				indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
481
				indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
475
				indexationDureeChp.validate();
482
				indexationDureeChp.validate();
476
			}
483
			}
477
		}
484
		}
478
		
485
		
479
		String[] heureTab = projet.getIndexationHeure().split(":");
486
		String[] heureTab = projet.getIndexationHeure().split(":");
480
		if (heureTab.length > 1) {
487
		if (heureTab.length > 1) {
481
			String heure = heureTab[0]+":"+heureTab[1];
488
			String heure = heureTab[0]+":"+heureTab[1];
482
			if (heure.matches(Pattern.heureMinute)) {
489
			if (heure.matches(Pattern.heureMinute)) {
483
				indexationHeureChp.setValue(heure);
490
				indexationHeureChp.setValue(heure);
484
			}
491
			}
485
		}
492
		}
486
		
493
		
487
		doLayout(true);
494
		doLayout(true);
488
	}
495
	}
489
	
496
	
490
	private Projet collecterProjet() {
497
	private Projet collecterProjet() {
491
		Projet projetCollecte = (Projet) projet.cloner(new Projet());
498
		Projet projetCollecte = (Projet) projet.cloner(new Projet());
492
		
499
		
493
		projetCollecte.setNom(nomChp.getValue());
500
		projetCollecte.setNom(nomChp.getValue());
494
		projetCollecte.setAbreviation(abreviationChp.getValue());
501
		projetCollecte.setAbreviation(abreviationChp.getValue());
495
		projetCollecte.setDescription(descriptionChp.getValue());
502
		projetCollecte.setDescription(descriptionChp.getValue());
496
		projetCollecte.setResume(resumeChp.getValue());
503
		projetCollecte.setResume(resumeChp.getValue());
497
		projetCollecte.setUrl(urlChp.getValue());
504
		projetCollecte.setUrl(urlChp.getValue());
498
		
505
		
499
		projetCollecte.setMotsCles(motsClesChp.getValue());
506
		projetCollecte.setMotsCles(motsClesChp.getValue());
500
		projetCollecte.setCitation(citationChp.getValue());
507
		projetCollecte.setCitation(citationChp.getValue());
501
		projetCollecte.setLicence(licenceChp.getValue());
508
		projetCollecte.setLicence(licenceChp.getValue());
502
		if (langueChp.getValue() != null) {
509
		if (langueChp.getValue() != null) {
503
			projetCollecte.setLangue(langueChp.getValue().getId());
510
			projetCollecte.setLangue(langueChp.getValue().getId());
504
		}
511
		}
505
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
512
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
506
		projetCollecte.setMarkPublic(markPublic);
513
		projetCollecte.setMarkPublic(markPublic);
507
		
514
		
508
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
515
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
509
		if (indexationFrequenceChp.getValue() != null) {
516
		if (indexationFrequenceChp.getValue() != null) {
510
			projetCollecte.setIndexationFreq(indexationFrequenceChp.getValue().getId());
517
			projetCollecte.setIndexationFreq(indexationFrequenceChp.getValue().getId());
511
		}
518
		}
512
		if (indexationDureeChp.getValue() != null) {
519
		if (indexationDureeChp.getValue() != null) {
513
			projetCollecte.setIndexationDuree(indexationDureeChp.getValue().getId());
520
			projetCollecte.setIndexationDuree(indexationDureeChp.getValue().getId());
514
		}
521
		}
515
 
522
 
516
		Projet projetARetourner = null;
523
		Projet projetARetourner = null;
517
		if (!projetCollecte.comparer(projet)) {
524
		if (!projetCollecte.comparer(projet)) {
518
			projetARetourner = projet = projetCollecte;
525
			projetARetourner = projet = projetCollecte;
519
			Debug.log(projetARetourner.toString());
526
			Debug.log(projetARetourner.toString());
520
		}
527
		}
521
		return projetARetourner;
528
		return projetARetourner;
522
	}
529
	}
523
	
530
	
524
	public void reinitialiserFormulaire() {
531
	public void reinitialiserFormulaire() {
525
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
532
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
526
			mediateur.afficherFormProjet(projet.getId());
533
			mediateur.afficherFormProjet(projet.getId());
527
		} else {
534
		} else {
528
			mediateur.afficherFormProjet(null);
535
			mediateur.afficherFormProjet(null);
529
		}
536
		}
530
	}
537
	}
531
 
538
 
532
}
539
}