Subversion Repositories eFlore/Applications.cel

Rev

Rev 1292 | 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
 
2615 aurelien 3
import org.tela_botanica.client.i18n.Msg;
2 aperonnet 4
import org.tela_botanica.client.image.ImageMediateur;
60 jpm 5
import org.tela_botanica.client.interfaces.ListePaginable;
2 aperonnet 6
import org.tela_botanica.client.interfaces.Rafraichissable;
7
import org.tela_botanica.client.interfaces.VueListable;
195 david 8
import org.tela_botanica.client.vues.BarrePaginationVue;
2 aperonnet 9
 
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);
2615 aurelien 144
		bt.setLabelElement(Msg.get("images"));
59 david 145
		bt.setTaillePageParDefaut(50);
5 aperonnet 146
		setBottomToolbar(bt);
2 aperonnet 147
 
148
		// on construit le modèle de colonnes
2615 aurelien 149
		numImage = new ColumnConfig(Msg.get("numero"), "num_image", 30, true,
5 aperonnet 150
				new Renderer() {
2 aperonnet 151
 
1292 aurelien 152
					@Override
5 aperonnet 153
					public String render(Object value,
154
							CellMetadata cellMetadata, Record record,
155
							int rowIndex, int colNum, Store store) {
401 aurelien 156
 
157
						cellMetadata.setCssClass("centered-list");
2 aperonnet 158
 
5 aperonnet 159
						String ImgNum = record.getAsString("num_image");
160
						return "<div class=\"centered-list\">" + ImgNum
161
								+ "</div>";
162
					}
2 aperonnet 163
 
5 aperonnet 164
				});
401 aurelien 165
 
166
		transmisImage = new ColumnConfig("   ", "obs_associees", 10, true, new Renderer() {
2 aperonnet 167
 
1292 aurelien 168
			@Override
401 aurelien 169
			public String render(Object value, CellMetadata cellMetadata,
170
					Record record, int rowIndex, int colNum, Store store) {
171
 
172
				cellMetadata.setCssClass("centered-list");
173
 
174
				String nomObs = record.getAsString("obs_associees");
175
				if(nomObs == null) {
176
					return "";
177
				}
178
 
408 aurelien 179
				boolean transmise = estAssocieeTransmise(nomObs)[1];
401 aurelien 180
 
408 aurelien 181
				if(transmise)
401 aurelien 182
				{
183
					return "<img src=\"tela.png\"/></img>" ;
184
				}
185
				else
186
				{
187
					return "" ;
188
				}
189
			}
190
 
191
		});
192
 
2615 aurelien 193
		datImage = new ColumnConfig(Msg.get("date"), "dat_image", 80, true,
5 aperonnet 194
				new Renderer() {
195
 
1292 aurelien 196
					@Override
5 aperonnet 197
					public String render(Object value,
198
							CellMetadata cellMetadata, Record record,
199
							int rowIndex, int colNum, Store store) {
401 aurelien 200
 
201
						cellMetadata.setCssClass("centered-list");
5 aperonnet 202
 
203
						String ImgDat = record.getAsString("dat_image");
204
						if (ImgDat == null) {
205
							ImgDat = " ";
206
						}
207
						return "<div class=\"centered-list\">" + ImgDat
208
								+ "</div>";
209
					}
210
 
211
				});
2615 aurelien 212
 
213
		lieImage = new ColumnConfig(Msg.get("lieu"), "lie_image", 120, true,
5 aperonnet 214
				new Renderer() {
215
 
1292 aurelien 216
					@Override
5 aperonnet 217
					public String render(Object value,
218
							CellMetadata cellMetadata, Record record,
219
							int rowIndex, int colNum, Store store) {
401 aurelien 220
 
221
						cellMetadata.setCssClass("centered-list");
5 aperonnet 222
 
223
						String ImgLie = record.getAsString("lie_image");
224
						if (ImgLie == null) {
225
							ImgLie = " ";
226
						}
227
						return "<div class=\"centered-list\">" + ImgLie
228
								+ "</div>";
229
					}
230
 
231
				});
2615 aurelien 232
 
233
		appImage = new ColumnConfig(Msg.get("appareil"), "app_image", 120, true,
5 aperonnet 234
				new Renderer() {
235
 
1292 aurelien 236
					@Override
5 aperonnet 237
					public String render(Object value,
238
							CellMetadata cellMetadata, Record record,
239
							int rowIndex, int colNum, Store store) {
401 aurelien 240
 
241
						cellMetadata.setCssClass("centered-list");
5 aperonnet 242
 
243
						String ImgApp = record.getAsString("app_image");
244
						if (ImgApp == null) {
245
							ImgApp = " ";
246
						}
247
						return "<div class=\"centered-list\">" + ImgApp
248
								+ "</div>";
249
					}
250
 
251
				});
208 aurelien 252
 
253
 
2 aperonnet 254
		// la colonne url possède une méthode de rendu spéciale
2615 aurelien 255
		urlImage = new ColumnConfig(Msg.get("image"), "url_image_S", 30, true,
2 aperonnet 256
				new Renderer() {
257
 
1292 aurelien 258
					@Override
2 aperonnet 259
					public String render(Object value,
260
							CellMetadata cellMetadata, Record record,
261
							int rowIndex, int colNum, Store store) {
401 aurelien 262
 
263
						cellMetadata.setCssClass("centered-list");
5 aperonnet 264
						// on affiche une div contenant l'image pointée par
265
						// l'url
208 aurelien 266
						int[] XY = {record.getAsInteger("taille_x") ,record.getAsInteger("taille_y")} ;
267
						int[] XYresize = {tailleOr,tailleOr} ;
268
 
269
						if(garderRatio) {
270
							XYresize = calculerDimensions(XY);
271
						}
272
 
2 aperonnet 273
						String ImgUrl = record.getAsString("url_image_S");
274
						String ImgNum = record.getAsString("num_image");
5 aperonnet 275
						return "<div class=\"img-list centered-list\"> <img src=\""
208 aurelien 276
								+ ImgUrl + "\" title='" + ImgNum + "' width=\""+XYresize[0]+" px\" height=\""+XYresize[1]+" px\"> </div>";
2 aperonnet 277
					}
278
 
279
				});
5 aperonnet 280
 
2615 aurelien 281
		noteImage = new ColumnConfig(Msg.get("note"), "note_image", 80, true,
5 aperonnet 282
				new Renderer() {
1292 aurelien 283
					@Override
5 aperonnet 284
					public String render(Object value,
285
							CellMetadata cellMetadata, Record record,
286
							int rowIndex, int colNum, Store store) {
401 aurelien 287
 
288
						cellMetadata.setCssClass("centered-list");
5 aperonnet 289
 
290
						String htmlImage = "";
291
 
292
						int noteImg = record.getAsInteger("note_image");
293
						if (noteImg >= 0) {
294
							htmlImage += "<div class=\"img-note centered-list\">";
295
							for (int i = 0; i <= noteImg; i++) {
296
								htmlImage += "<img src=\"note-on.gif\">";
297
							}
298
							htmlImage += "</div>";
2 aperonnet 299
						}
5 aperonnet 300
 
301
						return htmlImage;
302
 
2 aperonnet 303
					}
5 aperonnet 304
 
305
				});
208 aurelien 306
 
2615 aurelien 307
		nomImage = new ColumnConfig(Msg.get("nom-original"), "nom_original", 120, true,
208 aurelien 308
				new Renderer() {
1292 aurelien 309
			@Override
208 aurelien 310
			public String render(Object value,
311
					CellMetadata cellMetadata, Record record,
312
					int rowIndex, int colNum, Store store) {
401 aurelien 313
 
314
				cellMetadata.setCssClass("centered-list");
5 aperonnet 315
 
208 aurelien 316
				String imgNomOr = record.getAsString("nom_original");
317
				if (imgNomOr == null) {
318
					imgNomOr = " ";
319
				}
320
				return "<div class=\"centered-list\">" + imgNomOr
321
						+ "</div>";
322
			}
323
 
324
		});
401 aurelien 325
 
2615 aurelien 326
		obsAssociees = new ColumnConfig(Msg.get("nom-associe"), "obs_associees", 80, true,
401 aurelien 327
				new Renderer() {
1292 aurelien 328
			@Override
401 aurelien 329
			public String render(Object value,
330
					CellMetadata cellMetadata, Record record,
331
					int rowIndex, int colNum, Store store) {
332
 
333
				cellMetadata.setCssClass("centered-list");
208 aurelien 334
 
401 aurelien 335
				String nomObs = record.getAsString("obs_associees");
336
				if(nomObs == null) {
337
					return "";
338
				}
339
 
408 aurelien 340
				String nomFormate = getNomsObservationsFormatees(nomObs);
341
 
342
				return "<div class=\"centered-list\">" + nomFormate
401 aurelien 343
						+ "</div>";
344
			}
345
 
346
		});
347
 
2 aperonnet 348
		// on associe le modèle de colonnes
401 aurelien 349
		ColumnConfig[] cm = { numImage, transmisImage, urlImage, obsAssociees, datImage, lieImage, appImage,
350
				noteImage,nomImage} ;
2 aperonnet 351
		modeleColonnes = new ColumnModel(cm);
352
		this.setColumnModel(modeleColonnes);
353
		this.setAutoScroll(true);
354
		this.setAutoWidth(true);
355
		this.setEnableColumnResize(true);
356
 
357
		// creation du store
358
		FieldDef defNumImage = new IntegerFieldDef("num_image");
401 aurelien 359
		FieldDef defTransmisImage = new IntegerFieldDef("obs_associees");
208 aurelien 360
		FieldDef defNomImage = new StringFieldDef("nom_original");
2 aperonnet 361
		FieldDef defDatImage = new StringFieldDef("dat_image");
362
		FieldDef defLieImage = new StringFieldDef("lie_image");
363
		FieldDef defAppImage = new StringFieldDef("app_image");
364
		FieldDef defUrlImageS = new StringFieldDef("url_image_S");
365
		FieldDef defUrlImageM = new StringFieldDef("url_image_M");
366
		FieldDef defUrlImage = new StringFieldDef("url_image");
367
		FieldDef defNoteImage = new StringFieldDef("note_image");
208 aurelien 368
		FieldDef defTailleX = new IntegerFieldDef("taille_x");
369
		FieldDef defTailleY = new IntegerFieldDef("taille_y");
401 aurelien 370
		FieldDef defObsAssociees = new StringFieldDef("obs_associees");
371
		FieldDef[] defTab = { defNumImage,defTransmisImage, defNomImage, defDatImage, defLieImage,
5 aperonnet 372
				defAppImage, defUrlImageS, defUrlImageM, defUrlImage,
401 aurelien 373
				defNoteImage, defTailleX, defTailleY, defObsAssociees};
2 aperonnet 374
		RecordDef rd = new RecordDef(defTab);
375
		st = new Store(rd);
376
		// on associe le store
377
		this.setStore(st);
378
		this.getView().setAutoFill(true);
5 aperonnet 379
 
2 aperonnet 380
		// on crée un masque de chargement qui s'affichera lors des mises à jour
381
		this.setLoadMask("chargement");
382
 
5 aperonnet 383
		//Enable drag and drop
384
		this.setEnableDragDrop(true);
385
		//You need to set the same group for both grids
386
		this.setDdGroup("DragGroupName");
387
 
2 aperonnet 388
		// on ajoute les listeners
389
		ajouterListeners();
390
 
391
	}
5 aperonnet 392
 
2 aperonnet 393
 
394
	/**
395
	 * Ajoute les listeners pour la gestion des évènements
396
	 */
397
	private void ajouterListeners() {
398
		this.addListener(new ContainerListenerAdapter() {
399
 
1292 aurelien 400
			@Override
2 aperonnet 401
			public void onHide(Component component) {
402
 
403
			}
404
 
5 aperonnet 405
			// lors du premier rendu on demande les données qui sont déjà
406
			// contenues dans la galerie qui est le premier élément affiché
407
 
1292 aurelien 408
			@Override
2 aperonnet 409
			public void onRender(Component component) {
410
 
411
				if (!isEstInstancie()) {
412
					setEstInstancie(true);
2615 aurelien 413
					setDragDropText(Msg.get("glissez-deposer-images-obs")) ;
2 aperonnet 414
					getIMediateur().synchroniserSelection("galerie");
415
				}
416
			}
417
 
1292 aurelien 418
			@Override
2 aperonnet 419
			public void onShow(Component component) {
420
 
421
			}
422
 
423
		});
424
 
425
		this.addGridRowListener(new GridRowListener() {
5 aperonnet 426
 
2 aperonnet 427
			// gestion du clic sur une ligne
1292 aurelien 428
			@Override
2 aperonnet 429
			public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
408 aurelien 430
 
431
				// on notifie le médiateur et on lui passe le numéro de ligne
2 aperonnet 432
				getIMediateur().clicListeImage(rowIndex);
433
			}
5 aperonnet 434
 
2 aperonnet 435
			// gestion du clic droit
1292 aurelien 436
			@Override
2 aperonnet 437
			public void onRowContextMenu(GridPanel grid, int rowIndex,
438
					EventObject e) {
5 aperonnet 439
				// on stoppe l'évenement pour empecher le navigateur d'afficher
440
				// son propre menu
441
				e.stopEvent();
2 aperonnet 442
				// on notifie le médiateur en lui passant l'évenement
443
				getIMediateur().montrerContextMenu(e);
444
			}
445
 
446
			// gestion du double clic
1292 aurelien 447
			@Override
2 aperonnet 448
			public void onRowDblClick(GridPanel grid, int rowIndex,
449
					EventObject e) {
450
				// on notifie le médiateur en lui passant le numéro de ligne
451
				getIMediateur().doubleClicListeImage(rowIndex);
452
			}
453
		});
454
 
455
		this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {
456
 
457
			// gestion de la sélection
5 aperonnet 458
 
1292 aurelien 459
			@Override
2 aperonnet 460
			public void onSelectionChange(RowSelectionModel sm) {
461
 
462
				// si on a rien de sélectionné
463
				if (sm.getCount() <= 0) {
5 aperonnet 464
					// on notifie le médiateur (qui désactive notamment l'accès
465
					// à certaines infos)
2 aperonnet 466
					getIMediateur().aucuneSelection();
467
				} else {
468
					// sinon on notifie le médiateur
469
					getIMediateur().selection();
5 aperonnet 470
					// et on lui demande de synchroniser la selection avec les
471
					// autres vues
2 aperonnet 472
					getIMediateur().synchroniserSelection("liste");
473
				}
474
			}
475
		});
5 aperonnet 476
 
477
		//Enable drag and drop
478
		this.setEnableDragDrop(true);
479
 
480
		//Same name in destination
481
		this.setDdGroup("DragGroupName");
482
		DropTargetConfig dtc = new DropTargetConfig();
483
		dtc.setdDdGroup("DragGroupName");
484
 
485
		//Now this is the important part, you need a drop target
486
		@SuppressWarnings("unused")
487
		DropTarget tg = new DropTarget(this, dtc)
488
		{
1292 aurelien 489
			@Override
5 aperonnet 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
 
1292 aurelien 512
			@Override
5 aperonnet 513
			public String notifyOver(DragSource source, EventObject e, DragData data){
514
			    return "x-dd-drop-ok";
515
			}
516
		};
2 aperonnet 517
	}
518
 
519
	/**
5 aperonnet 520
	 * Méthode héritée de l'interface VueListable Sélectionne les images dans la
521
	 * galerie suivant les identifiants donnés en paramètres
2 aperonnet 522
	 */
1292 aurelien 523
	@Override
2 aperonnet 524
	public String[] getIdSelectionnees() {
525
		Record[] selection = this.getSelectionModel().getSelections();
526
		int taille = selection.length;
527
		String id_selection[] = new String[taille];
528
 
529
		for (int i = 0; i < selection.length; i++) {
530
 
531
			id_selection[i] = selection[i].getAsString("num_image");
532
		}
533
 
534
		return id_selection;
535
	}
536
 
537
	/**
538
	 * Accesseur pour la config de colonnes
5 aperonnet 539
	 *
2 aperonnet 540
	 * @return la config de colonnes
541
	 */
542
	public ColumnConfig getCl() {
543
		return cl;
544
	}
5 aperonnet 545
 
2 aperonnet 546
	/**
547
	 * Accesseur pour le médiateur
5 aperonnet 548
	 *
2 aperonnet 549
	 * @return le médiateur associé
550
	 */
551
	public ImageMediateur getIMediateur() {
552
		return iMediateur;
553
	}
554
 
555
	/**
556
	 * Accesseur pour le modèle de colonnes
5 aperonnet 557
	 *
2 aperonnet 558
	 * @return le modèle de colonnes
559
	 */
560
	public ColumnModel getModeleColonnes() {
561
		return modeleColonnes;
562
	}
563
 
564
	/**
565
	 * Accesseur pour le store
5 aperonnet 566
	 *
2 aperonnet 567
	 * @return le store contenant les données
568
	 */
569
	public Store getSt() {
570
		return st;
571
	}
5 aperonnet 572
 
2 aperonnet 573
	/**
574
	 * Accesseur pour le booleen d'instanciation
5 aperonnet 575
	 *
2 aperonnet 576
	 * @return le booleen d'instanciation
577
	 */
578
	public boolean isEstInstancie() {
579
		return estInstancie;
580
	}
581
 
582
	/**
583
	 * Méthode héritée de l'interface rafraichissable
5 aperonnet 584
	 *
585
	 * @param nouvelleDonnees
586
	 *            les nouvelles données
587
	 * @param repandreRafraichissement
588
	 *            le booleen de notification du rafraichissement
2 aperonnet 589
	 */
1292 aurelien 590
	@Override
2 aperonnet 591
	public void rafraichir(Object nouvelleDonnees,
592
			boolean repandreRafraichissement) {
593
 
594
		// si on reçoit un store
595
		if (nouvelleDonnees instanceof Store) {
596
 
597
			// on affecte celui-ci comme gestionnaire de données
598
			st = (Store) nouvelleDonnees;
599
			st.load();
600
			// et on reconfigure et rafraichit la vue
601
			this.reconfigure(st, this.getColumnModel());
5 aperonnet 602
 
2 aperonnet 603
		}
94 jpm 604
 
2 aperonnet 605
 
606
		// si on doit répandre l'évenement
607
		if (repandreRafraichissement) {
608
			// on notifie le médiateur avec une copie des données
609
			getIMediateur().synchroniserDonneesZoomListeGalerie(
610
					nouvelleDonnees, this);
611
		}
612
	}
613
 
614
	/**
5 aperonnet 615
	 * Sélectionne des enregistrements donné
616
	 *
617
	 * @param sel
618
	 *            un tableau d'enregistrement à selectionner
2 aperonnet 619
	 */
620
	public void selectionnerEnregistrements(Record[] sel) {
621
 
622
		if (isEstInstancie()) {
623
			getSelectionModel().clearSelections();
624
			getSelectionModel().selectRecords(sel);
625
		}
626
	}
5 aperonnet 627
 
2 aperonnet 628
	/**
629
	 * Accesseur pour la toolbar de pagination
5 aperonnet 630
	 *
2 aperonnet 631
	 * @return la toolbar de pagination
632
	 */
59 david 633
	public BarrePaginationVue getToolBarVue() {
5 aperonnet 634
		return bt;
2 aperonnet 635
	}
636
 
637
	/**
638
	 * Setteur pour le booleen d'instanciation
5 aperonnet 639
	 *
640
	 * @param estInstancie
641
	 *            la nouvelle valeur du booleen
2 aperonnet 642
	 */
643
	public void setEstInstancie(boolean estInstancie) {
644
		this.estInstancie = estInstancie;
645
	}
646
 
5 aperonnet 647
	public void mettreAjourInfos(String commentaires, String date, String note) {
648
 
2 aperonnet 649
		for (int i = 0; i < getSelectionModel().getCount(); i++) {
5 aperonnet 650
 
651
			getSelectionModel().getSelections()[i].set("note_image", note);
652
			getSelectionModel().getSelections()[i].set("dat_image", date);
653
 
2 aperonnet 654
		}
5 aperonnet 655
 
2 aperonnet 656
	}
60 jpm 657
 
1292 aurelien 658
	@Override
60 jpm 659
	public void changerNumeroPage(int pageCourante) {
660
 
661
		iMediateur.changerNumeroPage(pageCourante) ;
662
 
663
	}
2 aperonnet 664
 
1292 aurelien 665
	@Override
60 jpm 666
	public void changerTaillePage(int nouvelleTaillePage) {
667
 
668
		iMediateur.changerTaillePage(nouvelleTaillePage) ;
669
	}
208 aurelien 670
 
671
	public int[] calculerDimensions(int[] tailleXY) {
672
 
673
		float[] tailleXYf = {new Float(tailleXY[0]),new Float(tailleXY[1])} ;
674
        float tailleOr = this.tailleOr ;
675
        float maxTaille = Math.max(tailleXYf[1],tailleXYf[0]) ;
676
        float[] XYresize = new float[2];
677
 
678
        if(maxTaille == tailleXY[0]) {
679
            float rapport = tailleXYf[1]/tailleXYf[0] ;
680
            XYresize[0] = tailleOr ;
681
            XYresize[1] = tailleOr*rapport ;
682
        }else {
683
            float rapport = tailleXYf[0]/tailleXYf[1] ;
684
            XYresize[1] = tailleOr ;
685
            XYresize[0] = tailleOr*rapport ;
686
        }
687
 
688
        int[] res = {Math.round(XYresize[0]),Math.round(XYresize[1])} ;
689
 
690
        return res;
691
    }
408 aurelien 692
 
693
	private String getNomsObservationsFormatees(String nomObs) {
694
 
695
		String htmlInfobulle = "";
696
 
697
		String[][] obs = getObservationsAssociees(nomObs);
698
 
699
		for(int i = 0; i < obs.length; i++) {
700
 
701
			if(obs[i].length == 3 && obs[i][1] != null && !obs[i][1].equals("")) {
702
				htmlInfobulle += ", "+obs[i][1];
703
			}
704
		}
705
 
706
		htmlInfobulle = htmlInfobulle.replaceFirst(", ", "");
707
 
708
		return htmlInfobulle;
709
	}
710
 
711
	private String[][] getObservationsAssociees(String nomObs) {
712
 
713
		if(nomObs.trim().equals("")) {
714
			return new String[0][0];
715
		}
716
 
717
		String[] obsTab = nomObs.split(";;");
718
		String[][] obsAnalysees = new String[obsTab.length][3];
719
 
720
		for(int i = 0; i < obsTab.length; i++) {
721
 
722
			obsAnalysees[i] = obsTab[i].split("#");
723
 
724
		}
725
 
726
		return obsAnalysees;
727
	}
728
 
729
	private boolean[] estAssocieeTransmise(String nomObs) {
730
 
731
		String[][] obs = getObservationsAssociees(nomObs);
732
		boolean[] associeesTranmises = {false, false};
733
 
734
		if(obs.length > 0) {
735
			associeesTranmises[0] = true;
736
		}
737
 
738
		for(int i = 0; i < obs.length; i++) {
739
 
740
			if(obs[i].length == 3 && obs[i][2] != null && obs[i][2].equals("1")) {
741
				associeesTranmises[1] = true;
742
			}
743
		}
744
 
745
		return associeesTranmises;
746
	}
60 jpm 747
 
2 aperonnet 748
}