Subversion Repositories eFlore/Applications.coel

Rev

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

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