Subversion Repositories eFlore/Applications.cel

Rev

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