Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 81 Rev 104
1
package org.tela_botanica.client.vues;
1
package org.tela_botanica.client.vues;
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.ListePaginable;
4
import org.tela_botanica.client.interfaces.ListePaginable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.VueListable;
6
import org.tela_botanica.client.interfaces.VueListable;
7
 
7
 
8
import com.google.gwt.user.client.Element;
8
import com.google.gwt.user.client.Element;
9
import com.google.gwt.user.client.ui.HTML;
9
import com.google.gwt.user.client.ui.HTML;
10
import com.gwtext.client.core.EventObject;
10
import com.gwtext.client.core.EventObject;
11
import com.gwtext.client.core.XTemplate;
11
import com.gwtext.client.core.XTemplate;
12
import com.gwtext.client.data.FieldDef;
12
import com.gwtext.client.data.FieldDef;
13
import com.gwtext.client.data.IntegerFieldDef;
13
import com.gwtext.client.data.IntegerFieldDef;
14
import com.gwtext.client.data.Record;
14
import com.gwtext.client.data.Record;
15
import com.gwtext.client.data.RecordDef;
15
import com.gwtext.client.data.RecordDef;
16
import com.gwtext.client.data.Store;
16
import com.gwtext.client.data.Store;
17
import com.gwtext.client.data.StringFieldDef;
17
import com.gwtext.client.data.StringFieldDef;
18
import com.gwtext.client.dd.DragData;
18
import com.gwtext.client.dd.DragData;
19
import com.gwtext.client.dd.DragSource;
19
import com.gwtext.client.dd.DragSource;
20
import com.gwtext.client.dd.DropTarget;
20
import com.gwtext.client.dd.DropTarget;
21
import com.gwtext.client.dd.DropTargetConfig;
21
import com.gwtext.client.dd.DropTargetConfig;
22
import com.gwtext.client.util.Format;
22
import com.gwtext.client.util.Format;
23
import com.gwtext.client.widgets.Component;
23
import com.gwtext.client.widgets.Component;
24
import com.gwtext.client.widgets.DataView;
24
import com.gwtext.client.widgets.DataView;
25
import com.gwtext.client.widgets.Panel;
25
import com.gwtext.client.widgets.Panel;
26
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
26
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
27
import com.gwtext.client.widgets.event.DataViewListenerAdapter;
27
import com.gwtext.client.widgets.event.DataViewListenerAdapter;
28
import com.gwtext.client.widgets.grid.GridDragData;
28
import com.gwtext.client.widgets.grid.GridDragData;
29
 
29
 
30
/**
30
/**
31
 * Galerie d'images miniatures Avec barre de pagination
31
 * Galerie d'images miniatures Avec barre de pagination
32
 * 
32
 * 
33
 * @author aurelien
33
 * @author aurelien
34
 */
34
 */
35
public class GalerieImageVue extends Panel implements Rafraichissable,
35
public class GalerieImageVue extends Panel implements Rafraichissable,
36
		VueListable, ListePaginable {
36
		VueListable, ListePaginable {
37
 
37
 
38
	/**
38
	/**
39
	 * instance du médiateur
39
	 * instance du médiateur
40
	 */
40
	 */
41
	private ImageMediateur iMediateur = null;
41
	private ImageMediateur iMediateur = null;
42
	/**
42
	/**
43
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
43
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
44
	 * d'afficher les données
44
	 * d'afficher les données
45
	 */
45
	 */
46
	private DataView dView = null;
46
	private DataView dView = null;
47
	/**
47
	/**
48
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
48
	 * Dataview, littéralement "vue de données" qui permet de définir la manière
49
	 * d'afficher les données
49
	 * d'afficher les données
50
	 */
50
	 */
51
	private Store st = null;
51
	private Store st = null;
52
	/**
52
	/**
53
	 * Barre de pagination gérant l'affichage d'un nombre donné d'élements par
53
	 * Barre de pagination gérant l'affichage d'un nombre donné d'élements par
54
	 * page et la navigation entre eux
54
	 * page et la navigation entre eux
55
	 */
55
	 */
56
	private BarrePaginationVue pt = null;
56
	private BarrePaginationVue pt = null;
57
	/**
57
	/**
58
	 * Booleen indiquant si la galerie est instanciée ou pas
58
	 * Booleen indiquant si la galerie est instanciée ou pas
59
	 */
59
	 */
60
	private boolean estInstancie = false;
60
	private boolean estInstancie = false;
61
 
61
 
62
	/**
62
	/**
63
	 * Constructeur sans argument, privé car ne doit pas être utilisé
63
	 * Constructeur sans argument, privé car ne doit pas être utilisé
64
	 */
64
	 */
65
	@SuppressWarnings("unused")
65
	@SuppressWarnings("unused")
66
	private GalerieImageVue() {
66
	private GalerieImageVue() {
67
		super();
67
		super();
68
	}
68
	}
69
 
69
 
70
	/**
70
	/**
71
	 * Constructeur avec argument
71
	 * Constructeur avec argument
72
	 * 
72
	 * 
73
	 * @param im
73
	 * @param im
74
	 *            le médiateur avec lequel la vue va communiquer
74
	 *            le médiateur avec lequel la vue va communiquer
75
	 */
75
	 */
76
	public GalerieImageVue(ImageMediateur im) {
76
	public GalerieImageVue(ImageMediateur im) {
77
		super("Galerie");
77
		super("Galerie");
78
		iMediateur = im;
78
		iMediateur = im;
79
 
79
 
80
		// on ajoute des listeners au composant tout entier
80
		// on ajoute des listeners au composant tout entier
81
		this.addListener(new ContainerListenerAdapter() {
81
		this.addListener(new ContainerListenerAdapter() {
82
 
82
 
83
			// pour gagner du temps on n'instancie la vue en elle même que lors
83
			// pour gagner du temps on n'instancie la vue en elle même que lors
84
			// du premier affichage (lazy rendering)
84
			// du premier affichage (lazy rendering)
85
 
85
 
86
			public void onShow(Component component) {
86
			public void onShow(Component component) {
87
 
87
 
88
				if (!estInstancie) {
88
				if (!estInstancie) {
89
					initialiser();
89
					initialiser();
90
				}
90
				}
91
			}
91
			}
92
 
92
 
93
		});
93
		});
94
 
94
 
95
		// et on ajoute la tool bar
95
		// et on ajoute la tool bar
96
		pt = new BarrePaginationVue(this);
96
		pt = new BarrePaginationVue(this);
97
		pt.setLabelElement("Images");
97
		pt.setLabelElement("Images");
98
		pt.setTaillePageParDefaut(50);
98
		pt.setTaillePageParDefaut(50);
99
		this.setBottomToolbar(pt);
99
		this.setBottomToolbar(pt);
100
 
100
 
101
	}
101
	}
102
 
102
 
103
	/**
103
	/**
104
	 * Ajoute tous les listeners nécessaires à l'intercation utilisateur avec la
104
	 * Ajoute tous les listeners nécessaires à l'intercation utilisateur avec la
105
	 * vue de données
105
	 * vue de données
106
	 */
106
	 */
107
	public void ajouterListenersDataView() {
107
	public void ajouterListenersDataView() {
108
 
108
 
109
		// ajout de listeners pour la gestion de la selection
109
		// ajout de listeners pour la gestion de la selection
110
		// dans la galerie
110
		// dans la galerie
111
		dView.addListener(new DataViewListenerAdapter() {
111
		dView.addListener(new DataViewListenerAdapter() {
112
 
112
 
113
			// gestion du clic sur une image
113
			// gestion du clic sur une image
114
 
114
 
115
			public void onClick(DataView source, int index, Element node,
115
			public void onClick(DataView source, int index, Element node,
116
					EventObject e) {
116
					EventObject e) {
117
 
117
 
118
				// on en notifie le médiateur
118
				// on en notifie le médiateur
119
				getIMediateur().clicGalerieImage(index, node, e);
119
				getIMediateur().clicGalerieImage(index, node, e);
120
 
120
 
121
			}
121
			}
122
 
122
 
123
			// gestion du clic droit
123
			// gestion du clic droit
124
 
124
 
125
			public void onContextMenu(DataView source, int index, Element node,
125
			public void onContextMenu(DataView source, int index, Element node,
126
					EventObject e) {
126
					EventObject e) {
127
 
127
 
128
				// on stoppe l'évenement
128
				// on stoppe l'évenement
129
				e.stopEvent();
129
				e.stopEvent();
130
				// et on notifie le médiateur
130
				// et on notifie le médiateur
131
				getIMediateur().montrerContextMenu(e);
131
				getIMediateur().montrerContextMenu(e);
132
 
132
 
133
			}
133
			}
134
 
134
 
135
			// gestion du double clic
135
			// gestion du double clic
136
 
136
 
137
			public void onDblClick(DataView source, int index, Element node,
137
			public void onDblClick(DataView source, int index, Element node,
138
					EventObject e) {
138
					EventObject e) {
139
 
139
 
140
				// on notife le mediateur
140
				// on notife le mediateur
141
				getIMediateur().clicGalerieImage(index, node, e);
141
				getIMediateur().clicGalerieImage(index, node, e);
142
 
142
 
143
			}
143
			}
144
 
144
 
145
			// gestion des actions en fonction de la selection
145
			// gestion des actions en fonction de la selection
146
 
146
 
147
			public void onSelectionChange(DataView view, Element[] selections) {
147
			public void onSelectionChange(DataView view, Element[] selections) {
148
 
148
 
149
				// s'il n'y a aucun élement sélectionné
149
				// s'il n'y a aucun élement sélectionné
150
				if (selections.length <= 0) {
150
				if (selections.length <= 0) {
151
					// on en notifie le médiateur
151
					// on en notifie le médiateur
152
					getIMediateur().aucuneSelection();
152
					getIMediateur().aucuneSelection();
153
				} else {
153
				} else {
154
					// sinon on notifie le médiateur
154
					// sinon on notifie le médiateur
155
					getIMediateur().selection();
155
					getIMediateur().selection();
156
					// et on lui demande de synchroniser la séléction avec les
156
					// et on lui demande de synchroniser la séléction avec les
157
					// autres vues
157
					// autres vues
158
					getIMediateur().synchroniserSelection("galerie");
158
					getIMediateur().synchroniserSelection("galerie");
159
				}
159
				}
160
			}
160
			}
161
 
161
 
162
		});
162
		});
163
	}
163
	}
164
 
164
 
165
	/**
165
	/**
166
	 * Accesseur pour la dataview
166
	 * Accesseur pour la dataview
167
	 * 
167
	 * 
168
	 * @return la dataview
168
	 * @return la dataview
169
	 */
169
	 */
170
	public DataView getDView() {
170
	public DataView getDView() {
171
		return dView;
171
		return dView;
172
	}
172
	}
173
 
173
 
174
	/**
174
	/**
175
	 * Renvoie les ids des images sélectionnées
175
	 * Renvoie les ids des images sélectionnées
176
	 * 
176
	 * 
177
	 * @return un tableau de String contenant les identifiants des images
177
	 * @return un tableau de String contenant les identifiants des images
178
	 *         sélectionnées
178
	 *         sélectionnées
179
	 */
179
	 */
180
	public String[] getIdSelectionnees() {
180
	public String[] getIdSelectionnees() {
181
		Record[] selection = getDView().getSelectedRecords();
181
		Record[] selection = getDView().getSelectedRecords();
182
		int taille = selection.length;
182
		int taille = selection.length;
183
		String id_selection[] = new String[taille];
183
		String id_selection[] = new String[taille];
184
 
184
 
185
		for (int i = 0; i < selection.length; i++) {
185
		for (int i = 0; i < selection.length; i++) {
186
 
186
 
187
			id_selection[i] = selection[i].getAsString("num_image");
187
			id_selection[i] = selection[i].getAsString("num_image");
188
		}
188
		}
189
 
189
 
190
		return id_selection;
190
		return id_selection;
191
	}
191
	}
192
 
192
 
193
	/**
193
	/**
194
	 * Accesseur pour le médiateur
194
	 * Accesseur pour le médiateur
195
	 * 
195
	 * 
196
	 * @return le médiateur associé à la vue
196
	 * @return le médiateur associé à la vue
197
	 */
197
	 */
198
	public ImageMediateur getIMediateur() {
198
	public ImageMediateur getIMediateur() {
199
		return iMediateur;
199
		return iMediateur;
200
	}
200
	}
201
 
201
 
202
	/**
202
	/**
203
	 * Accesseur pour le store
203
	 * Accesseur pour le store
204
	 * 
204
	 * 
205
	 * @return le store associé à la vue
205
	 * @return le store associé à la vue
206
	 */
206
	 */
207
	public Store getSt() {
207
	public Store getSt() {
208
		return st;
208
		return st;
209
	}
209
	}
210
 
210
 
211
	/**
211
	/**
212
	 * Accesseur pour la toolbar
212
	 * Accesseur pour la toolbar
213
	 * 
213
	 * 
214
	 * @return la toolbar associée à la vue
214
	 * @return la toolbar associée à la vue
215
	 */
215
	 */
216
	public BarrePaginationVue getToolBarVue() {
216
	public BarrePaginationVue getToolBarVue() {
217
		return pt;
217
		return pt;
218
	}
218
	}
219
 
219
 
220
	/**
220
	/**
221
	 * Fonction d'initialisation du contenu (appelée lors du premier affichage
221
	 * Fonction d'initialisation du contenu (appelée lors du premier affichage
222
	 * de la liste)
222
	 * de la liste)
223
	 */
223
	 */
224
	public void initialiser() {
224
	public void initialiser() {
225
 
225
 
226
		// Preparation de la dataview et du template
226
		// Preparation de la dataview et du template
227
		// le template va créer une div contenant une image
227
		// le template va créer une div contenant une image
228
		// pour chacune des photos
228
		// pour chacune des photos
229
		final XTemplate template = new XTemplate(
229
		final XTemplate template = new XTemplate(
230
				new String[] {
230
				new String[] {
231
						"<tpl for='.'>",
231
						"<tpl for='.'>",
232
						"<div class='thumb-wrap' id='{num_image}'>",
232
						"<div class='thumb-wrap' id='{num_image}'>",
233
						"<div class='thumb'><img src='{url_image_M}' title='{num_image}'></div>",
233
						"<div class='thumb'><img src='{url_image_M}' title='{num_image}'></div>",
234
						"<span>{nom}</span></div>", "</tpl>",
234
						"<span>{nom}</span></div>", "</tpl>",
235
						"<div class='x-clear'></div>" });
235
						"<div class='x-clear'></div>" });
236
		// pour des raisons de performances on compile le template en une
236
		// pour des raisons de performances on compile le template en une
237
		// fonction
237
		// fonction
238
		template.compile();
238
		template.compile();
239
 
239
 
240
		// la dataview affichera les images en accord avec le template
240
		// la dataview affichera les images en accord avec le template
241
		// cree precedemment
241
		// cree precedemment
242
		dView = new DataView("div.thumb-wrap") {
242
		dView = new DataView("div.thumb-wrap") {
243
 
243
 
244
			public void prepareData(Data data) {
244
			public void prepareData(Data data) {
245
				data.setProperty("shortName", Format.ellipsis(data
245
				data.setProperty("shortName", Format.ellipsis(data
246
						.getProperty("num_image"), 15));	
246
						.getProperty("num_image"), 15));	
247
			}
247
			}
248
			
248
			
249
		};
249
		};
250
		dView.setTpl(template);
250
		dView.setTpl(template);
251
 
251
 
252
		// parametre d'affichage de la dataview
252
		// parametre d'affichage de la dataview
253
		this.setAutoScroll(true);
253
		this.setAutoScroll(true);
254
		dView.setAutoHeight(true);
254
		dView.setAutoHeight(true);
255
		dView.setMultiSelect(true);
255
		dView.setMultiSelect(true);
256
		dView.setOverCls("x-view-over");
256
		dView.setOverCls("x-view-over");
257
		dView.setEmptyText("Aucune image à afficher");
257
		dView.setEmptyText("Aucune image à afficher. Si vous n'en avez pas encore envoyé, selectionnez le menu \"Fichiers\" puis \"Uploader des images\"");
258
 
258
 
259
		// creation du store
259
		// creation du store
260
		FieldDef defNumImage = new IntegerFieldDef("num_image");
260
		FieldDef defNumImage = new IntegerFieldDef("num_image");
261
		FieldDef defDatImage = new StringFieldDef("dat_image");
261
		FieldDef defDatImage = new StringFieldDef("dat_image");
262
		FieldDef defLieImage = new StringFieldDef("lie_image");
262
		FieldDef defLieImage = new StringFieldDef("lie_image");
263
		FieldDef defAppImage = new StringFieldDef("app_image");
263
		FieldDef defAppImage = new StringFieldDef("app_image");
264
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
264
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
265
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
265
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
266
		FieldDef defUrlImage = new StringFieldDef("url_image");
266
		FieldDef defUrlImage = new StringFieldDef("url_image");
267
		FieldDef[] defTab = { defNumImage, defDatImage, defLieImage,
267
		FieldDef[] defTab = { defNumImage, defDatImage, defLieImage,
268
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage };
268
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage };
269
		RecordDef rd = new RecordDef(defTab);
269
		RecordDef rd = new RecordDef(defTab);
270
		st = new Store(rd);
270
		st = new Store(rd);
271
		dView.setStore(st);
271
		dView.setStore(st);
272
 
272
 
273
		this.getDView().setLoadingText("chargement");
273
		this.getDView().setLoadingText("chargement");
274
 
274
 
275
		// ajouts de la gestion des evenements pour la dataview
275
		// ajouts de la gestion des evenements pour la dataview
276
		ajouterListenersDataView();
276
		ajouterListenersDataView();
277
		configDragAndDrop() ;
277
		configDragAndDrop() ;
278
 
278
 
279
		this.add(dView);
279
		this.add(dView);
280
 
280
 
281
		// enfin on envoie une demande de données au médiateur
281
		// enfin on envoie une demande de données au médiateur
282
		getIMediateur().obtenirPhotoGalerie(this);
282
		getIMediateur().obtenirPhotoGalerie(this);
283
		// et on déclare le composant comme instancié
283
		// et on déclare le composant comme instancié
284
		estInstancie = true;
284
		estInstancie = true;
285
	}
285
	}
286
	
286
	
287
	public void configDragAndDrop()
287
	public void configDragAndDrop()
288
	{
288
	{
289
		// on fabrique la nouvelle configuration
289
		// on fabrique la nouvelle configuration
290
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
290
		// les éléments sur lesquels on fait du drag 'n drop doivent tous avoir le même ddGroup
291
		DropTargetConfig dtc = new DropTargetConfig();
291
		DropTargetConfig dtc = new DropTargetConfig();
292
		dtc.setdDdGroup("DragGroupName");
292
		dtc.setdDdGroup("DragGroupName");
293
 
293
 
294
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
294
		//La drop target permet de gérer l'évenement onDrop sur l'élement courant
295
		@SuppressWarnings("unused")
295
		@SuppressWarnings("unused")
296
		DropTarget tg = new DropTarget(this, dtc)
296
		DropTarget tg = new DropTarget(this, dtc)
297
		{
297
		{
298
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
298
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){		
299
				
299
				
300
				// si les données proviennent d'une grille
300
				// si les données proviennent d'une grille
301
				if(data instanceof GridDragData)
301
				if(data instanceof GridDragData)
302
		    	{
302
		    	{
303
					// on appelle le médiateur
303
					// on appelle le médiateur
304
		    		  	return iMediateur.lierObsDD(source, e, data,getId()) ;   
304
		    		  	return iMediateur.lierObsDD(source, e, data,getId()) ;   
305
		    	}
305
		    	}
306
				return false ;
306
				return false ;
307
			}
307
			}
308
			
308
			
309
			public String notifyOver(DragSource source, EventObject e, DragData data){
309
			public String notifyOver(DragSource source, EventObject e, DragData data){
310
			    return "x-dd-drop-ok";
310
			    return "x-dd-drop-ok";
311
			}
311
			}
312
		};
312
		};
313
        
313
        
314
	}
314
	}
315
 
315
 
316
	/**
316
	/**
317
	 * Méthode héritée de l'interface rafraichissable
317
	 * Méthode héritée de l'interface rafraichissable
318
	 */
318
	 */
319
	public void rafraichir(Object nouvelleDonnees,
319
	public void rafraichir(Object nouvelleDonnees,
320
			boolean repandreRafraichissement) {
320
			boolean repandreRafraichissement) {
321
 
321
 
322
		// si l'objet reçu est un store
322
		// si l'objet reçu est un store
323
		if (nouvelleDonnees instanceof Store) {
323
		if (nouvelleDonnees instanceof Store) {
324
 
324
 
325
			st = (Store) nouvelleDonnees;
325
			st = (Store) nouvelleDonnees;
326
			// on le charge
326
			// on le charge
327
			st.load();
327
			st.load();
328
 
328
 
329
				// on l'affecte à la vue
329
				// on l'affecte à la vue
330
				dView.setStore(st);
330
				dView.setStore(st);
331
				// et on rafrachit la vue
331
				// et on rafrachit la vue
332
				dView.refresh();
332
				dView.refresh();
333
 
333
 
334
		}
334
		}
335
 
335
 
336
		// si le composant doit répandre le rafraichissement
336
		// si le composant doit répandre le rafraichissement
337
		if (repandreRafraichissement) {
337
		if (repandreRafraichissement) {
338
			// il en notifie le médiateur en lui donnant une copie des données
338
			// il en notifie le médiateur en lui donnant une copie des données
339
			// et en notifiant qu'il en est l'expéditeur
339
			// et en notifiant qu'il en est l'expéditeur
340
			getIMediateur().synchroniserDonneesZoomListeGalerie(
340
			getIMediateur().synchroniserDonneesZoomListeGalerie(
341
					nouvelleDonnees, this);
341
					nouvelleDonnees, this);
342
		}
342
		}
343
 
343
 
344
		// si c'est la première mise à jour que l'on reçoit
344
		// si c'est la première mise à jour que l'on reçoit
345
		if (!estInstancie) {
345
		if (!estInstancie) {
346
			// alors le composant est considéré comme instancié
346
			// alors le composant est considéré comme instancié
347
			estInstancie = true;
347
			estInstancie = true;
348
		}
348
		}
349
	}
349
	}
350
 
350
 
351
	/**
351
	/**
352
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
352
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
353
	 * galerie suivant les identifiants donnés en paramètres
353
	 * galerie suivant les identifiants donnés en paramètres
354
	 * 
354
	 * 
355
	 * @param ids
355
	 * @param ids
356
	 *            les identifiants des images à sélectionner
356
	 *            les identifiants des images à sélectionner
357
	 */
357
	 */
358
	public void selectionnerImages(int[] ids) {
358
	public void selectionnerImages(int[] ids) {
359
 
359
 
360
		getDView().select(ids);
360
		getDView().select(ids);
361
 
361
 
362
	}
362
	}
363
 
363
 
364
	public void changerNumeroPage(int pageCourante) {
364
	public void changerNumeroPage(int pageCourante) {
365
		
365
		
366
		iMediateur.changerNumeroPage(pageCourante) ;
366
		iMediateur.changerNumeroPage(pageCourante) ;
367
		
367
		
368
	}
368
	}
369
 
369
 
370
	public void changerTaillePage(int nouvelleTaillePage) {
370
	public void changerTaillePage(int nouvelleTaillePage) {
371
		
371
		
372
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
372
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
373
	}
373
	}
374
 
374
 
375
}
375
}