Subversion Repositories eFlore/Applications.coel

Rev

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

Rev 1383 Rev 1426
Line 13... Line 13...
13
import org.tela_botanica.client.composants.pagination.ProxyStructures;
13
import org.tela_botanica.client.composants.pagination.ProxyStructures;
14
import org.tela_botanica.client.images.Images;
14
import org.tela_botanica.client.images.Images;
15
import org.tela_botanica.client.interfaces.Rafraichissable;
15
import org.tela_botanica.client.interfaces.Rafraichissable;
16
import org.tela_botanica.client.modeles.Information;
16
import org.tela_botanica.client.modeles.Information;
17
import org.tela_botanica.client.modeles.MenuApplicationId;
17
import org.tela_botanica.client.modeles.MenuApplicationId;
18
import org.tela_botanica.client.modeles.Valeur;
-
 
19
import org.tela_botanica.client.modeles.aDonnee;
18
import org.tela_botanica.client.modeles.aDonnee;
20
import org.tela_botanica.client.modeles.collection.CollectionAPersonne;
-
 
21
import org.tela_botanica.client.modeles.personne.Personne;
19
import org.tela_botanica.client.modeles.personne.Personne;
22
import org.tela_botanica.client.modeles.personne.PersonneListe;
20
import org.tela_botanica.client.modeles.personne.PersonneListe;
23
import org.tela_botanica.client.modeles.projet.Projet;
21
import org.tela_botanica.client.modeles.projet.Projet;
24
import org.tela_botanica.client.modeles.projet.ProjetListe;
-
 
25
import org.tela_botanica.client.modeles.publication.Publication;
22
import org.tela_botanica.client.modeles.publication.Publication;
26
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
23
import org.tela_botanica.client.modeles.publication.PublicationAPersonne;
27
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
24
import org.tela_botanica.client.modeles.publication.PublicationAPersonneListe;
28
import org.tela_botanica.client.modeles.structure.Structure;
25
import org.tela_botanica.client.modeles.structure.Structure;
29
import org.tela_botanica.client.modeles.structure.StructureListe;
-
 
30
import org.tela_botanica.client.synchronisation.Sequenceur;
26
import org.tela_botanica.client.synchronisation.Sequenceur;
31
import org.tela_botanica.client.util.Debug;
27
import org.tela_botanica.client.util.Debug;
32
import org.tela_botanica.client.util.Pattern;
28
import org.tela_botanica.client.util.Pattern;
33
import org.tela_botanica.client.util.UtilArray;
29
import org.tela_botanica.client.util.UtilArray;
34
import org.tela_botanica.client.util.UtilString;
30
import org.tela_botanica.client.util.UtilString;
Line 37... Line 33...
37
import org.tela_botanica.client.vues.FormulaireBarreValidation;
33
import org.tela_botanica.client.vues.FormulaireBarreValidation;
38
import org.tela_botanica.client.vues.personne.PersonneForm;
34
import org.tela_botanica.client.vues.personne.PersonneForm;
Line 39... Line 35...
39
 
35
 
40
import com.extjs.gxt.ui.client.Style.Scroll;
36
import com.extjs.gxt.ui.client.Style.Scroll;
41
import com.extjs.gxt.ui.client.Style.SortDir;
-
 
42
import com.extjs.gxt.ui.client.core.XTemplate;
37
import com.extjs.gxt.ui.client.Style.SortDir;
43
import com.extjs.gxt.ui.client.data.ModelData;
38
import com.extjs.gxt.ui.client.data.ModelData;
44
import com.extjs.gxt.ui.client.data.ModelType;
39
import com.extjs.gxt.ui.client.data.ModelType;
45
import com.extjs.gxt.ui.client.event.BaseEvent;
40
import com.extjs.gxt.ui.client.event.BaseEvent;
46
import com.extjs.gxt.ui.client.event.ButtonEvent;
-
 
47
import com.extjs.gxt.ui.client.event.ComponentEvent;
41
import com.extjs.gxt.ui.client.event.ButtonEvent;
48
import com.extjs.gxt.ui.client.event.Events;
-
 
49
import com.extjs.gxt.ui.client.event.KeyListener;
42
import com.extjs.gxt.ui.client.event.Events;
-
 
43
import com.extjs.gxt.ui.client.event.Listener;
-
 
44
import com.extjs.gxt.ui.client.event.SelectionChangedEvent;
50
import com.extjs.gxt.ui.client.event.Listener;
45
import com.extjs.gxt.ui.client.event.SelectionChangedListener;
51
import com.extjs.gxt.ui.client.event.SelectionListener;
46
import com.extjs.gxt.ui.client.event.SelectionListener;
52
import com.extjs.gxt.ui.client.store.ListStore;
47
import com.extjs.gxt.ui.client.store.ListStore;
53
import com.extjs.gxt.ui.client.store.Store;
48
import com.extjs.gxt.ui.client.store.Store;
54
import com.extjs.gxt.ui.client.store.StoreEvent;
49
import com.extjs.gxt.ui.client.store.StoreEvent;
55
import com.extjs.gxt.ui.client.widget.ContentPanel;
-
 
56
import com.extjs.gxt.ui.client.widget.HorizontalPanel;
50
import com.extjs.gxt.ui.client.widget.ContentPanel;
57
import com.extjs.gxt.ui.client.widget.Info;
51
import com.extjs.gxt.ui.client.widget.Info;
58
import com.extjs.gxt.ui.client.widget.LayoutContainer;
52
import com.extjs.gxt.ui.client.widget.LayoutContainer;
59
import com.extjs.gxt.ui.client.widget.MessageBox;
53
import com.extjs.gxt.ui.client.widget.MessageBox;
60
import com.extjs.gxt.ui.client.widget.Text;
54
import com.extjs.gxt.ui.client.widget.Text;
Line 67... Line 61...
67
import com.extjs.gxt.ui.client.widget.form.TextField;
61
import com.extjs.gxt.ui.client.widget.form.TextField;
68
import com.extjs.gxt.ui.client.widget.form.Validator;
62
import com.extjs.gxt.ui.client.widget.form.Validator;
69
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
63
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
70
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
64
import com.extjs.gxt.ui.client.widget.grid.CellEditor;
71
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
65
import com.extjs.gxt.ui.client.widget.grid.ColumnConfig;
72
import com.extjs.gxt.ui.client.widget.grid.ColumnData;
-
 
73
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
66
import com.extjs.gxt.ui.client.widget.grid.ColumnModel;
74
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
67
import com.extjs.gxt.ui.client.widget.grid.EditorGrid;
75
import com.extjs.gxt.ui.client.widget.grid.Grid;
-
 
76
import com.extjs.gxt.ui.client.widget.grid.GridCellRenderer;
-
 
77
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
68
import com.extjs.gxt.ui.client.widget.grid.GridSelectionModel;
78
import com.extjs.gxt.ui.client.widget.grid.RowExpander;
-
 
79
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
69
import com.extjs.gxt.ui.client.widget.grid.RowNumberer;
80
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
70
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
81
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
71
import com.extjs.gxt.ui.client.widget.layout.FlowLayout;
82
import com.extjs.gxt.ui.client.widget.layout.FormData;
72
import com.extjs.gxt.ui.client.widget.layout.FormData;
83
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
73
import com.extjs.gxt.ui.client.widget.layout.FormLayout;
Line 88... Line 78...
88
import com.google.gwt.core.client.GWT;
78
import com.google.gwt.core.client.GWT;
Line 89... Line 79...
89
 
79
 
Line -... Line 80...
-
 
80
 
-
 
81
public class PublicationForm extends Formulaire implements Rafraichissable {
90
 
82
	
-
 
83
	  //-------------//
91
public class PublicationForm extends Formulaire implements Rafraichissable {
84
	 //  ATTRIBUTS	//
-
 
85
	//-------------//
92
	
86
	
-
 
87
	/** Publication **/
-
 
88
	// on se sert d'un objet Publication lorsque l'on est en mode MODIFIER
Line 93... Line 89...
93
	//Variables de classe:
89
	private Publication publication;
94
	// Relatives à la publication
90
	// on se sert de l'identifiant d'une publication lorsque l'on est en mode AJOUTER
95
	private Publication publication;
91
	private String publicationId = null;
96
	
92
	
-
 
93
	/** Auteurs **/
Line 97... Line 94...
97
	// Relatives aux auteurs
94
	private PublicationAPersonneListe auteursInitialListe = null;
98
	private PersonneListe auteursInitialListe = null;
95
	private PublicationAPersonneListe auteursAjoutes = null;
99
	private PersonneListe auteursAjoutes = null;
-
 
100
	private PersonneListe auteursSupprimes = null;
-
 
Line 101... Line 96...
101
	
96
	private PublicationAPersonneListe auteursSupprimes = null;
102
	private ContentPanel auteursFieldset = null;
97
	private PublicationAPersonneListe auteursModifies = null;
103
	private ChampComboBoxRechercheTempsReelPaginable projetsCombo = null;
98
	
104
	private ArrayList<ComboBox<Personne>> auteurComboboxListe = null;
99
	private ContentPanel auteursFieldset = null;
Line 117... Line 112...
117
	private TextField<String> pagesChp = null;
112
	private TextField<String> pagesChp = null;
Line 118... Line 113...
118
	
113
	
Line 119... Line 114...
119
	private LayoutContainer zoneHaut, zoneBas;
114
	private LayoutContainer zoneHaut, zoneBas;
120
	
115
	
121
	private ToolBar barreOutils = null;
116
	private ToolBar barreOutils = null;
122
	private EditorGrid<Personne> grille;
117
	private EditorGrid<PublicationAPersonne> grilleAuteurs;
123
	private ChampComboBoxRechercheTempsReelPaginable personnesSaisiesComboBox = null;
118
	private ChampComboBoxRechercheTempsReelPaginable personnesSaisiesComboBox = null;
-
 
119
	private Button personnesBoutonSupprimer = null;
124
	private Button personnesBoutonSupprimer = null;
120
	private Button personnesBoutonModifier = null;
Line 125... Line 121...
125
	private Button personnesBoutonModifier = null;
121
	private Button boutonAuteurUp = null;
126
	private PersonneListe listePersonne = new PersonneListe();
122
	private Button boutonAuteurDown = null;
Line -... Line 123...
-
 
123
	
-
 
124
	private FenetreForm fenetreFormulaire = null;
-
 
125
	private Sequenceur sequenceur;
-
 
126
	
-
 
127
	private String modeDeCreation = null;
-
 
128
	boolean changeOrderMarker = false;
-
 
129
	
127
	
130
	
128
	private FenetreForm fenetreFormulaire = null;
131
	 //----------------------//
129
	private Sequenceur sequenceur;
132
	//    Constructeurs     //------------------------------------------------------------
Line 130... Line 133...
130
	
133
	
131
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
134
	public PublicationForm(Mediateur mediateurCourrant, String publicationId) {
132
		initialiserPublicationForm(mediateurCourrant, publicationId);
135
		initialiserPublicationForm(mediateurCourrant, publicationId);
133
	}
136
	}
-
 
137
 
-
 
138
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
-
 
139
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
-
 
140
		initialiserPublicationForm(mediateurCourrant, publicationId);
Line 134... Line 141...
134
 
141
	}
135
	public PublicationForm(Mediateur mediateurCourrant, String publicationId, Rafraichissable vueARafraichirApresValidation) {
142
 
136
		vueExterneARafraichirApresValidation = vueARafraichirApresValidation;
143
	
137
		initialiserPublicationForm(mediateurCourrant, publicationId);
144
	 //-----------------------//
-
 
145
	//    Initialisation     //------------------------------------------------------------
138
	}
146
	
139
	
147
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
Line -... Line 148...
-
 
148
		sequenceur = new Sequenceur();
140
	private void initialiserPublicationForm(Mediateur mediateurCourrant, String publicationId) {
149
		publication = new Publication();
141
		sequenceur = new Sequenceur();
150
		publication.setId(publicationId);
142
		publication = new Publication();
151
		this.publicationId = publicationId;
143
		publication.setId(publicationId);
152
		auteursInitialListe = new PublicationAPersonneListe();
Line 144... Line 153...
144
		auteursInitialListe = new PersonneListe();
153
		initialiserAuteurs();	// Crée les listes d'auteurs ajoutés et supprimés
Line 169... Line 178...
169
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
178
			mediateurCourrant.selectionnerPublication(this, publicationId, sequenceur);
170
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR, sequenceur);
179
			mediateurCourrant.selectionnerPublicationAPersonne(this, publicationId, null, PublicationAPersonne.ROLE_AUTEUR, sequenceur);
171
			sequenceur.enfilerRafraichissement(this, new Information("chargement_modifier_ok"));
180
			sequenceur.enfilerRafraichissement(this, new Information("chargement_modifier_ok"));
172
		}
181
		}
173
	}
182
	}
-
 
183
 
-
 
184
	private void initialiserAuteurs() {
-
 
185
		auteursAjoutes = new PublicationAPersonneListe();
-
 
186
		auteursSupprimes = new PublicationAPersonneListe();
-
 
187
		auteursModifies = new PublicationAPersonneListe();
-
 
188
	}
Line 174... Line -...
174
	
-
 
175
	public void actualiserEtatBoutonsBarreOutils() {
-
 
176
			// Activation des boutons si la grille contient un élément
-
 
177
			if (grille.getStore().getCount() > 0) {  
-
 
178
				personnesBoutonSupprimer.enable();
189
	
179
				personnesBoutonModifier.enable();
-
 
180
			}
190
	 //-----------------------//
181
			// Désactivation des boutons si la grille ne contient plus d'élément
-
 
182
			if (grille.getStore().getCount() == 0) {  
-
 
183
				personnesBoutonSupprimer.disable();
-
 
184
				personnesBoutonModifier.disable();
-
 
185
			}
-
 
Line 186... Line 191...
186
		}
191
	//    User Interface     //------------------------------------------------------------
187
	
192
	
Line 188... Line 193...
188
	private ToolBar creerBarreOutilsGrille() {
193
	private ToolBar creerBarreOutilsGrille() {
Line 209... Line 214...
209
		barreOutils.add(new SeparatorToolItem());
214
		barreOutils.add(new SeparatorToolItem());
Line 210... Line 215...
210
		
215
		
211
		Button rafraichirBouton = creerBoutonRafraichir();
216
		Button rafraichirBouton = creerBoutonRafraichir();
Line -... Line 217...
-
 
217
		barreOutils.add(rafraichirBouton);
-
 
218
		
-
 
219
		barreOutils.add(new SeparatorToolItem());
-
 
220
		
-
 
221
		barreOutils.add(new Text(i18nC.deplacerAuteur()));
-
 
222
		boutonAuteurUp = creerBoutonAuteurUp();
-
 
223
		barreOutils.add(boutonAuteurUp);
-
 
224
		boutonAuteurDown = creerBoutonAuteurDown();
212
		barreOutils.add(rafraichirBouton);
225
		barreOutils.add(boutonAuteurDown);
213
		
226
		
-
 
227
		return barreOutils;
-
 
228
	}
-
 
229
	
-
 
230
	public void actualiserEtatBoutonsBarreOutils() {
-
 
231
		// Activation des boutons si la grille contient un élément
-
 
232
		if (grilleAuteurs.getStore().getCount() > 0) {  
-
 
233
			personnesBoutonSupprimer.enable();
-
 
234
			personnesBoutonModifier.enable();
-
 
235
		}
-
 
236
		// Désactivation des boutons si la grille ne contient plus d'élément
-
 
237
		if (grilleAuteurs.getStore().getCount() == 0) {  
-
 
238
			personnesBoutonSupprimer.disable();
-
 
239
			personnesBoutonModifier.disable();
-
 
240
		}
-
 
241
	}
-
 
242
	
-
 
243
	private Button creerBoutonAuteurUp() {
-
 
244
		Button bouton = new Button();
-
 
245
		bouton.setIcon(Images.ICONES.arrowUp());
-
 
246
		bouton.setEnabled(false);
-
 
247
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
-
 
248
			public void componentSelected(ButtonEvent ce) {  
-
 
249
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
-
 
250
					
-
 
251
					PublicationAPersonne pap = grilleAuteurs.getSelectionModel().getSelectedItem();
-
 
252
					
-
 
253
					int index = grilleAuteurs.getStore().indexOf(pap);
-
 
254
					int newIndex = index;
-
 
255
					newIndex--;
-
 
256
					
-
 
257
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
-
 
258
					// déclenchent et posent problème
-
 
259
					changeOrderMarker = true;
-
 
260
					pap.setOrdreAuteurs(String.valueOf(newIndex+1));
-
 
261
					PublicationAPersonne papSwitch = grilleAuteurs.getStore().getAt(index-1);
-
 
262
					int newIndexPapSwitch = index + 1;
-
 
263
					papSwitch.setOrdreAuteurs(String.valueOf(newIndexPapSwitch));
-
 
264
					grilleAuteurs.getStore().update(papSwitch);
-
 
265
					grilleAuteurs.getStore().remove(pap);
-
 
266
					grilleAuteurs.getStore().insert(pap, newIndex);
-
 
267
					changeOrderMarker = false;
-
 
268
					
-
 
269
					grilleAuteurs.getSelectionModel().select(newIndex, true);
-
 
270
				}
-
 
271
			}  
-
 
272
		});
-
 
273
		return bouton;
-
 
274
	}
-
 
275
	
-
 
276
	private Button creerBoutonAuteurDown() {
-
 
277
		Button bouton = new Button();
-
 
278
		bouton.setIcon(Images.ICONES.arrowDown());
-
 
279
		bouton.setEnabled(false);
-
 
280
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
-
 
281
			public void componentSelected(ButtonEvent ce) {  
-
 
282
				if (grilleAuteurs.getSelectionModel().getSelectedItem() != null) {
-
 
283
					
-
 
284
					PublicationAPersonne pap = grilleAuteurs.getSelectionModel().getSelectedItem();
-
 
285
					
-
 
286
					int index = grilleAuteurs.getStore().indexOf(pap);
-
 
287
					int newIndex = index;
-
 
288
					newIndex++;
-
 
289
					
-
 
290
					// le marqueur suivant est obligatoire sinon les évènements liés au magasin se
-
 
291
					// déclenchent et posent problème
-
 
292
					changeOrderMarker = true;
-
 
293
					pap.setOrdreAuteurs(String.valueOf(newIndex+1));
-
 
294
					PublicationAPersonne papSwitch = grilleAuteurs.getStore().getAt(index+1);
-
 
295
					int newIndexPapSwitch = index + 1;
-
 
296
					papSwitch.setOrdreAuteurs(String.valueOf(newIndexPapSwitch));
-
 
297
					grilleAuteurs.getStore().update(papSwitch);
-
 
298
					grilleAuteurs.getStore().remove(pap);
-
 
299
					grilleAuteurs.getStore().insert(pap, newIndex);
-
 
300
					changeOrderMarker = false;
-
 
301
					
-
 
302
					grilleAuteurs.getSelectionModel().select(newIndex, true);
-
 
303
				}
-
 
304
			}  
-
 
305
		});
Line 214... Line 306...
214
		return barreOutils;
306
		return bouton;
215
	}
307
	}
216
 
308
 
217
	private Button creerBoutonAjouter() {
309
	private Button creerBoutonAjouter() {
Line 229... Line 321...
229
	private Button creerBoutonModifier() {
321
	private Button creerBoutonModifier() {
230
		Button bouton = new Button(i18nC.modifier());
322
		Button bouton = new Button(i18nC.modifier());
231
		bouton.setIcon(Images.ICONES.vcardModifier());
323
		bouton.setIcon(Images.ICONES.vcardModifier());
232
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
324
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
233
			public void componentSelected(ButtonEvent ce) {  
325
			public void componentSelected(ButtonEvent ce) {  
234
				Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
326
				Personne personneSaisieSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem().getPersonne();
Line 235... Line 327...
235
				
327
				
236
				if (personneSaisieSelectionnee == null) {
328
				if (personneSaisieSelectionnee == null) {
237
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
329
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
238
				} else {
330
				} else {
Line 245... Line 337...
245
	}
337
	}
Line 246... Line 338...
246
	
338
	
247
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
339
	private FenetreForm creerFenetreModaleAvecFormulairePersonne(String mode) {
248
		String personneId = null;
340
		String personneId = null;
249
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
341
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
250
			Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
342
			Personne personneSaisieSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem().getPersonne();
251
			personneId = personneSaisieSelectionnee.getId();
343
			personneId = personneSaisieSelectionnee.getId();
Line 252... Line 344...
252
		}
344
		}
253
		
345
		
Line 299... Line 391...
299
	private Button creerBoutonSupprimer() {
391
	private Button creerBoutonSupprimer() {
300
		Button bouton = new Button(i18nC.supprimer());
392
		Button bouton = new Button(i18nC.supprimer());
301
		bouton.setIcon(Images.ICONES.vcardSupprimer());
393
		bouton.setIcon(Images.ICONES.vcardSupprimer());
302
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
394
		bouton.addSelectionListener(new SelectionListener<ButtonEvent>() {  
303
			public void componentSelected(ButtonEvent ce) {
395
			public void componentSelected(ButtonEvent ce) {
304
				Personne personneSaisieSelectionnee = grille.getSelectionModel().getSelectedItem();
396
				PublicationAPersonne personneSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
305
				if (personneSaisieSelectionnee == null) {
397
				if (personneSelectionnee == null) {
306
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
398
					InfoLogger.display(i18nC.informationTitreGenerique(), i18nC.selectionnerPublication());
307
				} else {
399
				} else {
308
					supprimerDansGrille(personneSaisieSelectionnee);
400
					supprimerDansGrille(personneSelectionnee);
309
				}
401
				}
310
			}   
402
			}   
311
		});
403
		});
312
		return bouton;
404
		return bouton;
313
	}
405
	}
Line 326... Line 418...
326
	private void actualiserGrille() {
418
	private void actualiserGrille() {
327
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
419
		if (mode.equals(Formulaire.MODE_MODIFIER)) {
328
			// FIXME : c'est la merde
420
			// FIXME : c'est la merde
329
			//mediateur.selectionner(this, null, personneSelectionnee.getId(), "%");
421
			//mediateur.selectionner(this, null, personneSelectionnee.getId(), "%");
330
		} else {
422
		} else {
331
			grille.getStore().removeAll();
423
			grilleAuteurs.getStore().removeAll();
332
			layout();
424
			layout();
333
		}
425
		}
334
	}
426
	}
Line 335... Line 427...
335
	
427
	
336
	private void creerComboBoxPersonnesSaisies() {
428
	private void creerComboBoxPersonnesSaisies() {
337
		ModelType modelTypePersonnes = new ModelType();
429
		ModelType modelTypePersonnes = new ModelType();
338
		modelTypePersonnes.setRoot("personnes");
430
		modelTypePersonnes.setRoot("personnes");
339
		modelTypePersonnes.setTotalName("nbElements");
431
		modelTypePersonnes.setTotalName("nbElements");
-
 
432
		modelTypePersonnes.addField("cp_fmt_nom_complet");
-
 
433
		modelTypePersonnes.addField("cp_nom");
340
		modelTypePersonnes.addField("cp_fmt_nom_complet");
434
		modelTypePersonnes.addField("cp_prenom");
341
		modelTypePersonnes.addField("cp_id_personne");
435
		modelTypePersonnes.addField("cp_id_personne");
342
		modelTypePersonnes.addField("cp_code_postal");
436
		modelTypePersonnes.addField("cp_code_postal");
343
		modelTypePersonnes.addField("cp_ville");
437
		modelTypePersonnes.addField("cp_ville");
Line 347... Line 441...
347
		ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(sequenceur);
441
		ProxyPersonnes<ModelData> proxyPersonnes = new ProxyPersonnes<ModelData>(sequenceur);
Line 348... Line 442...
348
		
442
		
Line 349... Line 443...
349
		personnesSaisiesComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
443
		personnesSaisiesComboBox = new ChampComboBoxRechercheTempsReelPaginable(proxyPersonnes, modelTypePersonnes, displayNamePersonnes);
350
		
444
		
351
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
445
		personnesSaisiesComboBox.getCombo().addListener(Events.Select, new Listener<BaseEvent>() {
352
			public void handleEvent(BaseEvent be) {				
446
			public void handleEvent(BaseEvent be) {		
353
				if (personnesSaisiesComboBox.getValeur() instanceof ModelData) {
447
				if (personnesSaisiesComboBox.getValeur() instanceof ModelData) {
-
 
448
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
-
 
449
					Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
-
 
450
					PublicationAPersonne pap = new PublicationAPersonne();
354
					// N'ajouter l'auteur que s'il n'est pas déjà présent dans la grille et dans les valeurs initiales
451
					pap.setPersonne(personneSaisieSelectionnee);
355
					Personne personneSaisieSelectionnee = new Personne(personnesSaisiesComboBox.getValeur());
452
					if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
356
					if (grille.getStore().findModel(personneSaisieSelectionnee) != null)	{
453
					if (grilleAuteurs.getStore().findModel(pap) != null)	{
357
						Info.display("Information", "La personne est déjà présente dans la liste d'auteurs");
-
 
358
					} else {
-
 
359
						if (!auteursInitialListe.containsValue(personneSaisieSelectionnee))	{
-
 
360
							auteursAjoutes.put(personneSaisieSelectionnee.getId(), personneSaisieSelectionnee);
454
						Info.display("Information", "La personne est déjà présente dans la liste d'auteurs");
361
						}
455
					} else {
362
						ajouterDansGrille(personneSaisieSelectionnee);
456
						ajouterDansGrille(pap);
363
						personnesSaisiesComboBox.getCombo().setValue(null);
457
						personnesSaisiesComboBox.getCombo().setValue(null);
364
					}
458
					}
365
				}
459
				}
366
			}
460
			}
Line 367... Line -...
367
		});
-
 
368
	}
-
 
369
	
-
 
370
	private void obtenirPersonnesSaisies(String nom) {
-
 
371
		mediateur.selectionnerPersonneParNomComplet(this, null, nom+"%", null); 
461
		});
372
	}
462
	}
373
	
463
	
Line 374... Line 464...
374
	private void ajouterDansGrille(Personne personne) {
464
	private void ajouterDansGrille(PublicationAPersonne pap) {
375
		ajouterDansGrille(personne, 0);
465
		ajouterDansGrille(pap, 0);
376
	}
466
	}
377
	
467
	
378
	private void ajouterDansGrille(Personne personne, int index) {
468
	private void ajouterDansGrille(PublicationAPersonne pap, int index) {
379
		if (personne != null) {
469
		if (pap != null) {
380
			if (!grille.getStore().contains(personne))	{
470
			if (!grilleAuteurs.getStore().contains(pap))	{
Line 381... Line 471...
381
				//1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
471
				//1) si elle ne fait pas partie des initiaux, ajouter à la liste à ajouter
382
				if (!auteursInitialListe.containsValue(personne))	{
472
				if (!auteursInitialListe.containsValue(pap))	{
383
					auteursAjoutes.put(personne.getId(), personne);
473
					auteursAjoutes.put(pap.getId(), pap);
384
				}
474
				}
385
				
475
				
386
				// L'enlever de la liste à supprimer
476
				// L'enlever de la liste à supprimer
387
				if (auteursSupprimes.containsValue(personne))	{
477
				if (auteursSupprimes.containsValue(pap))	{
388
					auteursSupprimes.remove(personne);
478
					auteursSupprimes.remove(pap);
389
				}
479
				}
390
				//2) Ajouter a la grille
480
				//2) Ajouter a la grille
391
				grille.getStore().insert(personne, index);
481
				grilleAuteurs.getStore().insert(pap, index);
392
				grille.getSelectionModel().select(index, false);
482
				grilleAuteurs.getSelectionModel().select(index, false);
Line 393... Line 483...
393
			} else {
483
			} else {
394
				InfoLogger.display("Information", "La personne choisie existe déjà dans la liste.");
484
				InfoLogger.display("Information", "La personne choisie existe déjà dans la liste.");
395
			}
485
			}
-
 
486
		}
396
		}
487
	}
397
	}
-
 
398
	
488
	
399
	/**
489
	/**
400
	 * Met à jour la grille avec les informations contenus dans la variable listePublicationsLiees
490
	 * Met à jour la grille avec les informations contenus dans la variable listePublicationsLiees
Line 401... Line 491...
401
	 */
491
	 */
402
	private void mettreAJourGrille()	{
492
	/*
403
 
493
	private void mettreAJourGrille()	{
404
		grille.getStore().removeAll();
494
		grille.getStore().removeAll();
405
		grille.getStore().add(listePersonne.toList());
495
		grille.getStore().add(listePersonne.toList());
406
	}
496
	}*/
Line 407... Line 497...
407
	
497
	
408
	private void supprimerDansGrille(Personne personne) {
498
	private void supprimerDansGrille(PublicationAPersonne pap) {
409
		if (personne != null) {
499
		if (pap != null) {
Line -... Line 500...
-
 
500
			// 1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
-
 
501
			if (auteursInitialListe.containsValue(pap)) {
-
 
502
				auteursSupprimes.put(pap.getId(), pap);
-
 
503
			}
410
			//1) Ajouter a la liste des personne à supprimer uniquement si est présente dans la liste initiale
504
			
411
			if (auteursInitialListe.containsValue(personne)) {
505
			if (auteursAjoutes.containsValue(pap))	{
412
				auteursSupprimes.put(personne.getId(), personne);
506
				auteursAjoutes.remove(pap);
413
			}
507
			}
414
			
508
			
415
			if (auteursAjoutes.containsValue(personne))	{
509
			if (auteursModifies.containsValue(pap))	{
Line 416... Line 510...
416
				auteursAjoutes.remove(personne);
510
				auteursModifies.remove(pap);
-
 
511
			}
-
 
512
			
Line 417... Line 513...
417
			}
513
			// 2) Supprimer la personne de la liste
418
			
514
			grilleAuteurs.getStore().remove(pap);
419
			//2) Supprimer la personne de la liste
515
		} else {
-
 
516
			Info.display("Information", "Vous devez sélectionner une personne");
-
 
517
		}
-
 
518
	}
-
 
519
	
-
 
520
	private EditorGrid<PublicationAPersonne> creerGrilleAuteurs() {
-
 
521
		
-
 
522
		ListStore<PublicationAPersonne> storeGrilleAuteurs = new ListStore<PublicationAPersonne>();
-
 
523
		
-
 
524
		// ADD Listener ------------------------------------------------------------------------------------
-
 
525
		storeGrilleAuteurs.addListener(Store.Add, new Listener<StoreEvent<PublicationAPersonne>>() {
-
 
526
			public void handleEvent(StoreEvent<PublicationAPersonne> ce) {
-
 
527
				if (!changeOrderMarker) {
420
			grille.getStore().remove(personne);	
528
					
-
 
529
					// Bug de GXT : Pour récupérer l'élément modifié, j'ai dû faire comme suit
421
		} else {
530
					ListStore<PublicationAPersonne> auteursStore = (ListStore<PublicationAPersonne>)ce.getSource();
422
			Info.display("Information", "Vous devez sélectionner une personne");
531
					PublicationAPersonne pap = auteursStore.getAt(ce.getIndex());
Line -... Line 532...
-
 
532
					
423
		}
533
					// Lorsque l'on reçoit une liste d'auteurs, on leur affecte l'état "modifié", puis
424
	}
534
					// on les ajoute au magasin mais puisque chaque élément ajouté au magasin déclenche
-
 
535
					// l'évènement Store.Add, on est obligé de vérifier si l'objet n'a pas déjà un état
425
	
536
					// sinon l'évènement écrase l'état précédent
-
 
537
					if (pap.get("_etat_") == null) pap.set("_etat_", aDonnee.ETAT_AJOUTE);
426
	private EditorGrid<Personne> creerGrille() {
538
					
427
		
539
					actualiserEtatBoutonsBarreOutils();
Line -... Line 540...
-
 
540
				}
428
		ListStore<Personne> storeGrille = new ListStore<Personne>();
541
			}
429
		storeGrille.addListener(Store.Add, new Listener<StoreEvent<Personne>>() {
542
		});
-
 
543
		
-
 
544
		// REMOVE Listener ------------------------------------------------------------------------------------
-
 
545
		storeGrilleAuteurs.addListener(Store.Remove, new Listener<StoreEvent<PublicationAPersonne>>() {
-
 
546
			public void handleEvent(StoreEvent<PublicationAPersonne> ce) {
-
 
547
				if (!changeOrderMarker) {					
430
			public void handleEvent(StoreEvent<Personne> ce) {
548
					actualiserEtatBoutonsBarreOutils();
-
 
549
				}
-
 
550
			}
-
 
551
		});
-
 
552
		
431
				actualiserEtatBoutonsBarreOutils();
553
		// UPDATE Listener ------------------------------------------------------------------------------------
-
 
554
		storeGrilleAuteurs.addListener(Store.Update, new Listener<StoreEvent<PublicationAPersonne>>() {
-
 
555
			public void handleEvent(StoreEvent<PublicationAPersonne> ce) {
-
 
556
				if (!changeOrderMarker) {
-
 
557
					
-
 
558
					if (ce.getRecord().isModified("ordre")) {
432
			}
559
						/** s'il s'agit d'un auteur que l'on vient d'ajouter à la liste, alors on a pas besoin
433
		});
560
						de faire quoique ce soit car l'auteur est déjà dans la liste des auteurs ajoutés **/
434
		
561
						if (ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
Line 435... Line 562...
435
		storeGrille.addListener(Store.Remove, new Listener<StoreEvent<Personne>>() {
562
							// ... do nothing
-
 
563
						/** s'il s'agit d'un auteur qui était déjà présent dans la liste initiale, il faut
-
 
564
						ajouter cet auteur à la liste des auteurs modifiés **/
-
 
565
						} else {
-
 
566
							if (ce.getModel() instanceof PublicationAPersonne) {
-
 
567
								PublicationAPersonne pap = ce.getModel();
-
 
568
								auteursModifies.put(pap.getId(), pap);
-
 
569
							}
-
 
570
						}	
-
 
571
					}
-
 
572
				}
-
 
573
			}
-
 
574
		});
436
			public void handleEvent(StoreEvent<Personne> ce) {
575
		
437
				actualiserEtatBoutonsBarreOutils();
576
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
438
			}
577
		ColumnConfig columnOrdre = new ColumnConfig("ordre", i18nC.ordre(), 15);
439
		});
578
		/*
-
 
579
		final TextField<String> ordre = new TextField<String>(); 
Line 440... Line 580...
440
		
580
		ordre.setValidator(new Validator(){
Line 441... Line 581...
441
		storeGrille.addListener(Store.Update, new Listener<StoreEvent<Personne>>() {
581
			public String validate(Field<?> field, String value) {
Line 442... Line 582...
442
			public void handleEvent(StoreEvent<Personne> ce) {
582
				if (value.matches("[0-9]*")) return null;
-
 
583
				else return "[Erreur] Le champ 'ordre' doit être un nombre entier.";
-
 
584
			}
-
 
585
		});
-
 
586
		*/
-
 
587
 
-
 
588
		colonnes.add(columnOrdre);
-
 
589
		colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
-
 
590
		colonnes.add(new ColumnConfig("code_postal", i18nC.personneCodePostal(), 150));
-
 
591
		colonnes.add(new ColumnConfig("ville", i18nC.personneVille(), 75));
-
 
592
		colonnes.add(new ColumnConfig("truk_courriel", i18nC.personneCourriel(), 75));
-
 
593
 
-
 
594
		
-
 
595
		GridSelectionModel<PublicationAPersonne> modeleDeSelection = new GridSelectionModel<PublicationAPersonne>();
443
				if (ce.getRecord().isModified("_role_") && !ce.getModel().get("_etat_").equals(aDonnee.ETAT_AJOUTE)) {
596
		
444
					ce.getModel().set("_etat_", aDonnee.ETAT_MODIFIE);
597
		ColumnModel modeleDeColonnes = new ColumnModel(colonnes);
445
				}
598
		
446
			}
599
		EditorGrid<PublicationAPersonne> grilleDesAuteurs = new EditorGrid<PublicationAPersonne>(storeGrilleAuteurs, modeleDeColonnes);
447
		});		
600
		
448
		
601
		modeleDeSelection.addListener(Events.SelectionChange, new SelectionChangedListener<PublicationAPersonne>() {
449
		List<ColumnConfig> colonnes = new ArrayList<ColumnConfig>();
602
			public void selectionChanged(SelectionChangedEvent<PublicationAPersonne> se) {
Line 450... Line 603...
450
		colonnes.add(new ColumnConfig("fmt_nom_complet", i18nC.personneNomComplet(), 150));
603
				PublicationAPersonne papSelectionnee = grilleAuteurs.getSelectionModel().getSelectedItem();
451
		colonnes.add(new ColumnConfig("code_postal", i18nC.personneCodePostal(), 150));
604
				int index = grilleAuteurs.getStore().indexOf(papSelectionnee);
Line 452... Line 605...
452
		colonnes.add(new ColumnConfig("ville", i18nC.personneVille(), 75));
605
				
453
		colonnes.add(new ColumnConfig("truk_courriel", i18nC.personneCourriel(), 75));
606
				if (index >= 1) boutonAuteurUp.setEnabled(true);
454
		
607
				else boutonAuteurUp.setEnabled(false);
Line 483... Line 636...
483
	private void creerZoneAuteurs() {
636
	private void creerZoneAuteurs() {
484
		auteursFieldset = new ContentPanel();
637
		auteursFieldset = new ContentPanel();
485
		auteursFieldset.setLayout(new FitLayout());
638
		auteursFieldset.setLayout(new FitLayout());
486
		auteursFieldset.setHeading("Auteurs");
639
		auteursFieldset.setHeading("Auteurs");
Line 487... Line -...
487
		
-
 
488
		auteurComboboxListe = new ArrayList<ComboBox<Personne>>(0);
-
 
489
		mediateur.clicObtenirListeAuteurs(this);
-
 
490
		
640
		
491
		creerChampsAuteur();
641
		creerChampsAuteur();
Line 492... Line 642...
492
	}
642
	}
493
	
643
	
494
	private void creerChampsAuteur() {
644
	private void creerChampsAuteur() {
495
		auteursFieldset.removeAll();
645
		auteursFieldset.removeAll();
496
		barreOutils = creerBarreOutilsGrille();
646
		barreOutils = creerBarreOutilsGrille();
497
		auteursFieldset.setTopComponent(barreOutils);
647
		auteursFieldset.setTopComponent(barreOutils);
498
		grille = creerGrille();
648
		grilleAuteurs = creerGrilleAuteurs();
499
		auteursFieldset.add(grille);
649
		auteursFieldset.add(grilleAuteurs);
Line 500... Line -...
500
		auteursFieldset.layout();
-
 
501
	}
-
 
502
	
-
 
503
	private ComboBox<Personne> creerComboBoxAuteursSaisis() {
-
 
504
		ListStore<Personne> auteursStore = new ListStore<Personne>();
-
 
505
		auteursStore.add(auteursStorePartage.getModels());
-
 
506
		
-
 
507
		ComboBox<Personne> comboBox = new ComboBox<Personne>();
-
 
508
		comboBox.setEmptyText(i18nC.chercherPersonneSaisi());
-
 
509
		comboBox.setEditable(true);
-
 
510
		comboBox.setAllowBlank(false);
-
 
511
		comboBox.setForceSelection(true);
-
 
512
		comboBox.setDisplayField("fmt_nom_complet");
-
 
513
		comboBox.setTriggerAction(TriggerAction.ALL);
-
 
514
		comboBox.setStore(auteursStore);
-
 
515
		comboBox.setMessageTarget("tooltip");
-
 
516
		comboBox.addStyleName(ComposantClass.OBLIGATOIRE);
-
 
517
		comboBox.addListener(Events.Valid, creerEcouteurChampObligatoire());
-
 
518
 
-
 
519
		return comboBox;
650
		auteursFieldset.layout();
520
	}
651
	}
521
	
652
	
Line 522... Line 653...
522
	private void creerZoneGeneralites() {
653
	private void creerZoneGeneralites() {
Line 586... Line 717...
586
		editionFieldset = new FieldSet();
717
		editionFieldset = new FieldSet();
587
		editionFieldset.setHeading("Édition");
718
		editionFieldset.setHeading("Édition");
588
		editionFieldset.setCollapsible(true);
719
		editionFieldset.setCollapsible(true);
589
		editionFieldset.setLayout(layout);
720
		editionFieldset.setLayout(layout);
Line 590... Line -...
590
		
-
 
591
 
721
		
592
		/*****************************************************/
722
		/*****************************************************/
593
		/**			Champ 'Editeur de la publication'		**/
723
		/**			Champ 'Editeur de la publication'		**/
594
		/*****************************************************/		
724
		/*****************************************************/		
595
		ModelType modelTypeStructures = new ModelType();
725
		ModelType modelTypeStructures = new ModelType();
Line 640... Line 770...
640
		pagesChp = new TextField<String>();
770
		pagesChp = new TextField<String>();
641
		pagesChp.setFieldLabel("Pages");
771
		pagesChp.setFieldLabel("Pages");
642
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
772
		pagesChp.setToolTip("Fomat : NBRE ou NBRE-NBRE. ('NBRE' correspond à une suite de chiffres arabes ou romains ou à un point d'interrogation '?' dans le cas d'une donnée inconnue)");
643
		editionFieldset.add(pagesChp, new FormData(100, 0));
773
		editionFieldset.add(pagesChp, new FormData(100, 0));
644
	}
774
	}
645
 
-
 
646
	public void rafraichir(Object nouvellesDonnees) {
-
 
647
		if (nouvellesDonnees instanceof Publication) {
-
 
648
			// Si on a reçu les details d'une publication
-
 
649
			publication = (Publication) nouvellesDonnees;
-
 
650
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
-
 
651
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
-
 
652
		} else if (nouvellesDonnees instanceof Information) {
-
 
653
			rafraichirInformation((Information) nouvellesDonnees);
-
 
654
		} else {
-
 
655
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
-
 
656
		}
-
 
657
	}
-
 
Line 658... Line -...
658
	
-
 
659
	private void synchronisation() {
775
	
660
		
-
 
-
 
776
	
-
 
777
	 //-------------------------//
Line 661... Line 778...
661
	}
778
	//    Méthodes privées     //------------------------------------------------------------
662
	
779
	
663
	private void miseAJourAuteursInitialListe() {
780
	private void miseAJourAuteursInitialListe() {
664
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
781
		Iterator<String> clesAjoutees = auteursAjoutes.keySet().iterator();
665
		while (clesAjoutees.hasNext()) {
782
		while (clesAjoutees.hasNext()) {
666
			Personne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
783
			PublicationAPersonne auteurAjoute = auteursAjoutes.get(clesAjoutees.next());
Line 667... Line 784...
667
			auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
784
			auteursInitialListe.put(auteurAjoute.getId(), auteurAjoute);
668
		}
785
		}
669
		
786
		
670
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
787
		Iterator<String> clesSupprimees = auteursSupprimes.keySet().iterator();
671
		while (clesSupprimees.hasNext()) {
788
		while (clesSupprimees.hasNext()) {
672
			Personne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
789
			PublicationAPersonne auteurSupprime = auteursSupprimes.get(clesSupprimees.next());
Line 673... Line -...
673
			auteursInitialListe.remove(auteurSupprime.getId());
-
 
674
		}
-
 
675
	}
-
 
676
	
-
 
677
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
-
 
678
		Iterator<String> it = auteurs.keySet().iterator();
-
 
679
		while (it.hasNext()) {
-
 
680
			Personne auteur = auteurs.get(it.next()).getPersonne();
-
 
681
			auteursInitialListe.put(auteur.getId(), auteur);
-
 
682
		}
-
 
683
		
-
 
684
		grille.getStore().removeAll();
-
 
685
		grille.getStore().add(auteursInitialListe.toList());
-
 
686
		layout();
-
 
687
	}
-
 
688
	
-
 
689
	private void rafraichirInformation(Information info) {	
-
 
690
		String type = info.getType();
-
 
691
		if (type.equals("publication_enregistree"))	{
-
 
692
			// la publication vien d'etre enregistrée, on soumet les auteurs
-
 
693
			soumettreAuteurs();
-
 
694
		} else if (type.equals("auteurs_enregistres")) {
-
 
695
			miseAJourAuteursInitialListe();
-
 
696
			initialiserAuteurs();
-
 
697
			repandreRafraichissement();
-
 
698
			controlerFermeture();
-
 
699
		} else if (type.equals("chargement_modifier_ok"))	{
-
 
700
			peuplerFormulaire();
-
 
701
			genererTitreFormulaire();
-
 
702
		}
-
 
703
		
-
 
704
		/*if (info.getType().equals("liste_personne")) {
-
 
705
			PersonneListe listePersonneAuteur = (PersonneListe) info.getDonnee(0);
-
 
706
			ListStore store = personnesSaisiesComboBox.getStore();
-
 
707
			store.removeAll();
-
 
708
			store.add(listePersonneAuteur.toList());
-
 
709
		
-
 
710
		} else */
-
 
711
		if (type.equals("personne_ajoutee")) {
-
 
712
			if (info.getDonnee(0) != null) {
-
 
713
				Personne personne = (Personne) info.getDonnee(0);
-
 
714
				ajouterDansGrille(personne);
-
 
715
			}
-
 
716
		} else if (type.equals("personne_modifiee")) {
-
 
717
			if (info.getDonnee(0) != null) {
-
 
718
				Personne personne = (Personne) info.getDonnee(0);
-
 
719
				Personne personneDansGrille = grille.getStore().findModel("id_personne", personne.getId());
-
 
720
				int index = grille.getStore().indexOf(personneDansGrille);
-
 
721
				grille.getStore().remove(personneDansGrille);
-
 
722
				ajouterDansGrille(personne, index);
-
 
723
			}
-
 
724
		} else if (info.getType().equals("modif_publication")) {
-
 
725
			InfoLogger.display("Modification d'une publication", info.toString());
-
 
726
		} else if (info.getType().equals("ajout_publication")) {
-
 
727
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
-
 
728
				String publicationId = (String) info.getDonnee(0);
-
 
729
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
-
 
730
			} else {
-
 
731
				InfoLogger.display("Ajout d'une publication", info.toString());
-
 
732
			}
-
 
733
		}	
-
 
734
	}
-
 
735
	
-
 
736
	private void initialiserAuteurs() {
-
 
737
		auteursAjoutes = new PersonneListe();
-
 
738
		auteursSupprimes = new PersonneListe();
-
 
739
	}
-
 
740
	
-
 
741
	private void repandreRafraichissement() {
-
 
742
		if (vueExterneARafraichirApresValidation != null) {
-
 
743
			String type = "publication_modifiee";
-
 
744
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
-
 
745
				type = "publication_ajoutee";
-
 
746
			}
-
 
747
			Information info = new Information(type);
-
 
748
			info.setDonnee(0, publication);
-
 
749
			vueExterneARafraichirApresValidation.rafraichir(info);
790
			auteursInitialListe.remove(auteurSupprime.getId());
750
		}
791
		}
751
	}
792
	}
752
	
793
	
753
	public boolean soumettreFormulaire() {
794
	public boolean soumettreFormulaire() {
754
		boolean formulaireValideOk = verifierFormulaire();
-
 
755
		if (formulaireValideOk) {
-
 
756
			soumettrePublication();
795
		boolean formulaireValideOk = verifierFormulaire();
757
		}
796
		if (formulaireValideOk) {
Line 758... Line 797...
758
		
797
			soumettrePublication();
759
		
798
		}
760
		return formulaireValideOk;
799
		return formulaireValideOk;
761
	}
-
 
762
 
800
	}
763
	private void soumettrePublication() {
801
 
764
		Publication publicationCollectee = collecterPublication();
802
	private void soumettrePublication() {
765
		if (publicationCollectee != null) {
803
		Publication publicationCollectee = collecterPublication();
766
			
804
		if (publicationCollectee != null) {
767
			// Pour l'enregistrement des collections, on utilise le séquenceur
805
			// Pour l'enregistrement des publications, on utilise le séquenceur
768
			// Il doit attendre le retour de l'enregistrement pour poursuivre
806
			// Il doit attendre le retour de l'enregistrement pour poursuivre
769
			sequenceur = new Sequenceur();
807
			sequenceur = new Sequenceur();
770
			int seqId = sequenceur.lancerRequeteSynchrone(this);
808
			int seqId = sequenceur.lancerRequeteSynchrone(this);
-
 
809
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
771
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
810
				mediateur.ajouterPublication(sequenceur, publicationCollectee, seqId);
-
 
811
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
-
 
812
				mediateur.modifierPublication(sequenceur, publicationCollectee, seqId);
-
 
813
			}
772
				mediateur.ajouterPublication(sequenceur, publicationCollectee, seqId);
814
			
773
			} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
815
		// si l'on est en mode MODIFIER, on soumet les auteurs meme si les informations de la publication
Line 774... Line 816...
774
				mediateur.modifierPublication(sequenceur, publicationCollectee, seqId);
816
		// restent inchangées car il se peut que les auteurs aient été modifiés
Line -... Line 817...
-
 
817
		} else if (mode.equals(Formulaire.MODE_MODIFIER)) {
-
 
818
			soumettreAuteurs();
775
			}
819
		}
776
			sequenceur.enfilerRafraichissement(this, new Information("publication_enregistree"));
-
 
777
		}
820
	}
778
	}
821
	
779
	
822
	private void soumettreAuteurs() {
780
	private void soumettreAuteurs() {
-
 
781
		
823
		
782
		//1) Auteurs ajoutés : 
824
		formaterOrdreAuteurs();
783
		// - Créer une PublicationAAuteurListe
825
		
-
 
826
		//1) Auteurs ajoutés : 
784
		PublicationAPersonneListe listeDesAuteurs = new PublicationAPersonneListe();
827
		PublicationAPersonneListe listeAuteursAAjouter = new PublicationAPersonneListe();
785
		Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
828
		Iterator<String> itAuteur = auteursAjoutes.keySet().iterator();
Line 786... Line 829...
786
		while (itAuteur.hasNext())	{
829
		while (itAuteur.hasNext())	{			
787
			PublicationAPersonne publiAPersonne = new PublicationAPersonne();
830
			String cle = itAuteur.next();
788
			String cle = itAuteur.next();
831
			PublicationAPersonne publiAPersonne = auteursAjoutes.get(cle);			
789
			publiAPersonne.setIdPersonne(cle);
832
			publiAPersonne.setIdPublication(this.publicationId);
790
			publiAPersonne.setIdPublication(publication.getId());
-
 
791
			listeDesAuteurs.put(cle, publiAPersonne);
833
			publiAPersonne.setOrdreAuteurs(publiAPersonne.getOrdreAuteurs());
Line 792... Line 834...
792
		}
834
			listeAuteursAAjouter.put(cle, publiAPersonne);
793
		
-
 
794
		// - envoyer au mediateur SSI personnes à ajouter
835
		}
795
		if (listeDesAuteurs.size() > 0)	{
836
		
796
			int seqId = sequenceur.lancerRequeteSynchrone(this);
837
		// - envoyer au mediateur SSI personnes à ajouter
797
			mediateur.ajouterPublicationAPersonne(sequenceur, publication.getId(), listeDesAuteurs, PublicationAPersonne.ROLE_AUTEUR, seqId);
-
 
798
			//attenteAjoutAuteursOk = true;
838
		if (listeAuteursAAjouter.size() > 0)	{
799
		}
-
 
800
		
839
			int seqId = sequenceur.lancerRequeteSynchrone(this);
801
		//2) Auteurs supprimés : 
840
			mediateur.ajouterPublicationAPersonne(sequenceur, this.publicationId, listeAuteursAAjouter, PublicationAPersonne.ROLE_AUTEUR, seqId);
802
		// - Créer une PublicationAPersonneListe
841
		}
Line 803... Line 842...
803
		listeDesAuteurs = new PublicationAPersonneListe();
842
		
804
		itAuteur = auteursSupprimes.keySet().iterator();
843
		//2) Auteurs supprimés : 
805
		while (itAuteur.hasNext())	{
844
		PublicationAPersonneListe listeAuteursASupprimer = new PublicationAPersonneListe();
806
			PublicationAPersonne publiAPersonne = new PublicationAPersonne();
845
		itAuteur = auteursSupprimes.keySet().iterator();
807
			String cle = itAuteur.next();
-
 
808
			publiAPersonne.setIdPersonne(cle);
846
		while (itAuteur.hasNext())	{
Line -... Line 847...
-
 
847
			String cle = itAuteur.next();
809
			publiAPersonne.setIdPublication(publication.getId());
848
			PublicationAPersonne publiAPersonne = auteursSupprimes.get(cle);
810
			listeDesAuteurs.put(cle, publiAPersonne);
-
 
811
		}
-
 
812
		
849
			listeAuteursASupprimer.put(cle, publiAPersonne);
813
		// - Envoyer au médiateur SSI personnes à supprimer
850
		}
814
		if (listeDesAuteurs.size() > 0) {
851
		
815
			// Pour une suppression des auteurs, on a pas besoin d'attendre le retour
-
 
816
			mediateur.supprimerPublicationAPersonne(this, listeDesAuteurs);
852
		// - Envoyer au médiateur SSI personnes à supprimer
817
			//attenteSuppressionAuteursOk = true;
-
 
818
		}
853
		if (listeAuteursASupprimer.size() > 0) {
819
		
854
			// Pour une suppression des auteurs, on a pas besoin d'attendre le retour
Line 820... Line 855...
820
		sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres"));
855
			mediateur.supprimerPublicationAPersonne(this, listeAuteursASupprimer);
821
	}
856
		}
822
	
857
		
-
 
858
		//3) Auteurs modifiés : 
823
	public boolean verifierFormulaire() {
859
		PublicationAPersonneListe listeAuteursAModifier = new PublicationAPersonneListe();
Line -... Line 860...
-
 
860
		itAuteur = auteursModifies.keySet().iterator();
-
 
861
		while (itAuteur.hasNext())	{
-
 
862
			String cle = itAuteur.next();
824
		boolean valide = true;
863
			PublicationAPersonne publiAPersonne = auteursModifies.get(cle);
825
		ArrayList<String> messages = new ArrayList<String>();
864
			listeAuteursAModifier.put(cle, publiAPersonne);
826
		
865
		}
827
		// Tester si au moins un auteur est présent
-
 
Line 828... Line 866...
828
		if (grille.getStore().getModels().size() == 0) {
866
		
829
			messages.add("Veuillez saisir au moins un auteur.");
867
		// - Envoyer au médiateur SSI personnes à modifier
830
		}
868
		if (listeAuteursAModifier.size() > 0) {
831
		
869
			int seqId = sequenceur.lancerRequeteSynchrone(this);
832
		String titre = titreChp.getValue();
870
			mediateur.modifierPublicationAPersonne(sequenceur, publication.getId(), listeAuteursAModifier, PublicationAPersonne.ROLE_AUTEUR, seqId);
833
		if (titre == null || titre.equals("")) {
871
		}
-
 
872
		
834
			messages.add("Veuillez saisir le titre de la publication !");
873
		sequenceur.enfilerRafraichissement(this, new Information("auteurs_enregistres"));
835
		}
874
	}
836
		
-
 
837
		String uri = uriChp.getValue();
-
 
838
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
-
 
839
			messages.add("L'URL saisie n'est pas valide !");
-
 
840
		}
-
 
841
		
-
 
842
		String datePublication = datePublicationChp.getRawValue();
-
 
843
		if (datePublication == null || datePublication.equals("")) {
-
 
844
			messages.add("Veuillez saisir une année de parution !");
-
 
845
		} else {
-
 
846
			if (!etreDateValide(datePublication)) {
-
 
847
				messages.add("Le format de l'année saisie est incorrect !");
-
 
848
			}
-
 
849
		}
-
 
850
		
875
	
Line 851... Line 876...
851
		String pages = pagesChp.getValue();
876
	private void formaterOrdreAuteurs() {
852
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
877
		ListStore<PublicationAPersonne> store = grilleAuteurs.getStore();
853
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
878
		List<PublicationAPersonne> auteurs = grilleAuteurs.getStore().getModels();
Line 879... Line 904...
879
			editeurCombobox.getCombo().setRawValue(publication.getEditeur());
904
			editeurCombobox.getCombo().setRawValue(publication.getEditeur());
880
		}
905
		}
881
	}
906
	}
Line 882... Line 907...
882
	
907
	
883
	private Publication collecterPublication() {
908
	private Publication collecterPublication() {
884
		
909
 
885
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
910
		Publication publicationCollectee = (Publication) publication.cloner(new Publication());
886
		publicationCollectee.setIdProjet(getValeurComboProjets());
911
		publicationCollectee.setIdProjet(getValeurComboProjets());
Line 887... Line 912...
887
		publicationCollectee.setAuteur(construireIntituleAuteur());
912
		publicationCollectee.setAuteur(construireIntituleAuteur());
Line 929... Line 954...
929
	
954
	
930
	private String construireIntituleEditeur() {
955
	private String construireIntituleEditeur() {
931
		String editeur = "";
956
		String editeur = "";
932
		if (editeurCombobox.getValeur() != null) {
957
		if (editeurCombobox.getValeur() != null) {
-
 
958
			Structure structure = new Structure(editeurCombobox.getValeur());
933
			Structure structure = new Structure(editeurCombobox.getValeur());
959
			if (structure == null) editeur = editeurCombobox.getCombo().getRawValue();
934
			editeur = structure.getNom();
960
			else editeur = structure.getNom();
935
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
961
		} else if (!UtilString.isEmpty(editeurCombobox.getCombo().getRawValue())) {
936
			editeur = editeurCombobox.getCombo().getRawValue();
962
			editeur = editeurCombobox.getCombo().getRawValue();
937
		}
963
		}
938
		return editeur;
964
		return editeur;
Line 939... Line 965...
939
	}
965
	}
940
	
966
	
Line 941... Line 967...
941
	private String construireIntituleAuteur() {
967
	private String construireIntituleAuteur() {
942
		String intituleAuteur = "";
968
		String intituleAuteur = "";
943
		
969
		
Line 944... Line 970...
944
		// TODO : ranger par ordre non-alphabétique
970
		// ranger par ordre désigné par le champ 'cpuap_ordre' de la table PublicationAPersonne
945
		grille.getStore().sort("nom", SortDir.ASC);
971
		grilleAuteurs.getStore().sort("ordre", SortDir.ASC);
946
		List<Personne> auteurs = grille.getStore().getModels();
972
		List<PublicationAPersonne> auteurs = grilleAuteurs.getStore().getModels();
947
		
973
		
948
		Iterator<Personne> itAuteurs = auteurs.iterator();
974
		Iterator<PublicationAPersonne> itAuteurs = auteurs.iterator();
949
		while (itAuteurs.hasNext())	{
975
		while (itAuteurs.hasNext())	{
950
			Personne personneCourante = itAuteurs.next();
976
			Personne personneCourante = itAuteurs.next().getPersonne();
951
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
977
			intituleAuteur += personneCourante.getNom().toUpperCase() + " " + personneCourante.getPrenom();
Line 1019... Line 1045...
1019
		} else {
1045
		} else {
1020
			return "";
1046
			return "";
1021
		}
1047
		}
1022
	}
1048
	}
Line -... Line 1049...
-
 
1049
	
-
 
1050
	 //---------------------------//
-
 
1051
	//    Méthodes publiques     //------------------------------------------------------------
-
 
1052
	
-
 
1053
	public boolean verifierFormulaire() {
-
 
1054
		boolean valide = true;
-
 
1055
		ArrayList<String> messages = new ArrayList<String>();
-
 
1056
		
-
 
1057
		// Tester si au moins un auteur est présent
-
 
1058
		if (grilleAuteurs.getStore().getModels().size() == 0) {
-
 
1059
			messages.add("Veuillez saisir au moins un auteur.");
-
 
1060
		}
-
 
1061
		
-
 
1062
		String titre = titreChp.getValue();
-
 
1063
		if (titre == null || titre.equals("")) {
-
 
1064
			messages.add("Veuillez saisir le titre de la publication !");
-
 
1065
		}
-
 
1066
		
-
 
1067
		String uri = uriChp.getValue();
-
 
1068
		if (uri != null && ! uri.isEmpty() && ! uri.matches(Pattern.url)) {
-
 
1069
			messages.add("L'URL saisie n'est pas valide !");
-
 
1070
		}
-
 
1071
		
-
 
1072
		String datePublication = datePublicationChp.getRawValue();
-
 
1073
		if (datePublication == null || datePublication.equals("")) {
-
 
1074
			messages.add("Veuillez saisir une année de parution !");
-
 
1075
		} else {
-
 
1076
			if (!etreDateValide(datePublication)) {
-
 
1077
				messages.add("Le format de l'année saisie est incorrect !");
-
 
1078
			}
-
 
1079
		}
-
 
1080
		
-
 
1081
		String pages = pagesChp.getValue();
-
 
1082
		String valeurPage = "(?:[0-9]+|[IVXLCDM]+|\\?)";
-
 
1083
		if (pages != null && ! pages.matches("^(?:"+valeurPage+"|"+valeurPage+"-"+valeurPage+")$")) {
-
 
1084
			messages.add("Le format des pages est incorrect !");
-
 
1085
		}
-
 
1086
		
-
 
1087
		if (messages.size() != 0) {
-
 
1088
			String[] tableauDeMessages = {};
-
 
1089
			tableauDeMessages = messages.toArray(tableauDeMessages);
-
 
1090
			MessageBox.alert("Erreurs de saisies", UtilArray.implode(tableauDeMessages, "<br />"), null);
-
 
1091
			valide = false;
-
 
1092
		}
-
 
1093
		return valide;		
-
 
1094
	}
-
 
1095
	
-
 
1096
	
-
 
1097
	 //-------------------//
-
 
1098
	//    Accesseurs     //------------------------------------------------------------
1023
	
1099
	
1024
	private String getValeurComboProjets() {
1100
	private String getValeurComboProjets() {
1025
		String valeur = "";
1101
		String valeur = "";
1026
		if (projetsCombo.getValeur() != null) {
1102
		if (projetsCombo.getValeur() != null) {
1027
			Projet projet = new Projet(projetsCombo.getValeur());
1103
			Projet projet = new Projet(projetsCombo.getValeur());
Line 1036... Line 1112...
1036
			} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
1112
			} else if (mode.equals(Formulaire.MODE_AJOUTER)) {
1037
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", mediateur.getProjetId()));
1113
				projetsCombo.getCombo().setValue(projetsCombo.getStore().findModel("cpr_id_projet", mediateur.getProjetId()));
1038
			}
1114
			}
1039
		}
1115
		}
1040
	}
1116
	}
-
 
1117
	
-
 
1118
	 //-------------------//
-
 
1119
	//    Rafraichir     //------------------------------------------------------------
-
 
1120
	
-
 
1121
	public void rafraichir(Object nouvellesDonnees) {
-
 
1122
		if (nouvellesDonnees instanceof Publication) {
-
 
1123
			publication = (Publication) nouvellesDonnees;
-
 
1124
		} else if (nouvellesDonnees instanceof PublicationAPersonneListe) {
-
 
1125
			rafraichirListeAuteurs((PublicationAPersonneListe) nouvellesDonnees);
-
 
1126
		} else if (nouvellesDonnees instanceof Information) {
-
 
1127
			rafraichirInformation((Information) nouvellesDonnees);
-
 
1128
		} else {
-
 
1129
			GWT.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()), null);
-
 
1130
		}
-
 
1131
	}
-
 
1132
	
-
 
1133
	private void rafraichirListeAuteurs(PublicationAPersonneListe auteurs) {
-
 
1134
		Iterator<String> it = auteurs.keySet().iterator();
-
 
1135
		while (it.hasNext()) {
-
 
1136
			PublicationAPersonne auteur = auteurs.get(it.next());
-
 
1137
			auteur.set("_etat_", aDonnee.ETAT_MODIFIE);
-
 
1138
			auteursInitialListe.put(auteur.getId(), auteur);
-
 
1139
		}
-
 
1140
		
-
 
1141
		grilleAuteurs.getStore().removeAll();
-
 
1142
		grilleAuteurs.getStore().add(auteursInitialListe.toList());
-
 
1143
		grilleAuteurs.getStore().sort("ordre", SortDir.ASC);
-
 
1144
		layout();
-
 
1145
	}
-
 
1146
	
-
 
1147
	private void rafraichirInformation(Information info) {
-
 
1148
		String type = info.getType();
-
 
1149
		
-
 
1150
		if (type.equals("auteurs_enregistres")) {
-
 
1151
			miseAJourAuteursInitialListe();
-
 
1152
			initialiserAuteurs();
-
 
1153
			repandreRafraichissement();
-
 
1154
			controlerFermeture();
-
 
1155
		} else if (type.equals("chargement_modifier_ok"))	{
-
 
1156
			peuplerFormulaire();
-
 
1157
			genererTitreFormulaire();
-
 
1158
		}
-
 
1159
 
-
 
1160
		if (type.equals("personne_ajoutee")) {
-
 
1161
			if (info.getDonnee(0) != null) {
-
 
1162
				Personne personne = (Personne) info.getDonnee(0);
-
 
1163
				PublicationAPersonne pap = new PublicationAPersonne();
-
 
1164
				pap.setPersonne(personne);
-
 
1165
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
-
 
1166
				ajouterDansGrille(pap);
-
 
1167
			}
-
 
1168
		} else if (type.equals("personne_modifiee")) {
-
 
1169
			if (info.getDonnee(0) != null) {
-
 
1170
				
-
 
1171
				// créer la nouvelle entrée
-
 
1172
				Personne personne = (Personne) info.getDonnee(0);
-
 
1173
				PublicationAPersonne pap = new PublicationAPersonne();
-
 
1174
				pap.setPersonne(personne);
-
 
1175
				if (modeDeCreation != Formulaire.MODE_AJOUTER) pap.setPublicationLiee(publication);
-
 
1176
				
-
 
1177
				// supprimer l'entrée précédente
-
 
1178
				PublicationAPersonne personneDansGrille = grilleAuteurs.getStore().findModel("id_personne", personne.getId());
-
 
1179
				int index = grilleAuteurs.getStore().indexOf(personneDansGrille);
-
 
1180
				grilleAuteurs.getStore().remove(personneDansGrille);
-
 
1181
				
-
 
1182
				// ajouter la nouvelle entrée dans la grille
-
 
1183
				ajouterDansGrille(pap, index);
-
 
1184
			}
-
 
1185
		} else if (info.getType().equals("modif_publication")) {
-
 
1186
			InfoLogger.display("Modification d'une publication", info.toString());
-
 
1187
			soumettreAuteurs();
-
 
1188
		} else if (info.getType().equals("ajout_publication")) {
-
 
1189
			if (info.getDonnee(0) != null && info.getDonnee(0) instanceof String && ((String) info.getDonnee(0)).matches("[0-9]+")) {
-
 
1190
				String idPublication = (String) info.getDonnee(0);
-
 
1191
				this.publicationId = idPublication;
-
 
1192
				soumettreAuteurs();
-
 
1193
				InfoLogger.display("Ajout d'une publication", "La publication '"+publicationId+"' a bien été ajoutée");
-
 
1194
			} else {
-
 
1195
				InfoLogger.display("Ajout d'une publication", info.toString());
-
 
1196
			}
-
 
1197
		}	
-
 
1198
	}
-
 
1199
	
-
 
1200
	private void repandreRafraichissement() {
-
 
1201
		if (vueExterneARafraichirApresValidation != null) {
-
 
1202
			String type = "publication_modifiee";
-
 
1203
			if (mode.equals(Formulaire.MODE_AJOUTER)) {
-
 
1204
				type = "publication_ajoutee";
-
 
1205
			}
-
 
1206
			Information info = new Information(type);
-
 
1207
			info.setDonnee(0, publication);
-
 
1208
			vueExterneARafraichirApresValidation.rafraichir(info);
-
 
1209
		}
-
 
1210
	}
-
 
1211
	
1041
}
1212
}
1042
1213