32,65 → 32,81 |
*/ |
public class ImageMediateur { |
|
// cette classe est un singleton |
/** |
* booleen qui verifie l'unicite de l'instance |
*/ |
private static boolean estInstancie = false ; |
|
// controleur |
/** |
* modele de données |
*/ |
private ImageModele iModele = null ; |
|
//widgets |
|
//Panneau principal des images (onglet "images") |
// Widget crées par le médiateur |
/** |
* panneau principal des images (onglet "images") |
*/ |
private final Panel panneauPrincipalImage = new Panel("Images"); |
|
// Panneau à onglet pour la liste, la galerie et la vue en grand |
/** |
* panneau à onglet pour la liste, la galerie et la vue en grand |
*/ |
private TabPanel ongletsImage = null ; |
|
/** |
* conteneur du panneau à onglets |
*/ |
private Panel panneauMenuEtOngletsImage = null ; |
|
/** |
* galerie de miniature |
*/ |
private GalerieImageVue galerieImage = null ; |
|
/** |
* liste détaillée des images |
*/ |
private ListeImageVue listeImage = null ; |
|
/** |
* vue agrandie de la l'image selectionnée |
*/ |
private ZoomImageVue zoomImage = null ; |
|
// panneau details et mots clés |
/** |
* panneau à onglets affichant les métadonnées et les mots clés |
*/ |
private PanneauMetadonneesVue metadonneesIptcExif = null ; |
|
/** |
* panneau conteneur pour le panneau à onglet des metadonnées |
*/ |
private final Panel detailsEtMotsCles = new Panel("Détails et mots clés"); |
|
/** |
* menu contextuel de manipulation des images |
*/ |
private MenuImageVue menuImageVue = null ; |
|
/** |
* barre d'outils |
*/ |
private BarreOutilsVue barreOutilsVue = null ; |
|
private PanneauMetadonneesVue metadonneesIptcExif = null ; |
|
/** |
* l'indice du dernier onglet sélectionné |
*/ |
private int dernierIndexOnglet = 0 ; |
|
/** |
* booleen explicitant s'il y a une selection en cours |
*/ |
private boolean selection = false ; |
|
/** |
* @param selection the selection to set |
* constructeur privé (on accède à la classe par la méthode getInstance |
*/ |
public void setSelection(boolean selection) { |
this.selection = selection; |
} |
|
/** |
* @return the selection |
*/ |
public boolean isSelection() { |
return selection; |
} |
|
public static ImageMediateur Instance() |
{ |
if(!estInstancie) |
{ |
estInstancie = true ; |
return new ImageMediateur() ; |
} |
else |
{ |
return null ; |
} |
} |
|
private ImageMediateur() |
{ |
final BorderLayoutData regionNord = new BorderLayoutData( |
144,6 → 160,33 |
|
} |
|
/** |
* @param selection the selection to set |
*/ |
public void setSelection(boolean selection) { |
this.selection = selection; |
} |
|
/** |
* @return the selection |
*/ |
public boolean isSelection() { |
return selection; |
} |
|
public static ImageMediateur Instance() |
{ |
if(!estInstancie) |
{ |
estInstancie = true ; |
return new ImageMediateur() ; |
} |
else |
{ |
return null ; |
} |
} |
|
public String getIdentifiant() |
{ |
return "0" ; |
219,6 → 262,10 |
return dernierIndexOnglet; |
} |
|
/** |
* |
* @return la vue selectionnée par l'utilisateur |
*/ |
public VueListable getVueSelectionnee() |
{ |
Panel active = ongletsImage.getActiveTab() ; |
249,6 → 296,11 |
|
} |
|
/** |
* met à jour les données provenant du modèle et synchronise les vues entre elles |
* @param o données de mises à jour pour les vues |
* @param r le refraichissable qui a demandé la mise à jour |
*/ |
public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r) |
{ |
|
283,17 → 335,31 |
aucuneSelection() ; |
} |
|
|
/** |
* envoie au modèle une demande de mise à jour |
* @param r la vue demandeuse de mise à jour |
*/ |
public void obtenirPhotoGalerie(Rafraichissable r) |
{ |
getIModele().obtenirPhotoGalerie(r) ; |
} |
|
/** |
* demande au modèle les métadonnées associées à une image |
* @param r la vue demandeuse de mise à jour |
* @param id l'identifiant de l'image |
*/ |
public void obtenirMetadonnees(Rafraichissable r, String id) |
{ |
getIModele().obtenirMetadonnees(r, id) ; |
} |
|
/** |
* envoie au modèle une demande de mise à jour des informations modifiables |
* associées à une image |
* @param commentaires le commentaire de l'image |
* @param date la date modifiée par l'utilisateur |
*/ |
public void mettreAJourInfo(String commentaires, String date) |
{ |
String ids[] = getVueSelectionnee().getIdSelectionnees() ; |
301,11 → 367,21 |
getIModele().mettreAJourCacheImage(commentaires, date, ids) ; |
} |
|
/** |
* envoie au modèle une demande pour lancer le formulaire ou l'application d'upload |
*/ |
public void uploaderImages() |
{ |
getIModele().uploaderImages() ; |
} |
|
/** |
* est appelé lors d'un clic de souris sur une vignette dans la galerie |
* le médiateur gère alors les conséquences |
* @param index l'index du noeud dans la galerie |
* @param node le noeud selectionné |
* @param e l'object source de l'évenement |
*/ |
public void clicGalerieImage(int index, Element node, |
EventObject e) |
{ |
325,6 → 401,11 |
obtenirMetadonnees(metadonneesIptcExif,imgNum) ; |
} |
|
/** |
* est appelé lors d'un clic de souris sur un enregistrement de la liste |
* le médiateur gère alors les conséquences |
* @param rowIndex le numéro de ligne selectionné |
*/ |
public void clicListeImage(int rowIndex) |
{ |
Record rd = getListeImage().getSelectionModel().getSelected() ; |
338,6 → 419,10 |
obtenirMetadonnees(metadonneesIptcExif,imgNum) ; |
} |
|
/** |
* gestion du double clic dans la liste |
* @param rowIndex |
*/ |
public void doubleClicListeImage(int rowIndex) |
{ |
clicListeImage(rowIndex) ; |
344,21 → 429,35 |
getOngletsImage().setActiveTab(1); |
} |
|
/** |
* envoie une demande de mise à jour des données au modèle |
*/ |
public void rafraichirToutesVues() |
{ |
obtenirPhotoGalerie(getGalerieImage()); |
obtenirPhotoGalerie(getIModele()); |
} |
|
/** |
* montre le menu au coordonnées indiquées |
* @param e l'objet source de l'évenement |
*/ |
public void montrerContextMenu(EventObject e) |
{ |
menuImageVue.showAt(e.getXY()) ; |
} |
|
/** |
* appelé lors du double clic sur l'image agrandie |
*/ |
public void doubleClicZoomImage() |
{ |
getOngletsImage().setActiveTab(dernierIndexOnglet); |
} |
|
/** |
* appelé lors du clic sur un des boutons de la zone zoom |
* @param arg le nom du bouton qui a cliqué |
*/ |
public void clicBoutonZoomImage(String arg) |
{ |
|
446,12 → 545,11 |
} |
} |
|
public void obtenirSelection(String nomVue) |
{ |
|
} |
|
|
/** |
* synchronise la selection entre la galerie et la liste |
* @param string le nom de la vue qui doit être synchronisée |
*/ |
public void synchroniserSelection(String string) { |
|
if(string.equals("galerie") && getDernierIndexOnglet() != 2) |
476,6 → 574,10 |
|
} |
|
/** |
* fait une demande de suppression des images (en local et en distant) |
* des images selectionnées |
*/ |
public void supprimerImages() { |
|
String[] ids = null ; |
507,6 → 609,9 |
|
} |
|
/** |
* désactive les onglets de métadonnées et de zoom (dans le cas ou rien n'est selectionné) |
*/ |
public void aucuneSelection() { |
|
if(getListeImage().getSelectionModel().getCount() <= 0 && getGalerieImage().getDView().getSelectionCount() <= 0) |
518,6 → 623,9 |
|
} |
|
/** |
* réacative les onglet métadonnées et zoom (lors d'une sélection alors qu'il n'y en avait pas) |
*/ |
public void selection() { |
|
if(!isSelection()) |