Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 20 | Rev 25 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 20 Rev 24
Line 30... Line 30...
30
 * @author aurelien
30
 * @author aurelien
31
 *
31
 *
32
 */
32
 */
33
public class ImageMediateur {
33
public class ImageMediateur {
Line -... Line 34...
-
 
34
	
34
	
35
	/**
-
 
36
	 * booleen qui verifie l'unicite de l'instance
35
	// cette classe est un singleton
37
	 */
Line -... Line 38...
-
 
38
	private static boolean estInstancie = false ;  
36
	private static boolean estInstancie = false ;  
39
	
-
 
40
	/**
37
	
41
	 * modele de données
Line 38... Line -...
38
	// controleur
-
 
Line -... Line 42...
-
 
42
	 */
-
 
43
	private ImageModele iModele = null ;
39
	private ImageModele iModele = null ;
44
	
-
 
45
	
40
	
46
	// Widget crées par le médiateur
Line -... Line 47...
-
 
47
	/**
41
	//widgets
48
	 * panneau principal des images (onglet "images")
-
 
49
	 */
42
	
50
	private final Panel panneauPrincipalImage = new Panel("Images");
-
 
51
	
-
 
52
	/**
-
 
53
	 * panneau à onglet pour la liste, la galerie et la vue en grand
-
 
54
	 */ 
43
	//Panneau principal des images (onglet "images")
55
	private TabPanel ongletsImage = null ;
Line -... Line 56...
-
 
56
	
-
 
57
	/**
-
 
58
	 * conteneur du panneau à onglets
44
	private final Panel panneauPrincipalImage = new Panel("Images");
59
	 */
-
 
60
	private Panel panneauMenuEtOngletsImage = null ;
-
 
61
	
-
 
62
	/**
-
 
63
	 * galerie de miniature
45
	
64
	 */
-
 
65
	private GalerieImageVue galerieImage = null ;
-
 
66
	
-
 
67
	/**
-
 
68
	 * liste détaillée des images
46
	// Panneau à onglet pour la liste, la galerie et la vue en grand
69
	 */
Line -... Line 70...
-
 
70
	private ListeImageVue listeImage = null ;
47
	private TabPanel ongletsImage = null ;
71
	
-
 
72
	/**
-
 
73
	 * vue agrandie de la l'image selectionnée
-
 
74
	 */
-
 
75
	private ZoomImageVue zoomImage = null ;
-
 
76
	
-
 
77
	/**
48
	private Panel panneauMenuEtOngletsImage = null ;
78
	 * panneau à onglets affichant les métadonnées et les mots clés
Line -... Line 79...
-
 
79
	 */
-
 
80
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
-
 
81
	
49
	
82
	/**
Line -... Line 83...
-
 
83
	 * panneau conteneur pour le panneau à onglet des metadonnées
-
 
84
	 */
-
 
85
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
50
	private GalerieImageVue galerieImage = null ;
86
	
Line -... Line 87...
-
 
87
	/**
51
	private ListeImageVue listeImage = null ;
88
	 * menu contextuel de manipulation des images
52
	private ZoomImageVue zoomImage = null ;
89
	 */
53
	
90
	private MenuImageVue menuImageVue = null ;
Line 54... Line -...
54
	// panneau details et mots clés
-
 
55
	private final Panel detailsEtMotsCles = new Panel("Détails et mots clés");
-
 
56
	
91
	
57
	private MenuImageVue menuImageVue = null ;
92
	/**
58
	
93
	 * barre d'outils
59
	private BarreOutilsVue barreOutilsVue = null ;
-
 
60
	
94
	 */
61
	private PanneauMetadonneesVue metadonneesIptcExif = null ;
-
 
62
	
95
	private BarreOutilsVue barreOutilsVue = null ;
63
	private int dernierIndexOnglet = 0 ; 
96
	
64
	
97
	/**
65
	private boolean selection = false ;
98
	 * l'indice du dernier onglet sélectionné
66
	
-
 
67
	/**
-
 
68
	 * @param selection the selection to set
-
 
69
	 */
-
 
70
	public void setSelection(boolean selection) {
-
 
71
		this.selection = selection;
-
 
72
	}
-
 
73
 
-
 
74
	/**
-
 
75
	 * @return the selection
-
 
76
	 */
-
 
77
	public boolean isSelection() {
-
 
78
		return selection;
-
 
79
	}
-
 
80
 
-
 
81
	public static ImageMediateur Instance()
-
 
82
	{
-
 
83
			if(!estInstancie)
99
	 */
84
			{
100
	private int dernierIndexOnglet = 0 ; 
85
				estInstancie = true ;
101
	
86
				return new ImageMediateur() ;
102
	/**
Line 142... Line 158...
142
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
158
		panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
143
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
159
		panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
Line 144... Line 160...
144
		
160
		
Line -... Line 161...
-
 
161
	}
-
 
162
	
-
 
163
	/**
-
 
164
	 * @param selection the selection to set
-
 
165
	 */
-
 
166
	public void setSelection(boolean selection) {
-
 
167
		this.selection = selection;
-
 
168
	}
-
 
169
 
-
 
170
	/**
-
 
171
	 * @return the selection
-
 
172
	 */
-
 
173
	public boolean isSelection() {
-
 
174
		return selection;
-
 
175
	}
-
 
176
 
-
 
177
	public static ImageMediateur Instance()
-
 
178
	{
-
 
179
			if(!estInstancie)
-
 
180
			{
-
 
181
				estInstancie = true ;
-
 
182
				return new ImageMediateur() ;
-
 
183
			}
-
 
184
			else
-
 
185
			{
-
 
186
				return null ;
-
 
187
			}
145
	}
188
	}
146
	
189
	
147
	public String getIdentifiant()
190
	public String getIdentifiant()
148
	{
191
	{
Line 217... Line 260...
217
	 */
260
	 */
218
	public int getDernierIndexOnglet() {
261
	public int getDernierIndexOnglet() {
219
		return dernierIndexOnglet;
262
		return dernierIndexOnglet;
220
	}
263
	}
Line -... Line 264...
-
 
264
	
-
 
265
	/**
-
 
266
	 * 
-
 
267
	 * @return la vue selectionnée par l'utilisateur
221
	
268
	 */
222
	public VueListable getVueSelectionnee()
269
	public VueListable getVueSelectionnee()
223
	{
270
	{
224
		Panel active = ongletsImage.getActiveTab() ;
271
		Panel active = ongletsImage.getActiveTab() ;
225
		if(active != zoomImage)
272
		if(active != zoomImage)
Line 247... Line 294...
247
 
294
 
Line 248... Line 295...
248
		}
295
		}
Line -... Line 296...
-
 
296
		
-
 
297
	}
-
 
298
	
-
 
299
	/**
-
 
300
	 * met à jour les données provenant du modèle et synchronise les vues entre elles 
249
		
301
	 * @param o données de mises à jour pour les vues
250
	}
302
	 * @param r le refraichissable qui a demandé la mise à jour
Line 251... Line 303...
251
	
303
	 */
Line 281... Line 333...
281
		}
333
		}
Line 282... Line 334...
282
		
334
		
283
		aucuneSelection() ;
335
		aucuneSelection() ;
Line -... Line 336...
-
 
336
	}
-
 
337
	
-
 
338
	/**
284
	}
339
	 * envoie au modèle une demande de mise à jour
285
	
340
	 * @param r la vue demandeuse de mise à jour
286
	
341
	 */
287
	public void obtenirPhotoGalerie(Rafraichissable r)
342
	public void obtenirPhotoGalerie(Rafraichissable r)
288
	{
343
	{
Line -... Line 344...
-
 
344
		getIModele().obtenirPhotoGalerie(r) ;
-
 
345
	}
-
 
346
	
-
 
347
	/**
-
 
348
	 * demande au modèle les métadonnées associées à une image
289
		getIModele().obtenirPhotoGalerie(r) ;
349
	 * @param r la vue demandeuse de mise à jour
290
	}
350
	 * @param id l'identifiant de l'image
291
	
351
	 */
292
	public void obtenirMetadonnees(Rafraichissable r, String id)
352
	public void obtenirMetadonnees(Rafraichissable r, String id)
Line -... Line 353...
-
 
353
	{
-
 
354
		getIModele().obtenirMetadonnees(r, id) ;
-
 
355
	}
-
 
356
	
-
 
357
	/**
-
 
358
	 * envoie au modèle une demande de mise à jour des informations modifiables
293
	{
359
	 * associées à une image
294
		getIModele().obtenirMetadonnees(r, id) ;
360
	 * @param commentaires le commentaire de l'image
295
	}
361
	 * @param date la date modifiée par l'utilisateur
Line 296... Line 362...
296
	
362
	 */
297
	public void mettreAJourInfo(String commentaires, String date)
363
	public void mettreAJourInfo(String commentaires, String date)
Line -... Line 364...
-
 
364
	{
-
 
365
		String ids[] = getVueSelectionnee().getIdSelectionnees() ;
-
 
366
		
298
	{
367
			getIModele().mettreAJourCacheImage(commentaires, date, ids) ;
299
		String ids[] = getVueSelectionnee().getIdSelectionnees() ;
368
	}
300
		
369
	
301
			getIModele().mettreAJourCacheImage(commentaires, date, ids) ;
370
	/**
Line -... Line 371...
-
 
371
	 * envoie au modèle une demande pour lancer le formulaire ou l'application d'upload
-
 
372
	 */
-
 
373
	public void uploaderImages()
-
 
374
	{
-
 
375
		getIModele().uploaderImages() ;
-
 
376
	}
-
 
377
	
302
	}
378
	/**
303
	
379
	 * est appelé lors d'un clic de souris sur une vignette dans la galerie
304
	public void uploaderImages()
380
	 * le médiateur gère alors les conséquences
305
	{
381
	 * @param index l'index du noeud dans la galerie
306
		getIModele().uploaderImages() ;
382
	 * @param node le noeud selectionné
Line 323... Line 399...
323
		
399
		
324
		String imgNum = rd.getAsString("num_image");
400
		String imgNum = rd.getAsString("num_image");
325
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
401
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
Line -... Line 402...
-
 
402
	}
-
 
403
	
-
 
404
	/**
-
 
405
	 * est appelé lors d'un clic de souris sur un enregistrement de la liste
-
 
406
	 * le médiateur gère alors les conséquences
326
	}
407
	 * @param rowIndex le numéro de ligne selectionné
327
	
408
	 */
328
	public void clicListeImage(int rowIndex)
409
	public void clicListeImage(int rowIndex)
329
	{
410
	{
Line 336... Line 417...
336
		
417
		
337
		String imgNum = rd.getAsString("num_image");
418
		String imgNum = rd.getAsString("num_image");
338
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
419
		obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
Line -... Line 420...
-
 
420
	}
-
 
421
	
-
 
422
	/**
-
 
423
	 * gestion du double clic dans la liste
339
	}
424
	 * @param rowIndex
340
	
425
	 */
341
	public void doubleClicListeImage(int rowIndex)
426
	public void doubleClicListeImage(int rowIndex)
342
	{
427
	{
343
		clicListeImage(rowIndex) ;
428
		clicListeImage(rowIndex) ;
Line -... Line 429...
-
 
429
		getOngletsImage().setActiveTab(1);
-
 
430
	}
-
 
431
	
344
		getOngletsImage().setActiveTab(1);
432
	/**
345
	}
433
	 * envoie une demande de mise à jour des données au modèle
346
	
434
	 */
347
	public void rafraichirToutesVues()
435
	public void rafraichirToutesVues()
Line -... Line 436...
-
 
436
	{
-
 
437
		obtenirPhotoGalerie(getIModele());
-
 
438
	}
-
 
439
	
348
	{
440
	/**
349
		obtenirPhotoGalerie(getGalerieImage());
441
	 * montre le menu au coordonnées indiquées
350
	}
442
	 * @param e l'objet source de l'évenement
351
	
443
	 */
Line -... Line 444...
-
 
444
	public void montrerContextMenu(EventObject e)
-
 
445
	{
-
 
446
		menuImageVue.showAt(e.getXY()) ;
352
	public void montrerContextMenu(EventObject e)
447
	}
353
	{
448
	
354
		menuImageVue.showAt(e.getXY()) ;
449
	/**
355
	}
450
	 * appelé lors du double clic sur l'image agrandie
Line -... Line 451...
-
 
451
	 */
-
 
452
	public void doubleClicZoomImage()
-
 
453
	{
-
 
454
		getOngletsImage().setActiveTab(dernierIndexOnglet);
356
	
455
	}
357
	public void doubleClicZoomImage()
456
	
Line 358... Line 457...
358
	{
457
	/**
359
		getOngletsImage().setActiveTab(dernierIndexOnglet);
458
	 * appelé lors du clic sur un des boutons de la zone zoom
Line 444... Line 543...
444
			String imgNum = nRec.getAsString("num_image");
543
			String imgNum = nRec.getAsString("num_image");
445
			obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
544
			obtenirMetadonnees(metadonneesIptcExif,imgNum) ;
446
		}
545
		}
447
	}
546
	}
Line 448... Line -...
448
	
-
 
449
	public void obtenirSelection(String nomVue)
-
 
450
	{
-
 
451
		
-
 
452
	}
-
 
Line -... Line 547...
-
 
547
	
-
 
548
 
-
 
549
	/**
-
 
550
	 * synchronise la selection entre la galerie et la liste
453
 
551
	 * @param string le nom de la vue qui doit être synchronisée
Line 454... Line 552...
454
 
552
	 */
455
	public void synchroniserSelection(String string) {
553
	public void synchroniserSelection(String string) {
456
		
554
		
Line 474... Line 572...
474
				getGalerieImage().selectionnerImages(ids) ;
572
				getGalerieImage().selectionnerImages(ids) ;
475
		}
573
		}
Line 476... Line 574...
476
		
574
		
Line -... Line 575...
-
 
575
	}
-
 
576
 
-
 
577
	/**
-
 
578
	 * fait une demande de suppression des images (en local et en distant)
477
	}
579
	 * des images selectionnées
Line 478... Line 580...
478
 
580
	 */
Line 505... Line 607...
505
			Window.alert("Impossible de supprimer : aucune image selectionnée") ;
607
			Window.alert("Impossible de supprimer : aucune image selectionnée") ;
506
		}
608
		}
Line 507... Line 609...
507
		
609
		
Line -... Line 610...
-
 
610
	}
-
 
611
 
-
 
612
	/**
508
	}
613
	 * désactive les onglets de métadonnées et de zoom (dans le cas ou rien n'est selectionné)
Line 509... Line 614...
509
 
614
	 */
510
	public void aucuneSelection() {
615
	public void aucuneSelection() {
511
		
616
		
Line 516... Line 621...
516
			setSelection(false) ;
621
			setSelection(false) ;
517
		}
622
		}
Line 518... Line 623...
518
		
623
		
Line -... Line 624...
-
 
624
	}
-
 
625
	
-
 
626
	/**
519
	}
627
	 * réacative les onglet métadonnées et zoom (lors d'une sélection alors qu'il n'y en avait pas)
Line 520... Line 628...
520
	
628
	 */
521
	public void selection() {
629
	public void selection() {
522
		
630