Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1115 Rev 1118
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
 
4
 
5
import org.tela_botanica.client.ComposantClass;
5
import org.tela_botanica.client.ComposantClass;
6
import org.tela_botanica.client.Mediateur;
6
import org.tela_botanica.client.Mediateur;
7
import org.tela_botanica.client.composants.ChampComboBoxListeValeurs;
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;
9
import org.tela_botanica.client.modeles.Information;
10
import org.tela_botanica.client.modeles.MenuApplicationId;
10
import org.tela_botanica.client.modeles.MenuApplicationId;
11
import org.tela_botanica.client.modeles.projet.Projet;
11
import org.tela_botanica.client.modeles.projet.Projet;
12
import org.tela_botanica.client.util.Debug;
12
import org.tela_botanica.client.util.Debug;
13
import org.tela_botanica.client.util.Pattern;
13
import org.tela_botanica.client.util.Pattern;
14
import org.tela_botanica.client.util.UtilArray;
14
import org.tela_botanica.client.util.UtilArray;
15
import org.tela_botanica.client.util.UtilString;
15
import org.tela_botanica.client.util.UtilString;
16
import org.tela_botanica.client.vues.Formulaire;
16
import org.tela_botanica.client.vues.Formulaire;
-
 
17
 
17
 
18
import com.extjs.gxt.ui.client.event.BaseEvent;
-
 
19
import com.extjs.gxt.ui.client.event.Events;
18
import com.extjs.gxt.ui.client.event.Events;
20
import com.extjs.gxt.ui.client.event.Listener;
19
import com.extjs.gxt.ui.client.widget.Info;
21
import com.extjs.gxt.ui.client.widget.Info;
20
import com.extjs.gxt.ui.client.widget.MessageBox;
22
import com.extjs.gxt.ui.client.widget.MessageBox;
21
import com.extjs.gxt.ui.client.widget.form.CheckBox;
23
import com.extjs.gxt.ui.client.widget.form.CheckBox;
22
import com.extjs.gxt.ui.client.widget.form.FieldSet;
24
import com.extjs.gxt.ui.client.widget.form.FieldSet;
23
import com.extjs.gxt.ui.client.widget.form.TextArea;
25
import com.extjs.gxt.ui.client.widget.form.TextArea;
24
import com.extjs.gxt.ui.client.widget.form.TextField;
26
import com.extjs.gxt.ui.client.widget.form.TextField;
25
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
27
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
26
import com.extjs.gxt.ui.client.widget.layout.FormData;
28
import com.extjs.gxt.ui.client.widget.layout.FormData;
27
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
29
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
28
 
30
 
29
public class ProjetForm extends Formulaire implements Rafraichissable {
31
public class ProjetForm extends Formulaire implements Rafraichissable {
30
	
32
	
31
	private Projet projet;
33
	private Projet projet;
32
	
34
	
33
	private String listeValeurIndexationDureeId = "dureesIndexation";
35
	private String listeValeurIndexationDureeId = "dureesIndexation";
34
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
36
	private String listeValeurIndexationFrequenceId = "frequencesIndexation";
35
	private String listeLanguesId = "langues";
37
	private String listeLanguesId = "langues";
36
	
38
	
37
	private FieldSet generalitesFieldset = null;
39
	private FieldSet generalitesFieldset = null;
38
	private TextField<String> nomChp = null;
40
	private TextField<String> nomChp = null;
39
	private TextField<String> abreviationChp = null;
41
	private TextField<String> abreviationChp = null;
40
	private TextArea descriptionChp = null;
42
	private TextArea descriptionChp = null;
41
	private TextArea resumeChp = null;
43
	private TextArea resumeChp = null;
42
	private TextField<String> urlChp = null;
44
	private TextField<String> urlChp = null;
43
			
45
			
44
	private FieldSet complementFieldset = null;
46
	private FieldSet complementFieldset = null;
45
	private TextField<String> motsClesChp = null;
47
	private TextField<String> motsClesChp = null;
46
	private TextField<String> citationChp = null;
48
	private TextField<String> citationChp = null;
47
	private TextField<String> licenceChp = null;
49
	private TextField<String> licenceChp = null;
48
	private ChampComboBoxListeValeurs langueChp = null;
50
	private ChampComboBoxListeValeurs langueChp = null;
49
	private CheckBox markPublicChp = null;
51
	private CheckBox markPublicChp = null;
50
	
52
	
51
	private FieldSet indexationFieldset = null;
53
	private FieldSet indexationFieldset = null;
52
	private TextField<String> indexationHeureChp = null;
54
	private TextField<String> indexationHeureChp = null;
53
	private ChampComboBoxListeValeurs indexationDureeChp = null;
55
	private ChampComboBoxListeValeurs indexationDureeChp = null;
54
	private ChampComboBoxListeValeurs indexationFrequenceChp = null;
56
	private ChampComboBoxListeValeurs indexationFrequenceChp = null;
55
 
57
 
56
	private boolean formulaireValideOk = false;
58
	private boolean formulaireValideOk = false;
57
	private boolean projetValideOk = false;
59
	private boolean projetValideOk = false;
58
 
60
 
59
	private Rafraichissable vueExterneARafraichirApresValidation = null;
61
	private Rafraichissable vueExterneARafraichirApresValidation = null;
60
 
62
 
61
 
63
 
62
	public ProjetForm(Mediateur mediateurCourrant, String projetId) {
64
	public ProjetForm(Mediateur mediateurCourrant, String projetId) {
63
		initialiserProjetForm(mediateurCourrant, projetId);
65
		initialiserProjetForm(mediateurCourrant, projetId);
64
	}
66
	}
65
 
67
 
66
	public ProjetForm(Mediateur mediateurCourrant, String projetId, Rafraichissable vueARafraichirApresValidation) {
68
	public ProjetForm(Mediateur mediateurCourrant, String projetId, Rafraichissable vueARafraichirApresValidation) {
67
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
69
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
68
		initialiserProjetForm(mediateurCourrant, projetId);
70
		initialiserProjetForm(mediateurCourrant, projetId);
69
	}
71
	}
70
	
72
	
71
	private void initialiserProjetForm(Mediateur mediateurCourant, String projetId) {
73
	private void initialiserProjetForm(Mediateur mediateurCourant, String projetId) {
72
		projet = new Projet();
74
		projet = new Projet();
73
		projet.setId(projetId);
75
		projet.setId(projetId);
74
		
76
		
75
		String modeDeCreation = (projet.getId().isEmpty() ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
77
		String modeDeCreation = (projet.getId().isEmpty() ? Formulaire.MODE_AJOUTER : Formulaire.MODE_MODIFIER);
76
		initialiserFormulaire(mediateurCourant, modeDeCreation, MenuApplicationId.PROJET);
78
		initialiserFormulaire(mediateurCourant, modeDeCreation, MenuApplicationId.PROJET);
77
		
79
		
78
		panneauFormulaire.setLayout(new FlowLayout());
80
		panneauFormulaire.setLayout(new FlowLayout());
79
		genererTitreFormulaire();
81
		genererTitreFormulaire();
80
		
82
		
81
		creerZoneGeneralites();
83
		creerZoneGeneralites();
82
		panneauFormulaire.add(generalitesFieldset);
84
		panneauFormulaire.add(generalitesFieldset);
83
		
85
		
84
		creerZoneComplement();
86
		creerZoneComplement();
85
		panneauFormulaire.add(complementFieldset);
87
		panneauFormulaire.add(complementFieldset);
86
		
88
		
87
		creerZoneIndexation();
89
		creerZoneIndexation();
88
		panneauFormulaire.add(indexationFieldset);
90
		panneauFormulaire.add(indexationFieldset);
89
		
91
		
90
		creerTabIndex();
92
		creerTabIndex();
91
		
93
		
92
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
94
		if (modeDeCreation.equals(Formulaire.MODE_MODIFIER)) {
93
			mediateur.selectionnerProjet(this, projetId);
95
			mediateur.selectionnerProjet(this, projetId);
94
		}
96
		}			
95
			
-
 
96
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationDureeId);
-
 
97
		mediateur.obtenirListeValeurEtRafraichir(this, listeValeurIndexationFrequenceId);
-
 
98
	}
97
	}
99
	
98
	
100
	private void genererTitreFormulaire() {
99
	private void genererTitreFormulaire() {
101
		String titre = i18nC.projetTitreFormAjout();
100
		String titre = i18nC.projetTitreFormAjout();
102
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
101
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
103
			 titre = i18nC.projetTitreFormModif();
102
			 titre = i18nC.projetTitreFormModif();
104
			 if (projet != null) {
103
			 if (projet != null) {
105
				 titre += " - "+i18nC.id()+": "+projet.getId();
104
				 titre += " - "+i18nC.id()+": "+projet.getId();
106
			 }
105
			 }
107
		}
106
		}
108
		panneauFormulaire.setHeading(titre);
107
		panneauFormulaire.setHeading(titre);
109
	}
108
	}
110
			
109
			
111
	private void creerZoneGeneralites() {
110
	private void creerZoneGeneralites() {
112
		FormLayout layout = new FormLayout();
111
		FormLayout layout = new FormLayout();
113
		layout.setLabelWidth(100);
112
		layout.setLabelWidth(100);
114
		
113
		
115
		// Fieldset Infos Générales
114
		// Fieldset Infos Générales
116
		generalitesFieldset = new FieldSet();
115
		generalitesFieldset = new FieldSet();
117
		generalitesFieldset.setHeading(i18nC.projetTitreInfoGenerale());
116
		generalitesFieldset.setHeading(i18nC.projetTitreInfoGenerale());
118
		generalitesFieldset.setCollapsible(true);
117
		generalitesFieldset.setCollapsible(true);
119
		generalitesFieldset.setLayout(layout);
118
		generalitesFieldset.setLayout(layout);
120
		
119
		
121
		nomChp = new TextField<String>();
120
		nomChp = new TextField<String>();
122
		nomChp.setName("cpu");
121
		nomChp.setName("cpu");
123
		nomChp.setFieldLabel("Nom");
122
		nomChp.setFieldLabel(i18nC.projetNom());
124
		nomChp.addStyleName(ComposantClass.OBLIGATOIRE);
123
		nomChp.addStyleName(ComposantClass.OBLIGATOIRE);
125
		nomChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
124
		nomChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
126
		generalitesFieldset.add(nomChp, new FormData(450, 0));
125
		generalitesFieldset.add(nomChp, new FormData(450, 0));
127
		
126
		
128
		abreviationChp = new TextField<String>();
127
		abreviationChp = new TextField<String>();
129
		abreviationChp.setFieldLabel("Abréviation");
128
		abreviationChp.setFieldLabel(i18nC.projetAbreviation());
130
		abreviationChp.addStyleName(ComposantClass.OBLIGATOIRE);
129
		abreviationChp.addStyleName(ComposantClass.OBLIGATOIRE);
131
		abreviationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
130
		abreviationChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
132
		generalitesFieldset.add(abreviationChp, new FormData(450, 0));
131
		generalitesFieldset.add(abreviationChp, new FormData(450, 0));
133
		
132
		
134
		descriptionChp = new TextArea();
133
		descriptionChp = new TextArea();
135
		descriptionChp.setFieldLabel("Description");
134
		descriptionChp.setFieldLabel(i18nC.projetDescription());
136
		descriptionChp.addStyleName(ComposantClass.OBLIGATOIRE);
135
		descriptionChp.addStyleName(ComposantClass.OBLIGATOIRE);
137
		descriptionChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
136
		descriptionChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
138
		generalitesFieldset.add(descriptionChp, new FormData(450, 0));
137
		generalitesFieldset.add(descriptionChp, new FormData(450, 0));
139
		
138
		
140
		resumeChp = new TextArea();
139
		resumeChp = new TextArea();
141
		resumeChp.setFieldLabel("Résumé");
140
		resumeChp.setFieldLabel(i18nC.projetResume());
142
		resumeChp.addStyleName(ComposantClass.OBLIGATOIRE);
141
		resumeChp.addStyleName(ComposantClass.OBLIGATOIRE);
143
		resumeChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
142
		resumeChp.addListener(Events.Valid, creerEcouteurChampObligatoire());
144
		generalitesFieldset.add(resumeChp, new FormData(450, 0));
143
		generalitesFieldset.add(resumeChp, new FormData(450, 0));
145
		
144
		
146
		urlChp = new TextField<String>();
145
		urlChp = new TextField<String>();
147
		urlChp.setFieldLabel("URL du projet");
146
		urlChp.setFieldLabel(i18nC.projetUrl());
148
		generalitesFieldset.add(urlChp, new FormData(450, 0));
147
		generalitesFieldset.add(urlChp, new FormData(450, 0));
149
	}
148
	}
150
	
149
	
151
	private void creerZoneComplement() {
150
	private void creerZoneComplement() {
152
		FormLayout layout = new FormLayout();
151
		FormLayout layout = new FormLayout();
153
		layout.setLabelWidth(100);
152
		layout.setLabelWidth(100);
154
		
153
		
155
		// Fieldset Complément
154
		// Fieldset Complément
156
		complementFieldset = new FieldSet();
155
		complementFieldset = new FieldSet();
157
		complementFieldset.setHeading(i18nC.projetTitreComplement());
156
		complementFieldset.setHeading(i18nC.projetTitreComplement());
158
		complementFieldset.setCollapsible(true);
157
		complementFieldset.setCollapsible(true);
159
		complementFieldset.setLayout(layout);
158
		complementFieldset.setLayout(layout);
160
		
159
		
161
		motsClesChp = new TextField<String>();
160
		motsClesChp = new TextField<String>();
162
		motsClesChp.setFieldLabel(i18nC.projetMotsCles());
161
		motsClesChp.setFieldLabel(i18nC.projetMotsCles());
163
		complementFieldset.add(motsClesChp, new FormData(450, 0));
162
		complementFieldset.add(motsClesChp, new FormData(450, 0));
164
		
163
		
165
		citationChp = new TextField<String>();
164
		citationChp = new TextField<String>();
166
		citationChp.setFieldLabel(i18nC.projetCitation());
165
		citationChp.setFieldLabel(i18nC.projetCitation());
167
		complementFieldset.add(citationChp, new FormData(450, 0));
166
		complementFieldset.add(citationChp, new FormData(450, 0));
168
		
167
		
169
		licenceChp = new TextField<String>();
168
		licenceChp = new TextField<String>();
170
		licenceChp.setFieldLabel(i18nC.projetLicence());
169
		licenceChp.setFieldLabel(i18nC.projetLicence());
171
		complementFieldset.add(licenceChp, new FormData(450, 0));
170
		complementFieldset.add(licenceChp, new FormData(450, 0));
172
		
171
		
173
		langueChp = new ChampComboBoxListeValeurs(i18nC.projetLangue(), listeLanguesId);
172
		langueChp = new ChampComboBoxListeValeurs(i18nC.projetLangue(), listeLanguesId);
174
		complementFieldset.add(langueChp, new FormData(200, 0));
173
		complementFieldset.add(langueChp, new FormData(200, 0));
175
		
174
		
176
		markPublicChp = new CheckBox();
175
		markPublicChp = new CheckBox();
177
		markPublicChp.setFieldLabel("Public");
176
		markPublicChp.setFieldLabel(i18nC.projetMarkPublic());
-
 
177
		markPublicChp.addListener(Events.Change, new Listener<BaseEvent>() {
-
 
178
			@Override
-
 
179
			public void handleEvent(BaseEvent be) {
-
 
180
				if (markPublicChp.getValue()) {
-
 
181
					indexationFieldset.show();
-
 
182
				} else {
-
 
183
					indexationFieldset.hide();
-
 
184
				}
-
 
185
			}
-
 
186
		});
178
		complementFieldset.add(markPublicChp);
187
		complementFieldset.add(markPublicChp);
179
	}
188
	}
180
	
189
	
181
	private void creerZoneIndexation() {
190
	private void creerZoneIndexation() {
182
		FormLayout layout = new FormLayout();
191
		FormLayout layout = new FormLayout();
183
		layout.setLabelWidth(100);
192
		layout.setLabelWidth(100);
184
		
193
		
185
		// Fieldset Indexation
194
		// Fieldset Indexation
186
		indexationFieldset = new FieldSet();
195
		indexationFieldset = new FieldSet();
187
		indexationFieldset.setHeading(i18nC.projetTitreIndexation());
196
		indexationFieldset.setHeading(i18nC.projetTitreIndexation());
188
		indexationFieldset.setCollapsible(true);
197
		indexationFieldset.setCollapsible(true);
189
		indexationFieldset.setLayout(layout);
198
		indexationFieldset.setLayout(layout);
-
 
199
		indexationFieldset.hide();
-
 
200
		indexationFieldset.addListener(Events.Hide, new Listener<BaseEvent>() {
-
 
201
			@Override
-
 
202
			public void handleEvent(BaseEvent be) {
-
 
203
				indexationHeureChp.clear();
-
 
204
				indexationFrequenceChp.clear();
-
 
205
				indexationDureeChp.clear();
-
 
206
			}
-
 
207
		});
190
		
208
		
191
		indexationHeureChp = new TextField<String>();
209
		indexationHeureChp = new TextField<String>();
192
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
210
		indexationHeureChp.setFieldLabel(i18nC.projetIndexationHeure());
193
		indexationHeureChp.setToolTip(i18nC.projetMessageHeureMinute());
211
		indexationHeureChp.setToolTip(i18nC.projetMessageHeureMinute());
194
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
212
		indexationFieldset.add(indexationHeureChp, new FormData(80, 0));
195
		
213
		
196
		indexationFrequenceChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationFrequence(), listeValeurIndexationFrequenceId);
214
		indexationFrequenceChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationFrequence(), listeValeurIndexationFrequenceId);
197
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
215
		indexationFieldset.add(indexationFrequenceChp, new FormData(120, 0));
198
		
216
		
199
		indexationDureeChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationDuree(), listeValeurIndexationDureeId);
217
		indexationDureeChp = new ChampComboBoxListeValeurs(i18nC.projetIndexationDuree(), listeValeurIndexationDureeId);
200
		indexationFieldset.add(indexationDureeChp, new FormData(80, 0));
218
		indexationFieldset.add(indexationDureeChp, new FormData(80, 0));
201
				
219
				
202
	}
220
	}
203
	
221
	
204
	private void creerTabIndex() {
222
	private void creerTabIndex() {
205
		nomChp.setTabIndex(1);
223
		nomChp.setTabIndex(1);
206
		abreviationChp.setTabIndex(2);
224
		abreviationChp.setTabIndex(2);
207
		descriptionChp.setTabIndex(3);
225
		descriptionChp.setTabIndex(3);
208
		resumeChp.setTabIndex(4);
226
		resumeChp.setTabIndex(4);
209
		urlChp.setTabIndex(5);
227
		urlChp.setTabIndex(5);
210
				
228
				
211
		motsClesChp.setTabIndex(6);
229
		motsClesChp.setTabIndex(6);
212
		citationChp.setTabIndex(7);
230
		citationChp.setTabIndex(7);
213
		licenceChp.setTabIndex(8);
231
		licenceChp.setTabIndex(8);
214
		langueChp.setTabIndex(9);
232
		langueChp.setTabIndex(9);
215
		markPublicChp.setTabIndex(10);
233
		markPublicChp.setTabIndex(10);
216
		
234
		
217
		indexationHeureChp.setTabIndex(11);
235
		indexationHeureChp.setTabIndex(11);
218
		indexationFrequenceChp.setTabIndex(12);
236
		indexationFrequenceChp.setTabIndex(12);
219
		indexationDureeChp.setTabIndex(13);
237
		indexationDureeChp.setTabIndex(13);
220
		
238
		
221
		nomChp.focus();
239
		nomChp.focus();
222
	}
240
	}
223
 
241
 
224
	public void rafraichir(Object nouvellesDonnees) {
242
	public void rafraichir(Object nouvellesDonnees) {
225
		if (nouvellesDonnees instanceof Information) {
243
		if (nouvellesDonnees instanceof Information) {
226
			Information info = (Information) nouvellesDonnees;
244
			Information info = (Information) nouvellesDonnees;
227
			rafraichirInformation(info);
245
			rafraichirInformation(info);
228
		} else {
246
		} else {
229
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
247
			Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
230
		}
248
		}
231
		
249
		
232
		if (etreValide()) {
250
		if (etreValide()) {
233
			initialiserValidation();
251
			initialiserValidation();
234
			repandreRafraichissement();
252
			repandreRafraichissement();
235
			controlerFermetureApresRafraichissement();
253
			controlerFermetureApresRafraichissement();
236
		}
254
		}
237
	}
255
	}
238
 
256
 
239
	private void rafraichirInformation(Information info) {
257
	private void rafraichirInformation(Information info) {
240
		final String type = info.getType();
258
		final String type = info.getType();
241
		
259
		
242
		// Gestion des problèmes
260
		// Gestion des problèmes
243
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
261
		if (info.getMessages() != null && !info.getMessages().toString().equals("[]")) {
244
			Debug.log("MESSAGES:\n"+info.getMessages().toString());
262
			Debug.log("MESSAGES:\n"+info.getMessages().toString());
245
		}
263
		}
246
		
264
		
247
		// Gestion des actions
265
		// Gestion des actions
248
		if (type.equals("selection_projet")) {
266
		if (type.equals("selection_projet")) {
249
			if (info.getDonnee(0) != null) {
267
			if (info.getDonnee(0) != null) {
250
				projet = (Projet) info.getDonnee(0);
268
				projet = (Projet) info.getDonnee(0);
251
			}
269
			}
252
			peuplerFormulaire();
270
			peuplerFormulaire();
253
			genererTitreFormulaire();
271
			genererTitreFormulaire();
254
		}
272
		}
255
		if (type.equals("ajout_projet") || type.equals("modif_projet")) {
273
		if (type.equals("ajout_projet") || type.equals("modif_projet")) {
256
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
274
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
257
				projetValideOk = true;
275
				projetValideOk = true;
258
				String projetId = (String) info.getDonnee(0);
276
				String projetId = (String) info.getDonnee(0);
259
				if (vueExterneARafraichirApresValidation != null) {
277
				if (vueExterneARafraichirApresValidation != null) {
260
					projet.setId(projetId);
278
					projet.setId(projetId);
261
				}
279
				}
262
			}
280
			}
263
		}
281
		}
264
		
282
		
265
		// Gestion des messages
283
		// Gestion des messages
266
		if (type.equals("selection_projet")) {
284
		if (type.equals("selection_projet")) {
267
			Info.display(i18nC.projetTitreFormModif(), info.toString());
285
			Info.display(i18nC.projetTitreFormModif(), info.toString());
268
		} else if (type.equals("modif_projet")) {
286
		} else if (type.equals("modif_projet")) {
269
			Info.display(i18nC.projetTitreFormModif(), info.toString());
287
			Info.display(i18nC.projetTitreFormModif(), info.toString());
270
		} else if (type.equals("ajout_projet")) {
288
		} else if (type.equals("ajout_projet")) {
271
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
289
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String) {
272
				String projetId = (String) info.getDonnee(0);
290
				String projetId = (String) info.getDonnee(0);
273
				Info.display(i18nC.projetTitreFormAjout(), "Le projet '"+projetId+"' a bien été ajouté");
291
				Info.display(i18nC.projetTitreFormAjout(), "Le projet '"+projetId+"' a bien été ajouté");
274
			} else {
292
			} else {
275
				Info.display(i18nC.projetTitreFormAjout(), info.toString());
293
				Info.display(i18nC.projetTitreFormAjout(), info.toString());
276
			}
294
			}
277
		}
295
		}
278
	}
296
	}
279
		
297
		
280
	private Boolean etreValide() {
298
	private Boolean etreValide() {
281
		Boolean valide = false;
299
		Boolean valide = false;
282
		if (formulaireValideOk && projetValideOk) {
300
		if (formulaireValideOk && projetValideOk) {
283
			valide = true;
301
			valide = true;
284
		}
302
		}
285
		return valide;
303
		return valide;
286
	}
304
	}
287
	
305
	
288
	private void initialiserValidation() {
306
	private void initialiserValidation() {
289
		formulaireValideOk = false;
307
		formulaireValideOk = false;
290
		projetValideOk = false;
308
		projetValideOk = false;
291
	}
309
	}
292
	
310
	
293
	private void repandreRafraichissement() {
311
	private void repandreRafraichissement() {
294
		if (vueExterneARafraichirApresValidation != null) {
312
		if (vueExterneARafraichirApresValidation != null) {
295
			String type = "projet_modifie";
313
			String type = "projet_modifie";
296
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
314
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
297
				type = "projet_ajoute";
315
				type = "projet_ajoute";
298
			}
316
			}
299
			Information info = new Information(type);
317
			Information info = new Information(type);
300
			info.setDonnee(0, projet);
318
			info.setDonnee(0, projet);
301
			vueExterneARafraichirApresValidation.rafraichir(info);
319
			vueExterneARafraichirApresValidation.rafraichir(info);
302
		}
320
		}
303
	}
321
	}
304
	
322
	
305
	public boolean soumettreFormulaire() {
323
	public boolean soumettreFormulaire() {
306
		formulaireValideOk = verifierFormulaire();
324
		formulaireValideOk = verifierFormulaire();
307
		if (formulaireValideOk) {
325
		if (formulaireValideOk) {
308
			Projet projetCollecte = collecterProjet();
326
			Projet projetCollecte = collecterProjet();
309
			if (projetCollecte != null) {
327
			if (projetCollecte != null) {
310
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
328
				if (mode.equals(Formulaire.MODE_AJOUTER)) {
311
					mediateur.ajouterProjet(this, projetCollecte);
329
					mediateur.ajouterProjet(this, projetCollecte);
312
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
330
				} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
313
					mediateur.modifierProjet(this, projetCollecte);
331
					mediateur.modifierProjet(this, projetCollecte);
314
				}
332
				}
315
			}
333
			}
316
		}
334
		}
317
		return formulaireValideOk;
335
		return formulaireValideOk;
318
	}
336
	}
319
	
337
	
320
	public boolean verifierFormulaire() {
338
	public boolean verifierFormulaire() {
321
		boolean valide = true;
339
		boolean valide = true;
322
		ArrayList<String> messages = new ArrayList<String>();
340
		ArrayList<String> messages = new ArrayList<String>();
323
		
341
		
324
		String titre = nomChp.getValue();
342
		String titre = nomChp.getValue();
325
		if (titre == null || titre.equals("")) {
343
		if (titre == null || titre.equals("")) {
326
			messages.add(i18nC.projetMessageNom());
344
			messages.add(i18nC.projetMessageNom());
327
		}
345
		}
328
		
346
		
329
		String abr = abreviationChp.getValue();
347
		String abr = abreviationChp.getValue();
330
		if (abr == null || abr.equals(i18nC.projetMessageAbreviation())) {
348
		if (abr == null || abr.equals(i18nC.projetMessageAbreviation())) {
331
			messages.add(i18nC.projetMessageAbreviation());
349
			messages.add(i18nC.projetMessageAbreviation());
332
		}
350
		}
333
		
351
		
334
		String desc = descriptionChp.getValue();
352
		String desc = descriptionChp.getValue();
335
		if (desc == null || desc.equals(i18nC.projetMessageDescription())) {
353
		if (desc == null || desc.equals(i18nC.projetMessageDescription())) {
336
			messages.add(i18nC.projetDescription());
354
			messages.add(i18nC.projetDescription());
337
		}
355
		}
338
		
356
		
339
		String resume = resumeChp.getValue();
357
		String resume = resumeChp.getValue();
340
		if (resume == null || resume.equals(i18nC.projetMessageResume())) {
358
		if (resume == null || resume.equals(i18nC.projetMessageResume())) {
341
			messages.add(i18nC.projetMessageResume());
359
			messages.add(i18nC.projetMessageResume());
342
		}
360
		}
343
		
361
		
344
		String uri = urlChp.getValue();
362
		String uri = urlChp.getValue();
345
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
363
		if (uri != null && ! uri.trim().isEmpty() && ! uri.matches(Pattern.url)) {
346
			messages.add(i18nC.messageUrlNonValide());
364
			messages.add(i18nC.messageUrlNonValide());
347
		}
365
		}
348
		
366
		
349
		String heure = indexationHeureChp.getValue();
367
		if (markPublicChp.getValue()) {
350
		if (!UtilString.isEmpty(heure)) {
368
			String heure = indexationHeureChp.getValue();
351
			if (!heure.matches(Pattern.heureMinute)) {
369
			if (!UtilString.isEmpty(heure) && !heure.matches(Pattern.heureMinute)) {
352
				messages.add(i18nC.projetMessageHeureMinute());
370
				messages.add(i18nC.projetMessageHeureMinute());
353
			}
371
			}
354
		}
372
		}
355
		
373
		
356
		if (messages.size() != 0) {
374
		if (messages.size() != 0) {
357
			String[] tableauDeMessages = {};
375
			String[] tableauDeMessages = {};
358
			tableauDeMessages = messages.toArray(tableauDeMessages);
376
			tableauDeMessages = messages.toArray(tableauDeMessages);
359
			MessageBox.alert(i18nC.erreurSaisieTitre(), UtilArray.implode(tableauDeMessages, "<br />"), null);
377
			MessageBox.alert(i18nC.erreurSaisieTitre(), UtilArray.implode(tableauDeMessages, "<br />"), null);
360
			valide = false;
378
			valide = false;
361
		}
379
		}
362
		return valide;		
380
		return valide;		
363
	}
381
	}
364
	
382
	
365
	private void peuplerFormulaire() {
383
	private void peuplerFormulaire() {
366
		nomChp.setValue(projet.getNom());
384
		nomChp.setValue(projet.getNom());
367
		abreviationChp.setValue(projet.getAbreviation());
385
		abreviationChp.setValue(projet.getAbreviation());
368
		descriptionChp.setValue(projet.getDescription());
386
		descriptionChp.setValue(projet.getDescription());
369
		resumeChp.setValue(projet.getResume());
387
		resumeChp.setValue(projet.getResume());
370
		urlChp.setValue(projet.getUrl());
388
		urlChp.setValue(projet.getUrl());
371
		
389
		
372
		motsClesChp.setValue(projet.getMotsCles());
390
		motsClesChp.setValue(projet.getMotsCles());
373
		citationChp.setValue(projet.getCitation());
391
		citationChp.setValue(projet.getCitation());
374
		licenceChp.setValue(projet.getLicence());
392
		licenceChp.setValue(projet.getLicence());
375
		langueChp.peupler(projet.getLangue());		
393
		langueChp.peupler(projet.getLangue());		
376
		if (projet.getMarkPublic().equals("1")) {
394
		if (projet.getMarkPublic().equals("1")) {
377
			markPublicChp.setValue(true);
395
			markPublicChp.setValue(true);
-
 
396
			String[] heureTab = projet.getIndexationHeure().split(":");
-
 
397
			if (heureTab.length > 1) {
-
 
398
				String heure = heureTab[0]+":"+heureTab[1];
-
 
399
				if (heure.matches(Pattern.heureMinute)) {
-
 
400
					indexationHeureChp.setValue(heure);
-
 
401
				}
-
 
402
			}
-
 
403
			indexationFrequenceChp.peupler(projet.getIndexationFreq());
-
 
404
			indexationDureeChp.peupler(projet.getIndexationDuree());
378
		} else {
405
		} else {
379
			markPublicChp.setValue(false);
406
			markPublicChp.setValue(false);
380
		}
407
		}
381
		
-
 
382
		String[] heureTab = projet.getIndexationHeure().split(":");
-
 
383
		if (heureTab.length > 1) {
-
 
384
			String heure = heureTab[0]+":"+heureTab[1];
-
 
385
			if (heure.matches(Pattern.heureMinute)) {
-
 
386
				indexationHeureChp.setValue(heure);
-
 
387
			}
-
 
388
		}
-
 
389
		indexationFrequenceChp.peupler(projet.getIndexationFreq());
-
 
390
		indexationDureeChp.peupler(projet.getIndexationDuree());
-
 
391
		
408
		
392
		doLayout(true);
409
		doLayout(true);
393
	}
410
	}
394
	
411
	
395
	private Projet collecterProjet() {
412
	private Projet collecterProjet() {
396
		Projet projetCollecte = (Projet) projet.cloner(new Projet());
413
		Projet projetCollecte = (Projet) projet.cloner(new Projet());
397
		
414
		
398
		projetCollecte.setNom(nomChp.getValue());
415
		projetCollecte.setNom(nomChp.getValue());
399
		projetCollecte.setAbreviation(abreviationChp.getValue());
416
		projetCollecte.setAbreviation(abreviationChp.getValue());
400
		projetCollecte.setDescription(descriptionChp.getValue());
417
		projetCollecte.setDescription(descriptionChp.getValue());
401
		projetCollecte.setResume(resumeChp.getValue());
418
		projetCollecte.setResume(resumeChp.getValue());
402
		projetCollecte.setUrl(urlChp.getValue());
419
		projetCollecte.setUrl(urlChp.getValue());
403
		
420
		
404
		projetCollecte.setMotsCles(motsClesChp.getValue());
421
		projetCollecte.setMotsCles(motsClesChp.getValue());
405
		projetCollecte.setCitation(citationChp.getValue());
422
		projetCollecte.setCitation(citationChp.getValue());
406
		projetCollecte.setLicence(licenceChp.getValue());
423
		projetCollecte.setLicence(licenceChp.getValue());
407
		projetCollecte.setLangue(langueChp.getValeur());
424
		projetCollecte.setLangue(langueChp.getValeur());
408
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
425
		String markPublic = (markPublicChp.getValue()) ? "1" : "0";
409
		projetCollecte.setMarkPublic(markPublic);
426
		projetCollecte.setMarkPublic(markPublic);
410
		
427
		
411
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
428
		projetCollecte.setIndexationHeure(indexationHeureChp.getValue());
412
		projetCollecte.setIndexationFreq(indexationFrequenceChp.getValeur());
429
		projetCollecte.setIndexationFreq(indexationFrequenceChp.getValeur());
413
		projetCollecte.setIndexationDuree(indexationDureeChp.getValeur());
430
		projetCollecte.setIndexationDuree(indexationDureeChp.getValeur());
414
 
431
 
415
		Projet projetARetourner = null;
432
		Projet projetARetourner = null;
416
		if (!projetCollecte.comparer(projet)) {
433
		if (!projetCollecte.comparer(projet)) {
417
			projetARetourner = projet = projetCollecte;
434
			projetARetourner = projet = projetCollecte;
418
			Debug.log(projetARetourner.toString());
435
			Debug.log(projetARetourner.toString());
419
		}
436
		}
420
		return projetARetourner;
437
		return projetARetourner;
421
	}
438
	}
422
	
439
	
423
	public void reinitialiserFormulaire() {
440
	public void reinitialiserFormulaire() {
424
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
441
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
425
			mediateur.afficherFormProjet(projet.getId());
442
			mediateur.afficherFormProjet(projet.getId());
426
		} else {
443
		} else {
427
			mediateur.afficherFormProjet(null);
444
			mediateur.afficherFormProjet(null);
428
		}
445
		}
429
	}
446
	}
430
 
447
 
431
}
448
}