Subversion Repositories eFlore/Applications.cel

Rev

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