Subversion Repositories eFlore/Applications.cel

Rev

Rev 208 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
195 david 1
package org.tela_botanica.client.vues.image;
2 aperonnet 2
 
3
import org.tela_botanica.client.image.ImageMediateur;
60 jpm 4
import org.tela_botanica.client.interfaces.ListePaginable;
2 aperonnet 5
import org.tela_botanica.client.interfaces.Rafraichissable;
6
import org.tela_botanica.client.interfaces.VueListable;
195 david 7
import org.tela_botanica.client.vues.BarrePaginationVue;
2 aperonnet 8
 
401 aurelien 9
import com.google.gwt.core.client.GWT;
2 aperonnet 10
import com.gwtext.client.core.EventObject;
11
import com.gwtext.client.data.FieldDef;
12
import com.gwtext.client.data.IntegerFieldDef;
13
import com.gwtext.client.data.Record;
14
import com.gwtext.client.data.RecordDef;
15
import com.gwtext.client.data.Store;
16
import com.gwtext.client.data.StringFieldDef;
5 aperonnet 17
import com.gwtext.client.dd.DragData;
18
import com.gwtext.client.dd.DragSource;
19
import com.gwtext.client.dd.DropTarget;
20
import com.gwtext.client.dd.DropTargetConfig;
2 aperonnet 21
import com.gwtext.client.widgets.Component;
22
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
23
import com.gwtext.client.widgets.grid.CellMetadata;
24
import com.gwtext.client.widgets.grid.ColumnConfig;
25
import com.gwtext.client.widgets.grid.ColumnModel;
5 aperonnet 26
import com.gwtext.client.widgets.grid.GridDragData;
2 aperonnet 27
import com.gwtext.client.widgets.grid.GridPanel;
28
import com.gwtext.client.widgets.grid.Renderer;
29
import com.gwtext.client.widgets.grid.RowSelectionModel;
30
import com.gwtext.client.widgets.grid.event.GridRowListener;
31
import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
32
 
33
/**
34
 * Liste d'image composée de miniatures et d'information sur l'image, implémente
35
 * l'interface rafraichissable et l'interface vueListable
36
 *
37
 * @author aurelien
38
 */
39
public class ListeImageVue extends GridPanel implements Rafraichissable,
60 jpm 40
		VueListable, ListePaginable {
2 aperonnet 41
 
42
	/**
43
	 * Le médiateur associé à la vue
44
	 */
5 aperonnet 45
	private ImageMediateur iMediateur = null;
46
 
2 aperonnet 47
	/**
48
	 * Config de colonne
49
	 */
5 aperonnet 50
	private ColumnConfig numImage;
401 aurelien 51
 
2 aperonnet 52
	/**
53
	 * Config de colonne
54
	 */
401 aurelien 55
	private ColumnConfig transmisImage;
56
 
57
	/**
58
	 * Config de colonne
59
	 */
5 aperonnet 60
	private ColumnConfig urlImage;
2 aperonnet 61
	/**
62
	 * Config de colonne
63
	 */
5 aperonnet 64
	private ColumnConfig lieImage;
2 aperonnet 65
	/**
66
	 * Config de colonne
67
	 */
5 aperonnet 68
	private ColumnConfig datImage;
2 aperonnet 69
	/**
70
	 * Config de colonne
71
	 */
5 aperonnet 72
	private ColumnConfig appImage;
2 aperonnet 73
	/**
74
	 * Config de colonne
75
	 */
5 aperonnet 76
	private ColumnConfig noteImage;
2 aperonnet 77
	/**
208 aurelien 78
	 * Config de colonne
79
	 */
80
	private ColumnConfig nomImage;
81
	/**
401 aurelien 82
	 * Config de colonne
83
	 */
84
	private ColumnConfig obsAssociees;
85
 
86
	/**
2 aperonnet 87
	 * Modele de colonnes
88
	 */
5 aperonnet 89
	private ColumnModel modeleColonnes;
2 aperonnet 90
 
91
	/**
92
	 * Booleen d'instanciation
93
	 */
5 aperonnet 94
	private boolean estInstancie = false;
2 aperonnet 95
 
96
	/**
97
	 * Store qui contient les données à afficher
98
	 */
5 aperonnet 99
	private Store st = null;
2 aperonnet 100
	/**
101
	 * Configuration des colonnes du store
102
	 */
5 aperonnet 103
	private ColumnConfig cl = null;
104
 
2 aperonnet 105
	/**
106
	 * Barre de pagination
107
	 */
59 david 108
	private BarrePaginationVue bt = null;
208 aurelien 109
 
110
	/**
111
	 * Taille max des images dans la liste
112
	 */
113
	private int tailleOr = 50 ;
2 aperonnet 114
 
115
	/**
208 aurelien 116
	 * Garder ou non l'aspet original des images
117
	 */
118
	private boolean garderRatio = true;
119
 
120
	/**
2 aperonnet 121
	 * Constructeur sans arguments (privé car ne doit pas être utilisé)
122
	 */
5 aperonnet 123
	private ListeImageVue() {
124
		super();
2 aperonnet 125
	}
208 aurelien 126
 
5 aperonnet 127
 
2 aperonnet 128
	/**
129
	 * Constructeur avec argument
5 aperonnet 130
	 *
131
	 * @param im
132
	 *            le médiateur à associer
2 aperonnet 133
	 */
134
	public ListeImageVue(ImageMediateur im) {
135
 
5 aperonnet 136
		new ListeImageVue();
2 aperonnet 137
 
138
		this.setId("listeImageGrid");
139
		// on associe le médiateur
140
		this.iMediateur = im;
5 aperonnet 141
 
2 aperonnet 142
		// on place la barre de pagination
60 jpm 143
		bt = new BarrePaginationVue(this);
59 david 144
		bt.setLabelElement("Images");
145
		bt.setTaillePageParDefaut(50);
5 aperonnet 146
		setBottomToolbar(bt);
2 aperonnet 147
 
148
		// on construit le modèle de colonnes
208 aurelien 149
		numImage = new ColumnConfig("Numéro", "num_image", 30, true,
5 aperonnet 150
				new Renderer() {
2 aperonnet 151
 
5 aperonnet 152
					public String render(Object value,
153
							CellMetadata cellMetadata, Record record,
154
							int rowIndex, int colNum, Store store) {
401 aurelien 155
 
156
						cellMetadata.setCssClass("centered-list");
2 aperonnet 157
 
5 aperonnet 158
						String ImgNum = record.getAsString("num_image");
159
						return "<div class=\"centered-list\">" + ImgNum
160
								+ "</div>";
161
					}
2 aperonnet 162
 
5 aperonnet 163
				});
401 aurelien 164
 
165
		transmisImage = new ColumnConfig("   ", "obs_associees", 10, true, new Renderer() {
2 aperonnet 166
 
401 aurelien 167
			public String render(Object value, CellMetadata cellMetadata,
168
					Record record, int rowIndex, int colNum, Store store) {
169
 
170
				cellMetadata.setCssClass("centered-list");
171
 
172
				String nomObs = record.getAsString("obs_associees");
173
				if(nomObs == null) {
174
					return "";
175
				}
176
 
177
				String[] obsTab = nomObs.split(";;");
178
				String valeurTransmis = "0";
179
 
180
				if(obsTab.length >= 1) {
181
					String[] elementsObs = obsTab[0].split("#");
182
 
183
					if(elementsObs.length >= 3) {
184
						nomObs = elementsObs[1];
185
						//if(elementsObs[2] == "1") {
186
							valeurTransmis = "1";
187
						//}
188
					}
189
				}
190
 
191
				if(valeurTransmis.equals("1"))
192
				{
193
					return "<img src=\"tela.png\"/></img>" ;
194
				}
195
				else
196
				{
197
					return "" ;
198
				}
199
			}
200
 
201
		});
202
 
208 aurelien 203
		datImage = new ColumnConfig("Date", "dat_image", 80, true,
5 aperonnet 204
				new Renderer() {
205
 
206
					public String render(Object value,
207
							CellMetadata cellMetadata, Record record,
208
							int rowIndex, int colNum, Store store) {
401 aurelien 209
 
210
						cellMetadata.setCssClass("centered-list");
5 aperonnet 211
 
212
						String ImgDat = record.getAsString("dat_image");
213
						if (ImgDat == null) {
214
							ImgDat = " ";
215
						}
216
						return "<div class=\"centered-list\">" + ImgDat
217
								+ "</div>";
218
					}
219
 
220
				});
208 aurelien 221
		lieImage = new ColumnConfig("Lieu", "lie_image", 120, true,
5 aperonnet 222
				new Renderer() {
223
 
224
					public String render(Object value,
225
							CellMetadata cellMetadata, Record record,
226
							int rowIndex, int colNum, Store store) {
401 aurelien 227
 
228
						cellMetadata.setCssClass("centered-list");
5 aperonnet 229
 
230
						String ImgLie = record.getAsString("lie_image");
231
						if (ImgLie == null) {
232
							ImgLie = " ";
233
						}
234
						return "<div class=\"centered-list\">" + ImgLie
235
								+ "</div>";
236
					}
237
 
238
				});
208 aurelien 239
		appImage = new ColumnConfig("Appareil", "app_image", 120, true,
5 aperonnet 240
				new Renderer() {
241
 
242
					public String render(Object value,
243
							CellMetadata cellMetadata, Record record,
244
							int rowIndex, int colNum, Store store) {
401 aurelien 245
 
246
						cellMetadata.setCssClass("centered-list");
5 aperonnet 247
 
248
						String ImgApp = record.getAsString("app_image");
249
						if (ImgApp == null) {
250
							ImgApp = " ";
251
						}
252
						return "<div class=\"centered-list\">" + ImgApp
253
								+ "</div>";
254
					}
255
 
256
				});
208 aurelien 257
 
258
 
2 aperonnet 259
		// la colonne url possède une méthode de rendu spéciale
260
		urlImage = new ColumnConfig("Image", "url_image_S", 30, true,
261
				new Renderer() {
262
 
263
					public String render(Object value,
264
							CellMetadata cellMetadata, Record record,
265
							int rowIndex, int colNum, Store store) {
401 aurelien 266
 
267
						cellMetadata.setCssClass("centered-list");
5 aperonnet 268
						// on affiche une div contenant l'image pointée par
269
						// l'url
208 aurelien 270
						int[] XY = {record.getAsInteger("taille_x") ,record.getAsInteger("taille_y")} ;
271
						int[] XYresize = {tailleOr,tailleOr} ;
272
 
273
						if(garderRatio) {
274
							XYresize = calculerDimensions(XY);
275
						}
276
 
2 aperonnet 277
						String ImgUrl = record.getAsString("url_image_S");
278
						String ImgNum = record.getAsString("num_image");
5 aperonnet 279
						return "<div class=\"img-list centered-list\"> <img src=\""
208 aurelien 280
								+ ImgUrl + "\" title='" + ImgNum + "' width=\""+XYresize[0]+" px\" height=\""+XYresize[1]+" px\"> </div>";
2 aperonnet 281
					}
282
 
283
				});
5 aperonnet 284
 
208 aurelien 285
		noteImage = new ColumnConfig("Note", "note_image", 80, true,
5 aperonnet 286
				new Renderer() {
287
					public String render(Object value,
288
							CellMetadata cellMetadata, Record record,
289
							int rowIndex, int colNum, Store store) {
401 aurelien 290
 
291
						cellMetadata.setCssClass("centered-list");
5 aperonnet 292
 
293
						String htmlImage = "";
294
 
295
						int noteImg = record.getAsInteger("note_image");
296
						if (noteImg >= 0) {
297
							htmlImage += "<div class=\"img-note centered-list\">";
298
							for (int i = 0; i <= noteImg; i++) {
299
								htmlImage += "<img src=\"note-on.gif\">";
300
							}
301
							htmlImage += "</div>";
2 aperonnet 302
						}
5 aperonnet 303
 
304
						return htmlImage;
305
 
2 aperonnet 306
					}
5 aperonnet 307
 
308
				});
208 aurelien 309
 
401 aurelien 310
		nomImage = new ColumnConfig("Nom original", "nom_original", 120, true,
208 aurelien 311
				new Renderer() {
312
			public String render(Object value,
313
					CellMetadata cellMetadata, Record record,
314
					int rowIndex, int colNum, Store store) {
401 aurelien 315
 
316
				cellMetadata.setCssClass("centered-list");
5 aperonnet 317
 
208 aurelien 318
				String imgNomOr = record.getAsString("nom_original");
319
				if (imgNomOr == null) {
320
					imgNomOr = " ";
321
				}
322
				return "<div class=\"centered-list\">" + imgNomOr
323
						+ "</div>";
324
			}
325
 
326
		});
401 aurelien 327
 
328
		obsAssociees = new ColumnConfig("Nom associé", "obs_associees", 80, true,
329
				new Renderer() {
330
			public String render(Object value,
331
					CellMetadata cellMetadata, Record record,
332
					int rowIndex, int colNum, Store store) {
333
 
334
				cellMetadata.setCssClass("centered-list");
208 aurelien 335
 
401 aurelien 336
				String nomObs = record.getAsString("obs_associees");
337
				if(nomObs == null) {
338
					return "";
339
				}
340
				String[] obsTab = nomObs.split(";;");
341
 
342
				if(obsTab.length >= 1) {
343
					String[] elementsObs = obsTab[0].split("#");
344
 
345
					if(elementsObs.length >= 3) {
346
						nomObs = elementsObs[1];
347
					}
348
				}
349
 
350
				return "<div class=\"centered-list\">" + nomObs
351
						+ "</div>";
352
			}
353
 
354
		});
355
 
2 aperonnet 356
		// on associe le modèle de colonnes
401 aurelien 357
		ColumnConfig[] cm = { numImage, transmisImage, urlImage, obsAssociees, datImage, lieImage, appImage,
358
				noteImage,nomImage} ;
2 aperonnet 359
		modeleColonnes = new ColumnModel(cm);
360
		this.setColumnModel(modeleColonnes);
361
		this.setAutoScroll(true);
362
		this.setAutoWidth(true);
363
		this.setEnableColumnResize(true);
364
 
365
		// creation du store
366
		FieldDef defNumImage = new IntegerFieldDef("num_image");
401 aurelien 367
		FieldDef defTransmisImage = new IntegerFieldDef("obs_associees");
208 aurelien 368
		FieldDef defNomImage = new StringFieldDef("nom_original");
2 aperonnet 369
		FieldDef defDatImage = new StringFieldDef("dat_image");
370
		FieldDef defLieImage = new StringFieldDef("lie_image");
371
		FieldDef defAppImage = new StringFieldDef("app_image");
372
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
373
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
374
		FieldDef defUrlImage = new StringFieldDef("url_image");
375
		FieldDef defNoteImage = new StringFieldDef("note_image");
208 aurelien 376
		FieldDef defTailleX = new IntegerFieldDef("taille_x");
377
		FieldDef defTailleY = new IntegerFieldDef("taille_y");
401 aurelien 378
		FieldDef defObsAssociees = new StringFieldDef("obs_associees");
379
		FieldDef[] defTab = { defNumImage,defTransmisImage, defNomImage, defDatImage, defLieImage,
5 aperonnet 380
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage,
401 aurelien 381
				defNoteImage, defTailleX, defTailleY, defObsAssociees};
2 aperonnet 382
		RecordDef rd = new RecordDef(defTab);
383
		st = new Store(rd);
384
		// on associe le store
385
		this.setStore(st);
386
		this.getView().setAutoFill(true);
5 aperonnet 387
 
2 aperonnet 388
		// on crée un masque de chargement qui s'affichera lors des mises à jour
389
		this.setLoadMask("chargement");
390
 
5 aperonnet 391
		//Enable drag and drop
392
		this.setEnableDragDrop(true);
393
		//You need to set the same group for both grids
394
		this.setDdGroup("DragGroupName");
395
 
2 aperonnet 396
		// on ajoute les listeners
397
		ajouterListeners();
398
 
399
	}
5 aperonnet 400
 
2 aperonnet 401
 
402
	/**
403
	 * Ajoute les listeners pour la gestion des évènements
404
	 */
405
	private void ajouterListeners() {
406
		this.addListener(new ContainerListenerAdapter() {
407
 
408
			public void onHide(Component component) {
409
 
410
			}
411
 
5 aperonnet 412
			// lors du premier rendu on demande les données qui sont déjà
413
			// contenues dans la galerie qui est le premier élément affiché
414
 
2 aperonnet 415
			public void onRender(Component component) {
416
 
417
				if (!isEstInstancie()) {
418
					setEstInstancie(true);
5 aperonnet 419
					setDragDropText("Glissez les images sur la liste d'observation pour les lier") ;
2 aperonnet 420
					getIMediateur().synchroniserSelection("galerie");
421
				}
422
			}
423
 
424
			public void onShow(Component component) {
425
 
426
			}
427
 
428
		});
429
 
430
		this.addGridRowListener(new GridRowListener() {
5 aperonnet 431
 
2 aperonnet 432
			// gestion du clic sur une ligne
433
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
434
 
435
				// on notifie le médiateur et on lui passe le nuémro de ligne
436
				getIMediateur().clicListeImage(rowIndex);
437
			}
5 aperonnet 438
 
2 aperonnet 439
			// gestion du clic droit
440
			public void onRowContextMenu(GridPanel grid, int rowIndex,
441
					EventObject e) {
5 aperonnet 442
				// on stoppe l'évenement pour empecher le navigateur d'afficher
443
				// son propre menu
444
				e.stopEvent();
2 aperonnet 445
				// on notifie le médiateur en lui passant l'évenement
446
				getIMediateur().montrerContextMenu(e);
447
			}
448
 
449
			// gestion du double clic
450
			public void onRowDblClick(GridPanel grid, int rowIndex,
451
					EventObject e) {
452
				// on notifie le médiateur en lui passant le numéro de ligne
453
				getIMediateur().doubleClicListeImage(rowIndex);
454
			}
455
		});
456
 
457
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
458
 
459
			// gestion de la sélection
5 aperonnet 460
 
2 aperonnet 461
			public void onSelectionChange(RowSelectionModel sm) {
462
 
463
				// si on a rien de sélectionné
464
				if (sm.getCount() <= 0) {
5 aperonnet 465
					// on notifie le médiateur (qui désactive notamment l'accès
466
					// à certaines infos)
2 aperonnet 467
					getIMediateur().aucuneSelection();
468
				} else {
469
					// sinon on notifie le médiateur
470
					getIMediateur().selection();
5 aperonnet 471
					// et on lui demande de synchroniser la selection avec les
472
					// autres vues
2 aperonnet 473
					getIMediateur().synchroniserSelection("liste");
474
				}
475
			}
476
		});
5 aperonnet 477
 
478
		//Enable drag and drop
479
		this.setEnableDragDrop(true);
480
 
481
		//Same name in destination
482
		this.setDdGroup("DragGroupName");
483
		DropTargetConfig dtc = new DropTargetConfig();
484
		dtc.setdDdGroup("DragGroupName");
485
 
486
		//Now this is the important part, you need a drop target
487
		@SuppressWarnings("unused")
488
		DropTarget tg = new DropTarget(this, dtc)
489
		{
490
			public boolean notifyDrop(DragSource source, EventObject e, DragData data){
491
 
492
				if(data instanceof GridDragData)
493
				{
494
					GridDragData gdd = (GridDragData)data ;
495
	    		  	if(gdd.getGrid().getId().equals("listeImageGrid"))
496
	    		  	{
497
	    		  		return false ;
498
	    		  	}
499
	    		  	else
500
	    		  	{
501
	    		  		return iMediateur.lierObsDD(source, e, data, getId()) ;
502
	    		  	}
503
				}
504
				else
505
				{
506
					return false ;
507
				}
508
 
509
 
510
			}
511
 
512
			public String notifyOver(DragSource source, EventObject e, DragData data){
513
			    return "x-dd-drop-ok";
514
			}
515
		};
2 aperonnet 516
	}
517
 
518
	/**
5 aperonnet 519
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
520
	 * galerie suivant les identifiants donnés en paramètres
2 aperonnet 521
	 */
522
	public String[] getIdSelectionnees() {
523
		Record[] selection = this.getSelectionModel().getSelections();
524
		int taille = selection.length;
525
		String id_selection[] = new String[taille];
526
 
527
		for (int i = 0; i < selection.length; i++) {
528
 
529
			id_selection[i] = selection[i].getAsString("num_image");
530
		}
531
 
532
		return id_selection;
533
	}
534
 
535
	/**
536
	 * Accesseur pour la config de colonnes
5 aperonnet 537
	 *
2 aperonnet 538
	 * @return la config de colonnes
539
	 */
540
	public ColumnConfig getCl() {
541
		return cl;
542
	}
5 aperonnet 543
 
2 aperonnet 544
	/**
545
	 * Accesseur pour le médiateur
5 aperonnet 546
	 *
2 aperonnet 547
	 * @return le médiateur associé
548
	 */
549
	public ImageMediateur getIMediateur() {
550
		return iMediateur;
551
	}
552
 
553
	/**
554
	 * Accesseur pour le modèle de colonnes
5 aperonnet 555
	 *
2 aperonnet 556
	 * @return le modèle de colonnes
557
	 */
558
	public ColumnModel getModeleColonnes() {
559
		return modeleColonnes;
560
	}
561
 
562
	/**
563
	 * Accesseur pour le store
5 aperonnet 564
	 *
2 aperonnet 565
	 * @return le store contenant les données
566
	 */
567
	public Store getSt() {
568
		return st;
569
	}
5 aperonnet 570
 
2 aperonnet 571
	/**
572
	 * Accesseur pour le booleen d'instanciation
5 aperonnet 573
	 *
2 aperonnet 574
	 * @return le booleen d'instanciation
575
	 */
576
	public boolean isEstInstancie() {
577
		return estInstancie;
578
	}
579
 
580
	/**
581
	 * Méthode héritée de l'interface rafraichissable
5 aperonnet 582
	 *
583
	 * @param nouvelleDonnees
584
	 *            les nouvelles données
585
	 * @param repandreRafraichissement
586
	 *            le booleen de notification du rafraichissement
2 aperonnet 587
	 */
588
	public void rafraichir(Object nouvelleDonnees,
589
			boolean repandreRafraichissement) {
590
 
591
		// si on reçoit un store
592
		if (nouvelleDonnees instanceof Store) {
593
 
594
			// on affecte celui-ci comme gestionnaire de données
595
			st = (Store) nouvelleDonnees;
596
			st.load();
597
			// et on reconfigure et rafraichit la vue
598
			this.reconfigure(st, this.getColumnModel());
5 aperonnet 599
 
2 aperonnet 600
		}
94 jpm 601
 
2 aperonnet 602
 
603
		// si on doit répandre l'évenement
604
		if (repandreRafraichissement) {
605
			// on notifie le médiateur avec une copie des données
606
			getIMediateur().synchroniserDonneesZoomListeGalerie(
607
					nouvelleDonnees, this);
608
		}
609
	}
610
 
611
	/**
5 aperonnet 612
	 * Sélectionne des enregistrements donné
613
	 *
614
	 * @param sel
615
	 *            un tableau d'enregistrement à selectionner
2 aperonnet 616
	 */
617
	public void selectionnerEnregistrements(Record[] sel) {
618
 
619
		if (isEstInstancie()) {
620
			getSelectionModel().clearSelections();
621
			getSelectionModel().selectRecords(sel);
622
		}
623
	}
5 aperonnet 624
 
2 aperonnet 625
	/**
626
	 * Accesseur pour la toolbar de pagination
5 aperonnet 627
	 *
2 aperonnet 628
	 * @return la toolbar de pagination
629
	 */
59 david 630
	public BarrePaginationVue getToolBarVue() {
5 aperonnet 631
		return bt;
2 aperonnet 632
	}
633
 
634
	/**
635
	 * Setteur pour le booleen d'instanciation
5 aperonnet 636
	 *
637
	 * @param estInstancie
638
	 *            la nouvelle valeur du booleen
2 aperonnet 639
	 */
640
	public void setEstInstancie(boolean estInstancie) {
641
		this.estInstancie = estInstancie;
642
	}
643
 
5 aperonnet 644
	public void mettreAjourInfos(String commentaires, String date, String note) {
645
 
2 aperonnet 646
		for (int i = 0; i < getSelectionModel().getCount(); i++) {
5 aperonnet 647
 
648
			getSelectionModel().getSelections()[i].set("note_image", note);
649
			getSelectionModel().getSelections()[i].set("dat_image", date);
650
 
2 aperonnet 651
		}
5 aperonnet 652
 
2 aperonnet 653
	}
60 jpm 654
 
655
	public void changerNumeroPage(int pageCourante) {
656
 
657
		iMediateur.changerNumeroPage(pageCourante) ;
658
 
659
	}
2 aperonnet 660
 
60 jpm 661
	public void changerTaillePage(int nouvelleTaillePage) {
662
 
663
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
664
	}
208 aurelien 665
 
666
	public int[] calculerDimensions(int[] tailleXY) {
667
 
668
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
669
        float tailleOr = this.tailleOr ;
670
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
671
        float[] XYresize = new float[2];
672
 
673
        if(maxTaille == tailleXY[0]) {
674
            float rapport = tailleXYf[1]/tailleXYf[0] ;
675
            XYresize[0] = tailleOr ;
676
            XYresize[1] = tailleOr*rapport ;
677
        }else {
678
            float rapport = tailleXYf[0]/tailleXYf[1] ;
679
            XYresize[1] = tailleOr ;
680
            XYresize[0] = tailleOr*rapport ;
681
        }
682
 
683
        int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
684
 
685
        return res;
686
    }
60 jpm 687
 
2 aperonnet 688
}