Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 101 Rev 138
1
package org.tela_botanica.client;
1
package org.tela_botanica.client;
2
 
2
 
3
import org.tela_botanica.client.image.ImageMediateur;
3
import org.tela_botanica.client.image.ImageMediateur;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
4
import org.tela_botanica.client.interfaces.Rafraichissable;
-
 
5
import org.tela_botanica.client.modeles.Configuration;
5
import org.tela_botanica.client.modeles.Utilisateur;
6
import org.tela_botanica.client.modeles.Utilisateur;
6
 
7
 
7
import org.tela_botanica.client.observation.ObservationMediateur;
8
import org.tela_botanica.client.observation.ObservationMediateur;
8
import org.tela_botanica.client.vues.EtatConnexionVue;
9
import org.tela_botanica.client.vues.EtatConnexionVue;
9
import org.tela_botanica.client.vues.FormulaireDeConnexionVue;
10
import org.tela_botanica.client.vues.FormulaireDeConnexionVue;
-
 
11
 
-
 
12
import com.google.gwt.core.client.JavaScriptObject;
-
 
13
import com.google.gwt.user.client.DOM;
-
 
14
import com.google.gwt.user.client.Event;
10
 
15
import com.google.gwt.user.client.Timer;
11
import com.google.gwt.user.client.Window;
16
import com.google.gwt.user.client.Window;
-
 
17
import com.google.gwt.user.client.ui.Image;
12
import com.google.gwt.user.client.ui.Image;
18
import com.gwtext.client.core.EventObject;
13
import com.gwtext.client.core.Function;
19
import com.gwtext.client.core.Function;
-
 
20
import com.gwtext.client.widgets.BoxComponent;
-
 
21
import com.gwtext.client.widgets.Component;
14
import com.gwtext.client.widgets.BoxComponent;
22
import com.gwtext.client.widgets.Container;
15
import com.gwtext.client.widgets.Panel;
23
import com.gwtext.client.widgets.Panel;
16
import com.gwtext.client.widgets.TabPanel;
24
import com.gwtext.client.widgets.TabPanel;
17
import com.gwtext.client.widgets.Tool;
25
import com.gwtext.client.widgets.Tool;
-
 
26
import com.gwtext.client.widgets.ToolTip;
-
 
27
import com.gwtext.client.widgets.event.ContainerListener;
-
 
28
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
-
 
29
import com.gwtext.client.widgets.event.PanelListener;
18
import com.gwtext.client.widgets.event.PanelListenerAdapter;
30
import com.gwtext.client.widgets.event.PanelListenerAdapter;
19
import com.gwtext.client.widgets.layout.FitLayout;
31
import com.gwtext.client.widgets.layout.FitLayout;
20
import com.gwtext.client.widgets.layout.RowLayout;
32
import com.gwtext.client.widgets.layout.RowLayout;
21
import com.gwtext.client.widgets.layout.RowLayoutData;
33
import com.gwtext.client.widgets.layout.RowLayoutData;
22
 
34
 
23
/**
35
/**
24
 * Mediateur gérant les interactions entre vues et les echanges de données
36
 * Mediateur gérant les interactions entre vues et les echanges de données
25
 * C'est un singleton. 
37
 * C'est un singleton. 
26
 * @author david delon 
38
 * @author david delon 
27
 *
39
 *
28
 */
40
 */
29
 
41
 
30
public class CarnetEnLigneMediateur implements Rafraichissable {
42
public class CarnetEnLigneMediateur implements Rafraichissable {
31
	
43
	
32
	
44
	
33
	/**
45
	/**
34
	 * booleen qui verifie l'unicite de l'instance
46
	 * booleen qui verifie l'unicite de l'instance
35
	 */
47
	 */
36
	private static boolean estInstancie = false ;
48
	private static boolean estInstancie = false ;
37
 
49
 
38
	/**
50
	/**
39
	 * pointeur vers le médiateur lui même (pour le pattern singleton)
51
	 * pointeur vers le médiateur lui même (pour le pattern singleton)
40
	 */
52
	 */
41
	private static CarnetEnLigneMediateur thisMediateur = null ;  
53
	private static CarnetEnLigneMediateur thisMediateur = null ;  
42
		
54
		
43
	/**
55
	/**
44
	 * modele de données
56
	 * modele de données
45
	 */
57
	 */
46
	
58
	
47
	private  CarnetEnLigneModele carnetEnLigneModele=null;
59
	private  CarnetEnLigneModele carnetEnLigneModele=null;
48
 
60
 
49
	
61
	
50
	/**
62
	/**
51
	 * panneau principal de l'application "Carnet en ligne"
63
	 * panneau principal de l'application "Carnet en ligne"
52
	 */
64
	 */
53
 
65
 
54
	private Panel panneauPrincipalCarnetEnLigne= null ;
66
	private Panel panneauPrincipalCarnetEnLigne= null ;
55
	
67
	
56
	
68
	
57
	
69
	
58
	/**
70
	/**
59
	 * panneau a onglet pour les observation et les images
71
	 * panneau a onglet pour les observation et les images
60
	 */ 
72
	 */ 
61
	
73
	
62
	
74
	
63
	private com.gwtext.client.widgets.TabPanel ongletsObservationsImages=null;
75
	private com.gwtext.client.widgets.TabPanel ongletsObservationsImages=null;
64
	
76
	
65
	
77
	
66
	/**
78
	/**
67
	 * Indicateur d'etat de la connexion utilisateur
79
	 * Indicateur d'etat de la connexion utilisateur
68
	 */
80
	 */
69
	
81
	
70
	private EtatConnexionVue etatConnexionVue=null;
82
	private EtatConnexionVue etatConnexionVue=null;
71
	
83
	
72
	
84
	
73
	/**
85
	/**
74
	 * Texte d'invite connexion  
86
	 * Texte d'invite connexion  
75
	 */
87
	 */
76
	private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica"; 
88
	private final String texteDeconnexion="Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica"; 
77
 
89
 
78
	/**
90
	/**
79
	 * Boolean indiquant un essai de connexion
91
	 * Boolean indiquant un essai de connexion
80
	 */
92
	 */
81
	
93
	
82
	private boolean tentativeConnection=false;
94
	private boolean tentativeConnection=false;
83
	
95
	
84
 
96
 
85
	/**
97
	/**
86
	 *  Formulaire de connexion (lazy instantiation)
98
	 *  Formulaire de connexion (lazy instantiation)
87
	 *  
99
	 *  
88
	 */
100
	 */
89
	
101
	
90
	private FormulaireDeConnexionVue formulaireDeConnexionVue=null;
102
	private FormulaireDeConnexionVue formulaireDeConnexionVue=null;
91
	
103
	
92
	/**
104
	/**
93
	 * 
105
	 * 
94
	 */
106
	 */
95
	private Panel bandeau = null ;
107
	private Panel bandeau = null ;
-
 
108
	
96
	
109
	Tool cacherPanneau = null ;
97
	
110
	
98
	/**
111
	/**
99
	 * Mediateur Gestion des images
112
	 * Mediateur Gestion des images
100
	 */
113
	 */
101
	
114
	
102
	private ImageMediateur imageMediateur=null;
115
	private ImageMediateur imageMediateur=null;
103
	
116
	
104
	/**
117
	/**
105
	 * Mediateur Gestion des observations
118
	 * Mediateur Gestion des observations
106
	 */
119
	 */
107
	
120
	
108
	private ObservationMediateur observationMediateur=null;
121
	private ObservationMediateur observationMediateur=null;
-
 
122
	
-
 
123
	/**
-
 
124
	 * Un tooltip pour l'aide
-
 
125
	 */
109
	
126
	private ToolTip tp = new ToolTip() ;
110
 
127
 
111
 
128
 
112
	/**
129
	/**
113
	 * Utilisateur en cours
130
	 * Utilisateur en cours
114
	 */
131
	 */
115
 
132
 
116
		
133
		
117
	private Utilisateur utilisateur=null; 
134
	private Utilisateur utilisateur=null; 
118
	
135
	
119
 
136
 
120
	
137
	
121
	public static CarnetEnLigneMediateur Instance()
138
	public static CarnetEnLigneMediateur Instance()
122
	{
139
	{
123
			if(!estInstancie || thisMediateur==null)
140
			if(!estInstancie || thisMediateur==null)
124
			{
141
			{
125
				estInstancie = true ;
142
				estInstancie = true ;
126
				thisMediateur = new CarnetEnLigneMediateur() ;
143
				thisMediateur = new CarnetEnLigneMediateur() ;
127
			}
144
			}
128
			
145
			
129
			return thisMediateur ;
146
			return thisMediateur ;
130
			
147
			
131
	}
148
	}
132
	
149
	
133
	
150
	
134
	/**
151
	/**
135
	 * constructeur privé (on accède a la classe par la méthode getInstance
152
	 * constructeur privé (on accède a la classe par la méthode getInstance
136
	 */
153
	 */
137
	
154
	
138
	private CarnetEnLigneMediateur() {
155
	private CarnetEnLigneMediateur() {
139
	
156
	
140
		
157
		
141
		panneauPrincipalCarnetEnLigne = new Panel("Carnet en ligne");
158
		panneauPrincipalCarnetEnLigne = new Panel("Carnet en ligne");
142
		
159
		
143
//		Disposition 
160
//		Disposition 
144
		
161
		
145
		panneauPrincipalCarnetEnLigne.setLayout(new RowLayout());
162
		panneauPrincipalCarnetEnLigne.setLayout(new RowLayout());
146
 
163
 
147
		
164
		
148
//		On crée un modèle d'acces aux donnnes 
165
//		On crée un modèle d'acces aux donnnes 
149
		
166
		
150
		carnetEnLigneModele=CarnetEnLigneModele.Instance();
167
		carnetEnLigneModele=CarnetEnLigneModele.Instance();
151
		
168
		
152
		
169
		
153
		//Image bandeau = new Image("Bandeau-haut.gif") ;
170
		//Image bandeau = new Image("Bandeau-haut.gif") ;
154
		bandeau = new Panel() ;
171
		bandeau = new Panel();
-
 
172
		Image logoND = new Image("logo_n_d.gif") ;
-
 
173
		logoND.setStylePrimaryName("x-img-logo_nd") ;
155
		bandeau.add(new Image("bandeau-haut.gif")) ;
174
		final Image img = new Image("bandeau-haut.gif") {
-
 
175
			public void onBrowserEvent(Event e) {
-
 
176
				
-
 
177
				if(DOM.eventGetType(e) == Event.ONCLICK)
-
 
178
				{
-
 
179
					bandeau.toggleCollapse(true);
-
 
180
				}
-
 
181
				if(DOM.eventGetType(e) == Event.ONMOUSEOVER) {
-
 
182
					tp.setHtml("<div class=\"x-tooltip-help\"> Cliquez sur l'image ou sur la flèche en haut à droite pour replier le panneau </div>");
-
 
183
					tp.showAt(0,0);
-
 
184
				}
-
 
185
				
-
 
186
				
-
 
187
				if(DOM.eventGetType(e) == Event.ONMOUSEOUT) {
-
 
188
					if(tp.isVisible()) {
-
 
189
						tp.hide();
-
 
190
					}
-
 
191
				}
-
 
192
			}
-
 
193
		};
-
 
194
		bandeau.add(img) ;
-
 
195
		img.setSize("50%", "100%");
-
 
196
		bandeau.add(logoND) ;
-
 
197
		logoND.setSize("10%", "100%");
156
		bandeau.setId("x-up-bandeau") ;
198
		bandeau.setId("x-up-bandeau") ;
157
		bandeau.setBorder(false) ;
199
		bandeau.setBorder(false) ;
158
		// La vue affichant le statut de la connexion 
200
		// La vue affichant le statut de la connexion 
159
		bandeau.setSize(800,100) ;
201
		bandeau.setSize("60%","80%") ;
160
		etatConnexionVue=new EtatConnexionVue(this);
202
		etatConnexionVue=new EtatConnexionVue(this);
161
		etatConnexionVue.setLayout(new FitLayout()) ;
203
		etatConnexionVue.setLayout(new FitLayout()) ;
162
		
204
		
163
		// Le panneau à onglet qui contient les 2 applications Observation et Images 
205
		// Le panneau à onglet qui contient les 2 applications Observation et Images 
164
		
206
		
165
		ongletsObservationsImages = new TabPanel();
207
		ongletsObservationsImages = new TabPanel();
166
		
208
		
167
		panneauPrincipalCarnetEnLigne.add(etatConnexionVue,new RowLayoutData(20));
209
		panneauPrincipalCarnetEnLigne.add(etatConnexionVue,new RowLayoutData(20));
168
		panneauPrincipalCarnetEnLigne.add(bandeau) ;
210
		panneauPrincipalCarnetEnLigne.add(bandeau, new RowLayoutData("10%")) ;
-
 
211
		
169
		
212
		img.sinkEvents(Event.ONCLICK);
-
 
213
		img.sinkEvents(Event.ONMOUSEOVER);
170
		//	on ajoute le panneau a onglet au panneau principal
214
		img.sinkEvents(Event.ONMOUSEOUT);
171
		
-
 
172
		panneauPrincipalCarnetEnLigne.add(ongletsObservationsImages);
215
		
173
		
216
		//	on ajoute le panneau a onglet au panneau principal
174
		panneauPrincipalCarnetEnLigne.addTool(new Tool(Tool.UP, new Function() {
217
		cacherPanneau = new Tool(Tool.TOGGLE, new Function() {
175
 
218
 
176
			public void execute() {
219
			public void execute() {
177
				
220
				
178
				if(!bandeau.isCollapsed()) {
221
				if(!bandeau.isCollapsed()) {
179
					
-
 
180
					etatConnexionVue.toggleCollapse(true) ;
-
 
181
					bandeau.toggleCollapse(true) ;
222
					bandeau.toggleCollapse(true) ;
182
					
-
 
183
				}
223
				}
184
				else {
224
				else {
185
					etatConnexionVue.toggleCollapse(true) ;
-
 
186
					bandeau.toggleCollapse(true) ;
225
					bandeau.toggleCollapse(true) ;
187
				}
226
				}
188
				
227
				
189
			}
228
			}
190
			
229
			
-
 
230
		}) ;
-
 
231
		
-
 
232
		
-
 
233
		Tool iconeAide = new Tool(Tool.HELP, new Function() {
-
 
234
 
-
 
235
			public void execute() {
-
 
236
				String aideUrl = Configuration.getAideBaseUrl() ;
-
 
237
				Window.open(aideUrl, "", "") ;		
-
 
238
			}
-
 
239
			
-
 
240
		}) ;
-
 
241
		
-
 
242
		panneauPrincipalCarnetEnLigne.add(ongletsObservationsImages);
-
 
243
		panneauPrincipalCarnetEnLigne.addTool(iconeAide);
-
 
244
		panneauPrincipalCarnetEnLigne.addTool(cacherPanneau) ;
-
 
245
		
191
		})) ;
-
 
192
		
246
		panneauPrincipalCarnetEnLigne.setAutoScroll(true);
193
	
247
		
194
		// On ajoute les applications 		
248
		// On ajoute les applications 		
195
		observationMediateur = ObservationMediateur.Instance(this);
249
		observationMediateur = ObservationMediateur.Instance(this);
196
		imageMediateur= ImageMediateur.Instance(this);
250
		imageMediateur= ImageMediateur.Instance(this);
197
		
251
		
198
		//temp dd viewport desactive ajout de cette  ligne
252
		//temp dd viewport desactive ajout de cette  ligne
199
		getPanneauPrincipalCarnetEnLigne().setHeight(Window.getClientHeight()) ;
253
		getPanneauPrincipalCarnetEnLigne().setHeight(Window.getClientHeight()) ;
200
		// 
-
 
201
		
-
 
202
		//panneauPrincipalCarnetEnLigne.setSize(Window.getClientWidth(), Window.getClientHeight() - etatConnexionVue.getHeight()) ;
-
 
203
		observationMediateur.getPanneauPrincipalObservation().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ;
-
 
204
		imageMediateur.getPanneauPrincipalImage().setSize(panneauPrincipalCarnetEnLigne.getWidth(),panneauPrincipalCarnetEnLigne.getHeight() - 20) ;
-
 
205
		
254
		
206
		//	on ajoute les panneaux  principaux des applications au panneau à onglets
255
		//	on ajoute les panneaux  principaux des applications au panneau à onglets
207
		ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation());
256
		ongletsObservationsImages.add(observationMediateur.getPanneauPrincipalObservation());
208
		ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage());
257
		ongletsObservationsImages.add(imageMediateur.getPanneauPrincipalImage());
209
		
258
		
210
	}
259
	}
211
	
260
	
212
	
261
	
213
	public void getEtatUtilisateur() { 
262
	public void getEtatUtilisateur() { 
214
		
263
		
215
			
264
			
216
		carnetEnLigneModele.getEtatUtilisateur(this); 
265
		carnetEnLigneModele.getEtatUtilisateur(this); 
217
				
266
				
218
		
267
		
219
	}
268
	}
220
 
269
 
221
 
270
 
222
	// Methode publiques
271
	// Methode publiques
223
	
272
	
224
	
273
	
225
	
274
	
226
	/**
275
	/**
227
	 * Recherche Identifiant utilisateur en cours et etat de connection
276
	 * Recherche Identifiant utilisateur en cours et etat de connection
228
	 * @return Utilisateur
277
	 * @return Utilisateur
229
	 */
278
	 */
230
	
279
	
231
	
280
	
232
	public Utilisateur getUtilisateur() {
281
	public Utilisateur getUtilisateur() {
233
		return utilisateur;
282
		return utilisateur;
234
	}
283
	}
235
 
284
 
236
	/**
285
	/**
237
	 * Deconnecte l'utilisateur passe en parametre
286
	 * Deconnecte l'utilisateur passe en parametre
238
	 */
287
	 */
239
    public void deconnecterUtilisateur() {
288
    public void deconnecterUtilisateur() {
240
 
-
 
-
 
289
 
241
			
290
    	// TODO: vider proprement toutes les vues (méthode à voir)
-
 
291
		carnetEnLigneModele.deconnecterUtilisateur(this, utilisateur.getIdentifiant());
242
		carnetEnLigneModele.deconnecterUtilisateur(this, utilisateur.getIdentifiant());
292
		
243
		
293
		observationMediateur.deconnecterUtilisateur() ;
244
	}
294
	}
245
 
295
 
246
	public void connecterUtilisateur(String login, String password) {
296
	public void connecterUtilisateur(String login, String password) {
247
	
297
	
248
		tentativeConnection=true;
298
		tentativeConnection=true;
249
		carnetEnLigneModele.connecterUtilisateur(this, login, password); 
299
		carnetEnLigneModele.connecterUtilisateur(this, login, password); 
250
		
300
		
251
	}
301
	}
252
 
302
 
253
 
303
 
254
	
304
	
255
	/**
305
	/**
256
	 *  Affichage etat de la connexion
306
	 *  Affichage etat de la connexion
257
	 */
307
	 */
258
	
308
	
259
	
309
	
260
	private void afficheEtatConnexion() {
310
	private void afficheEtatConnexion() {
261
		 
311
		 
262
		
312
		
263
		if (!utilisateur.isIdentifie()) {
313
		if (!utilisateur.isIdentifie()) {
264
			   etatConnexionVue.setEtat(texteDeconnexion,false);
314
			   etatConnexionVue.setEtat(texteDeconnexion,false);
265
		}
315
		}
266
		else {
316
		else {
267
		      etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);
317
		      etatConnexionVue.setEtat(utilisateur.getIdentifiant()+ " (deconnexion)",true);
268
		}
318
		}
269
		
319
		
270
	}
320
	}
271
 
321
 
272
	
322
	
273
	/**
323
	/**
274
	 * 
324
	 * 
275
	 * Affichage boite de connexion
325
	 * Affichage boite de connexion
276
	 *
326
	 *
277
	 */
327
	 */
278
	
328
	
279
	
329
	
280
	public void afficherDialogueConnexion() {
330
	public void afficherDialogueConnexion() {
281
		
331
		
282
		  if (formulaireDeConnexionVue==null) { 
332
		  if (formulaireDeConnexionVue==null) { 
283
			  formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);
333
			  formulaireDeConnexionVue= new FormulaireDeConnexionVue(this);
284
		  }
334
		  }
285
		  
335
		  
286
		  // On le positionne à peu près au milieu de l'écran
336
		  // On le positionne à peu près au milieu de l'écran
287
		  int left = (Window.getClientWidth() - 512) / 2;
337
		  int left = (Window.getClientWidth() - 512) / 2;
288
		  int top = (Window.getClientHeight() - 256) / 2;
338
		  int top = (Window.getClientHeight() - 256) / 2;
289
		  
-
 
290
		  
339
		  
291
		  formulaireDeConnexionVue.setPopupPosition(left, top);
340
		  formulaireDeConnexionVue.setPopupPosition(left, top);
292
		  formulaireDeConnexionVue.show();
341
		  formulaireDeConnexionVue.show();
293
		
342
		
294
	}
343
	}
295
 
344
 
296
 
345
 
297
	
346
	
298
 
347
 
299
	public Panel getPanneauPrincipalCarnetEnLigne() {
348
	public Panel getPanneauPrincipalCarnetEnLigne() {
300
		return panneauPrincipalCarnetEnLigne;
349
		return panneauPrincipalCarnetEnLigne;
301
	}
350
	}
302
 
351
 
303
	
352
	
304
//	 TODO : repandre rafraichissement
353
//	 TODO : repandre rafraichissement
305
 
354
 
306
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
355
	public void rafraichir(Object nouvelleDonnees, boolean repandreRaffraichissement) {
307
 
356
 
308
			if (nouvelleDonnees instanceof Utilisateur) {
357
			if (nouvelleDonnees instanceof Utilisateur) {
309
							      
358
							      
310
				utilisateur = (Utilisateur) nouvelleDonnees;
359
				utilisateur = (Utilisateur) nouvelleDonnees;
311
				
-
 
312
				imageMediateur.connecterUtilisateur() ;
-
 
313
								
360
								
314
				afficheEtatConnexion();
361
				afficheEtatConnexion();
315
				
362
				
316
				if ((tentativeConnection) && !utilisateur.isIdentifie()) {
363
				if ((tentativeConnection) && !utilisateur.isIdentifie()) {
317
			
364
			
318
					//formulaireDeConnexionVue.afficherMessageAlerte();
365
					//formulaireDeConnexionVue.afficherMessageAlerte();
319
				}
366
				}
320
				else {
367
				else {
321
					if ((tentativeConnection) && utilisateur.isIdentifie()) {						
368
					if ((tentativeConnection) && utilisateur.isIdentifie()) {						
322
						formulaireDeConnexionVue.hide();
369
						formulaireDeConnexionVue.hide();
323
					}
370
					}
324
				}
371
				}
325
 
-
 
-
 
372
 
326
				
373
				imageMediateur.setIdentifiant(utilisateur.getIdentifiant());
327
			// On lance l'affichage des observations
374
			// On lance l'affichage des observations
328
				observationMediateur.obtenirNombreObservation();
375
				observationMediateur.obtenirNombreObservation();
329
 
376
 
330
			}
377
			}
331
 
378
 
332
	}
379
	}
333
 
380
 
334
 
381
 
335
	public void obtenirListeObservations(Rafraichissable r) {
382
	public void obtenirListeObservations(Rafraichissable r) {
336
		
383
		
337
		observationMediateur.obtenirCacheObservation(r) ;
384
		observationMediateur.obtenirCacheObservation(r) ;
338
		
385
		
339
	}
386
	}
340
 
387
 
341
 
388
 
342
	public void donneesRafraichies(Object nouvelleDonnees) {
389
	public void donneesRafraichies(Object nouvelleDonnees) {
343
		
390
		
344
		imageMediateur.donneesExterieures(nouvelleDonnees) ;
391
		imageMediateur.donneesExterieures(nouvelleDonnees) ;
345
		
392
		
346
	}
393
	}
347
 
394
 
348
		
395
		
349
 
396
 
350
}
397
}