Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 23 → Rev 24

/trunk/src/org/tela_botanica/client/image/ImageMediateur.java
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())