Subversion Repositories eFlore/Applications.coel

Rev

Rev 1102 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1102 Rev 1115
Line 1... Line 1...
1
package org.tela_botanica.client.vues.projet;
1
package org.tela_botanica.client.vues.projet;
Line 2... Line 2...
2
 
2
 
3
import java.util.ArrayList;
-
 
Line 4... Line 3...
4
import java.util.Iterator;
3
import java.util.ArrayList;
5
 
4
 
-
 
5
import org.tela_botanica.client.ComposantClass;
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.composants.ChampComboBoxListeValeurs;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
8
import org.tela_botanica.client.interfaces.Rafraichissable;
9
import org.tela_botanica.client.modeles.Information;
-
 
10
import org.tela_botanica.client.modeles.MenuApplicationId;
-
 
11
import org.tela_botanica.client.modeles.Valeur;
9
import org.tela_botanica.client.modeles.Information;
12
import org.tela_botanica.client.modeles.ValeurListe;
10
import org.tela_botanica.client.modeles.MenuApplicationId;
13
import org.tela_botanica.client.modeles.projet.Projet;
11
import org.tela_botanica.client.modeles.projet.Projet;
14
import org.tela_botanica.client.util.Debug;
12
import org.tela_botanica.client.util.Debug;
15
import org.tela_botanica.client.util.Pattern;
13
import org.tela_botanica.client.util.Pattern;
16
import org.tela_botanica.client.util.UtilArray;
14
import org.tela_botanica.client.util.UtilArray;
Line 17... Line -...
17
import org.tela_botanica.client.util.UtilString;
-
 
18
import org.tela_botanica.client.vues.Formulaire;
15
import org.tela_botanica.client.util.UtilString;
19
 
-
 
20
import com.extjs.gxt.ui.client.Style.SortDir;
16
import org.tela_botanica.client.vues.Formulaire;
21
import com.extjs.gxt.ui.client.event.Events;
17
 
22
import com.extjs.gxt.ui.client.store.ListStore;
18
import com.extjs.gxt.ui.client.event.Events;
23
import com.extjs.gxt.ui.client.widget.Info;
-
 
24
import com.extjs.gxt.ui.client.widget.MessageBox;
19
import com.extjs.gxt.ui.client.widget.Info;
25
import com.extjs.gxt.ui.client.widget.form.CheckBox;
20
import com.extjs.gxt.ui.client.widget.MessageBox;
26
import com.extjs.gxt.ui.client.widget.form.ComboBox;
21
import com.extjs.gxt.ui.client.widget.form.CheckBox;
27
import com.extjs.gxt.ui.client.widget.form.FieldSet;
22
import com.extjs.gxt.ui.client.widget.form.FieldSet;
28
import com.extjs.gxt.ui.client.widget.form.TextArea;
23
import com.extjs.gxt.ui.client.widget.form.TextArea;
Line 34... Line 29...
34
public class ProjetForm extends Formulaire implements Rafraichissable {
29
public class ProjetForm extends Formulaire implements Rafraichissable {
Line 35... Line 30...
35
	
30
	
Line 36... Line 31...
36
	private Projet projet;
31
	private Projet projet;
37
	
-
 
38
	private String listeValeurIndexationDureeId = "dureesIndexation";
32
	
39
	private int listeValeurIndexationDureeInt = 1072;
-
 
40
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
33
	private String listeValeurIndexationDureeId = "dureesIndexation";
41
	private int listeValeurIndexationFrequenceInt = 1073;
-
 
42
	private String listeLanguesId = "langues";
-
 
43
	private int listeLanguesInt = 1071;	
-
 
44
	
-
 
45
	private ListStore<Valeur> listeIndexationDuree = null;
-
 
46
	private ListStore<Valeur> listeIndexationFrequence = null;
-
 
47
	private ListStore<Valeur> listeLangue = null;
-
 
48
	
-
 
49
	private ValeurListe valeurListeIndexationDuree = null;
-
 
50
	private ValeurListe valeurListeIndexationFrequence = null;
-
 
51
	private ValeurListe valeurListeLangue = null;
-
 
52
	
-
 
53
	private boolean listeIndexationDureeChargee = false;
-
 
54
	private boolean listeIndexationFrequenceChargee = false;
-
 
Line 55... Line 34...
55
	private boolean listeLangueChargee = false;
34
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
56
	
35
	private String listeLanguesId = "langues";
57
	
36
	
58
	private FieldSet generalitesFieldset = null;
37
	private FieldSet generalitesFieldset = null;
Line 64... Line 43...
64
			
43
			
65
	private FieldSet complementFieldset = null;
44
	private FieldSet complementFieldset = null;
66
	private TextField<String> motsClesChp = null;
45
	private TextField<String> motsClesChp = null;
67
	private TextField<String> citationChp = null;
46
	private TextField<String> citationChp = null;
68
	private TextField<String> licenceChp = null;
47
	private TextField<String> licenceChp = null;
69
	private ComboBox<Valeur> langueChp = null;
48
	private ChampComboBoxListeValeurs langueChp = null;
Line 70... Line 49...
70
	private CheckBox markPublicChp = null;
49
	private CheckBox markPublicChp = null;
71
	
50
	
72
	private FieldSet indexationFieldset = null;
51
	private FieldSet indexationFieldset = null;
73
	private TextField<String> indexationHeureChp = null;
52
	private TextField<String> indexationHeureChp = null;
Line 74... Line 53...
74
	private ComboBox<Valeur> indexationDureeChp = null;
53
	private ChampComboBoxListeValeurs indexationDureeChp = null;
75
	private ComboBox<Valeur> indexationFrequenceChp = null;
54
	private ChampComboBoxListeValeurs indexationFrequenceChp = null;
Line 76... Line 55...
76
 
55
 
Line 114... Line 93...
114
			mediateur.selectionnerProjet(this, projetId);
93
			mediateur.selectionnerProjet(this, projetId);
115
		}
94
		}
Line 116... Line 95...
116
			
95
			
117
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
96
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
118
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
-
 
119
		mediateur.obtenirListeValeurEtRafraichir(this, listeLanguesId);
97
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
Line 120... Line 98...
120
	}
98
	}
121
	
99
	
122
	private void genererTitreFormulaire() {
100
	private void genererTitreFormulaire() {
Line 179... Line 157...
179
		complementFieldset.setHeading(i18nC.projetTitreComplement());
157
		complementFieldset.setHeading(i18nC.projetTitreComplement());
180
		complementFieldset.setCollapsible(true);
158
		complementFieldset.setCollapsible(true);
181
		complementFieldset.setLayout(layout);
159
		complementFieldset.setLayout(layout);
Line 182... Line 160...
182
		
160
		
183
		motsClesChp = new TextField<String>();
161
		motsClesChp = new TextField<String>();
184
		motsClesChp.setFieldLabel("Mots Clés");
162
		motsClesChp.setFieldLabel(i18nC.projetMotsCles());
Line 185... Line 163...
185
		complementFieldset.add(motsClesChp);
163
		complementFieldset.add(motsClesChp, new FormData(450, 0));
186
		
164
		
187
		citationChp = new TextField<String>();
165
		citationChp = new TextField<String>();
Line 188... Line 166...
188
		citationChp.setFieldLabel("Citation");
166
		citationChp.setFieldLabel(i18nC.projetCitation());
189
		complementFieldset.add(citationChp);
167
		complementFieldset.add(citationChp, new FormData(450, 0));
190
		
168
		
Line 191... Line -...
191
		licenceChp = new TextField<String>();
-
 
192
		licenceChp.setFieldLabel("Licence");
169
		licenceChp = new TextField<String>();
193
		complementFieldset.add(licenceChp);
-
 
194
		
-
 
195
		listeLangue = new ListStore<Valeur>();
-
 
196
		langueChp = new ComboBox<Valeur>();
-
 
197
		langueChp.setStore(listeLangue);
-
 
198
		langueChp.setDisplayField("nom");
-
 
199
		langueChp.setEditable(true);
170
		licenceChp.setFieldLabel(i18nC.projetLicence());
Line 200... Line 171...
200
		langueChp.setForceSelection(true);
171
		complementFieldset.add(licenceChp, new FormData(450, 0));
201
		langueChp.setTypeAhead(true);
172
		
202
		langueChp.setFieldLabel("Langue");
173
		langueChp = new ChampComboBoxListeValeurs(i18nC.projetLangue(), listeLanguesId);
203
		complementFieldset.add(langueChp);
174
		complementFieldset.add(langueChp, new FormData(200, 0));
Line 217... Line 188...
217
		indexationFieldset.setCollapsible(true);
188
		indexationFieldset.setCollapsible(true);
218
		indexationFieldset.setLayout(layout);
189
		indexationFieldset.setLayout(layout);
Line 219... Line 190...
219
		
190
		
220
		indexationHeureChp = new TextField<String>();
191
		indexationHeureChp = new TextField<String>();
-
 
192
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
221
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
193
		indexationHeureChp.setToolTip(i18nC.projetMessageHeureMinute());
Line 222... Line -...
222
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
-
 
223
		
-
 
224
		// liste 1073
-
 
225
		listeIndexationFrequence = new ListStore<Valeur>();
-
 
226
		indexationFrequenceChp = new ComboBox<Valeur>();
-
 
227
		indexationFrequenceChp.setStore(listeIndexationFrequence);
-
 
228
		indexationFrequenceChp.setDisplayField("nom");
-
 
229
		indexationFrequenceChp.setEditable(true);
-
 
230
		indexationFrequenceChp.setForceSelection(true);
194
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
231
		indexationFrequenceChp.setTypeAhead(true);
195
		
Line 232... Line -...
232
		indexationFrequenceChp.setFieldLabel(i18nC.projetIndexationFrequence());
-
 
233
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
-
 
234
		
-
 
235
		// liste 1072
-
 
236
		listeIndexationDuree = new ListStore<Valeur>();
-
 
237
		indexationDureeChp = new ComboBox<Valeur>();
-
 
238
		indexationDureeChp.setStore(listeIndexationDuree);
-
 
239
		indexationDureeChp.setDisplayField("nom");
-
 
240
		indexationDureeChp.setEditable(true);
196
		indexationFrequenceChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationFrequence(), listeValeurIndexationFrequenceId);
241
		indexationDureeChp.setForceSelection(true);
197
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
Line 242... Line 198...
242
		indexationDureeChp.setTypeAhead(true);
198
		
Line 243... Line 199...
243
		indexationDureeChp.setFieldLabel(i18nC.projetIndexationDuree());
199
		indexationDureeChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationDuree(), listeValeurIndexationDureeId);
Line 267... Line 223...
267
 
223
 
268
	public void rafraichir(Object nouvellesDonnees) {
224
	public void rafraichir(Object nouvellesDonnees) {
269
		if (nouvellesDonnees instanceof Information) {
225
		if (nouvellesDonnees instanceof Information) {
270
			Information info = (Information) nouvellesDonnees;
226
			Information info = (Information) nouvellesDonnees;
271
			rafraichirInformation(info);
227
			rafraichirInformation(info);
272
		} else if (nouvellesDonnees instanceof ValeurListe) {
228
		} else {
273
			ValeurListe valeursListe = (ValeurListe) nouvellesDonnees;
-
 
274
			rafraichirValeurListe(valeursListe);
229
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
Line 275... Line 230...
275
		}
230
		}
276
		
231
		
277
		if (etreValide()) {
232
		if (etreValide()) {
Line 319... Line 274...
319
			} else {
274
			} else {
320
				Info.display(i18nC.projetTitreFormAjout(), info.toString());
275
				Info.display(i18nC.projetTitreFormAjout(), info.toString());
321
			}
276
			}
322
		}
277
		}
323
	}
278
	}
324
	
-
 
325
	private void rafraichirValeurListe(ValeurListe valeursListe) {
-
 
326
		if (valeursListe.getId() == listeValeurIndexationDureeInt) {
-
 
327
			valeurListeIndexationDuree = valeursListe;
-
 
328
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
-
 
329
				listeIndexationDuree.add(valeursListe.get(it.next()));
-
 
330
				listeIndexationDuree.sort("id_valeur", SortDir.ASC);
-
 
331
			}
-
 
332
			listeIndexationDureeChargee = true;
-
 
333
			
-
 
334
			if (mode.equals(MODE_MODIFIER)) {
-
 
335
				if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
-
 
336
					indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
-
 
337
					indexationDureeChp.validate();
-
 
338
				}
-
 
339
			}
-
 
340
			indexationDureeChp.expand();
-
 
341
		} else if (valeursListe.getId() == listeValeurIndexationFrequenceInt) {
-
 
342
			valeurListeIndexationFrequence = valeursListe;
-
 
343
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
-
 
344
				listeIndexationFrequence.add(valeursListe.get(it.next()));
-
 
345
				listeIndexationFrequence.sort("id_valeur", SortDir.ASC);
-
 
346
			}
-
 
347
			listeIndexationFrequenceChargee = true;
-
 
348
			
-
 
349
			if (mode.equals(MODE_MODIFIER)) {
-
 
350
				if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
-
 
351
					indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
-
 
352
					indexationFrequenceChp.validate();
-
 
353
				}
-
 
354
			}
-
 
355
			indexationFrequenceChp.expand();
-
 
356
		} else if (valeursListe.getId() == listeLanguesInt) {
-
 
357
			valeurListeLangue = valeursListe;
-
 
358
			for (Iterator<String> it  = valeursListe.keySet().iterator(); it.hasNext();) {
-
 
359
				listeLangue.add(valeursListe.get(it.next()));
-
 
360
				listeLangue.sort("id_valeur", SortDir.ASC);
-
 
361
			}
-
 
362
			listeLangueChargee = true;
-
 
363
			
-
 
364
			if (mode.equals(MODE_MODIFIER)) {
-
 
365
				if (valeurListeLangue.get(projet.getLangue()) != null) {
-
 
366
					langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
-
 
367
					langueChp.validate();
-
 
368
				}
-
 
369
			}
-
 
370
		}
-
 
371
	}
-
 
Line 372... Line 279...
372
		
279
		
373
	private Boolean etreValide() {
280
	private Boolean etreValide() {
374
		Boolean valide = false;
281
		Boolean valide = false;
375
		if (formulaireValideOk && projetValideOk) {
282
		if (formulaireValideOk && projetValideOk) {
Line 414... Line 321...
414
		boolean valide = true;
321
		boolean valide = true;
415
		ArrayList<String> messages = new ArrayList<String>();
322
		ArrayList<String> messages = new ArrayList<String>();
Line 416... Line 323...
416
		
323
		
417
		String titre = nomChp.getValue();
324
		String titre = nomChp.getValue();
418
		if (titre == null || titre.equals("")) {
325
		if (titre == null || titre.equals("")) {
419
			messages.add("Veuillez saisir le nom du projet !");
326
			messages.add(i18nC.projetMessageNom());
Line 420... Line 327...
420
		}
327
		}
421
		
328
		
422
		String abr = abreviationChp.getValue();
329
		String abr = abreviationChp.getValue();
423
		if (abr == null || abr.equals("")) {
330
		if (abr == null || abr.equals(i18nC.projetMessageAbreviation())) {
Line 424... Line 331...
424
			messages.add("Veuillez saisir l'abréviation du projet !");
331
			messages.add(i18nC.projetMessageAbreviation());
425
		}
332
		}
426
		
333
		
427
		String desc = descriptionChp.getValue();
334
		String desc = descriptionChp.getValue();
Line 428... Line 335...
428
		if (desc == null || desc.equals("")) {
335
		if (desc == null || desc.equals(i18nC.projetMessageDescription())) {
429
			messages.add("Veuillez saisir la description du projet !");
336
			messages.add(i18nC.projetDescription());
430
		}
337
		}
431
		
338
		
Line 432... Line 339...
432
		String resume = resumeChp.getValue();
339
		String resume = resumeChp.getValue();
433
		if (resume == null || resume.equals("")) {
340
		if (resume == null || resume.equals(i18nC.projetMessageResume())) {
434
			messages.add("Veuillez saisir le résumé du projet !");
341
			messages.add(i18nC.projetMessageResume());
435
		}
342
		}
Line 436... Line 343...
436
		
343
		
437
		String uri = urlChp.getValue();
344
		String uri = urlChp.getValue();
438
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
345
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
439
			messages.add("L'URL saisie n'est pas valide !");
346
			messages.add(i18nC.messageUrlNonValide());
440
		}
347
		}
441
		
348
		
Line 442... Line 349...
442
		String heure = indexationHeureChp.getValue();
349
		String heure = indexationHeureChp.getValue();
443
		if (!UtilString.isEmpty(heure)) {
350
		if (!UtilString.isEmpty(heure)) {
444
			if (!heure.matches(Pattern.heureMinute)) {
351
			if (!heure.matches(Pattern.heureMinute)) {
445
				messages.add("L'heureMinute d'indexation saisie n'est pas valide !");
352
				messages.add(i18nC.projetMessageHeureMinute());
446
			}
353
			}
447
		}
354
		}
448
		
355
		
449
		if (messages.size() != 0) {
356
		if (messages.size() != 0) {
Line 463... Line 370...
463
		urlChp.setValue(projet.getUrl());
370
		urlChp.setValue(projet.getUrl());
Line 464... Line 371...
464
		
371
		
465
		motsClesChp.setValue(projet.getMotsCles());
372
		motsClesChp.setValue(projet.getMotsCles());
466
		citationChp.setValue(projet.getCitation());
373
		citationChp.setValue(projet.getCitation());
467
		licenceChp.setValue(projet.getLicence());
-
 
-
 
374
		licenceChp.setValue(projet.getLicence());
468
				
375
		langueChp.peupler(projet.getLangue());		
469
		if (projet.getMarkPublic().equals("1")) {
376
		if (projet.getMarkPublic().equals("1")) {
470
			markPublicChp.setValue(true);
377
			markPublicChp.setValue(true);
471
		} else {
378
		} else {
472
			markPublicChp.setValue(false);
379
			markPublicChp.setValue(false);
Line 473... Line -...
473
		}
-
 
474
		
-
 
475
		if (listeLangueChargee) {
-
 
476
			if(valeurListeLangue.get(projet.getLangue()) != null) {
-
 
477
				langueChp.setValue(valeurListeLangue.get(projet.getLangue()));
-
 
478
				langueChp.validate();
-
 
479
			}
-
 
480
		}
-
 
481
		
-
 
482
		if (listeIndexationFrequenceChargee) {
-
 
483
			if (valeurListeIndexationFrequence.get(projet.getIndexationFreq()) != null) {
-
 
484
				indexationFrequenceChp.setValue(valeurListeIndexationFrequence.get(projet.getIndexationFreq()));
-
 
485
				indexationFrequenceChp.validate();
-
 
486
			}
-
 
487
		}
-
 
488
		
-
 
489
		if (listeIndexationDureeChargee) {
-
 
490
			if (valeurListeIndexationDuree.get(projet.getIndexationDuree()) != null) {
-
 
491
				indexationDureeChp.setValue(valeurListeIndexationDuree.get(projet.getIndexationDuree()));
-
 
492
				indexationDureeChp.validate();
-
 
493
			}
-
 
494
		}
380
		}
495
		
381
		
496
		String[] heureTab = projet.getIndexationHeure().split(":");
382
		String[] heureTab = projet.getIndexationHeure().split(":");
497
		if (heureTab.length > 1) {
383
		if (heureTab.length > 1) {
498
			String heure = heureTab[0]+":"+heureTab[1];
384
			String heure = heureTab[0]+":"+heureTab[1];
499
			if (heure.matches(Pattern.heureMinute)) {
385
			if (heure.matches(Pattern.heureMinute)) {
500
				indexationHeureChp.setValue(heure);
386
				indexationHeureChp.setValue(heure);
-
 
387
			}
-
 
388
		}
Line 501... Line 389...
501
			}
389
		indexationFrequenceChp.peupler(projet.getIndexationFreq());
502
		}
390
		indexationDureeChp.peupler(projet.getIndexationDuree());
Line 503... Line 391...
503
		
391
		
Line 514... Line 402...
514
		projetCollecte.setUrl(urlChp.getValue());
402
		projetCollecte.setUrl(urlChp.getValue());
Line 515... Line 403...
515
		
403
		
516
		projetCollecte.setMotsCles(motsClesChp.getValue());
404
		projetCollecte.setMotsCles(motsClesChp.getValue());
517
		projetCollecte.setCitation(citationChp.getValue());
405
		projetCollecte.setCitation(citationChp.getValue());
518
		projetCollecte.setLicence(licenceChp.getValue());
-
 
519
		if (langueChp.getValue() != null) {
406
		projetCollecte.setLicence(licenceChp.getValue());
520
			projetCollecte.setLangue(langueChp.getValue().getId());
-
 
521
		}
407
		projetCollecte.setLangue(langueChp.getValeur());
522
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
408
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
Line 523... Line 409...
523
		projetCollecte.setMarkPublic(markPublic);
409
		projetCollecte.setMarkPublic(markPublic);
524
		
-
 
525
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
410
		
526
		if (indexationFrequenceChp.getValue() != null) {
-
 
527
			projetCollecte.setIndexationFreq(indexationFrequenceChp.getValue().getId());
-
 
528
		}
411
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
529
		if (indexationDureeChp.getValue() != null) {
-
 
Line 530... Line 412...
530
			projetCollecte.setIndexationDuree(indexationDureeChp.getValue().getId());
412
		projetCollecte.setIndexationFreq(indexationFrequenceChp.getValeur());
531
		}
413
		projetCollecte.setIndexationDuree(indexationDureeChp.getValeur());
532
 
414
 
533
		Projet projetARetourner = null;
415
		Projet projetARetourner = null;