Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 30 → Rev 31

/trunk/src/org/tela_botanica/client/image/ImageMediateur.java
15,6 → 15,8
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.Store;
41,7 → 43,7
public class ImageMediateur {
/**
* booleen qui verifie l'unicite de l'instance
* booleen qui verifie l'unicite de l'instance (donc static)
*/
private static boolean estInstancie = false ;
50,8 → 52,7
*/
private ImageModele iModele = null ;
// Widget crées par le médiateur
 
/**
* panneau principal des images (onglet "images")
*/
117,6 → 118,7
*/
private ImageMediateur()
{
// quelques variables de position pour les borderlayouts
final BorderLayoutData regionNord = new BorderLayoutData(
RegionPosition.NORTH) ;
128,49 → 130,67
regionEst.setSplit(true);
 
// on crée un modèle
iModele = ImageModele.Instance(this);
// et on demande l'arbre des mots clés
iModele.initialiserArbreMotsCles() ;
// on gère la mise en page du panneau principal
panneauPrincipalImage.setLayout(new BorderLayout());
// on crée le panneau qui contient les differentes onglets ainsi que le menu supérieur
panneauMenuEtOngletsImage = new Panel() ;
panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;
// le panneau à onglet qui contient les trois vues
ongletsImage = new TabPanel();
// la galerie
galerieImage = new GalerieImageVue(this) ;
// la liste des images
Panel panneauListeImage = new Panel("Liste");
listeImage = new ListeImageVue(this);
panneauListeImage.setLayout(new FitLayout());
panneauListeImage.add(listeImage);
// le panneau zoom
zoomImage = new ZoomImageVue(this);
// on ajoute les panneaux au panneau à onglets
ongletsImage.add(galerieImage);
ongletsImage.add(zoomImage);
ongletsImage.add(panneauListeImage);
// on crée les menu et la barre de vue
menuImageVue = new MenuImageVue(this) ;
barreOutilsVue = new BarreOutilsVue(this) ;
// on initialise le volet qui contient les mots clés
detailsEtMotsCles.setWidth("25%");
detailsEtMotsCles.setAnimCollapse(true);
detailsEtMotsCles.setTitleCollapse(true);
detailsEtMotsCles.setCollapsible(true);
// on crée le panneau conteneur des métadonnées et infos
metadonneesIptcExif = new PanneauMetadonneesVue(this) ;
// et on l'inclut dans le volet approprié
detailsEtMotsCles.add(metadonneesIptcExif) ;
// on ajoute la barre de vue au nord du panneau qui contient menu et onglets d'images
panneauMenuEtOngletsImage.add(barreOutilsVue,regionNord) ;
// les onglets au centre
panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);
// on ajoute le panneau qui contient le menu et les onglets d'images au centre
panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);
// et le panneau de métadonnées et d'info sur le coté droit
panneauPrincipalImage.add(detailsEtMotsCles,regionEst);
}
/**
* @param selection the selection to set
* @param change la valeur du booleen de selection
*/
public void setSelection(boolean selection) {
this.selection = selection;
177,12 → 197,16
}
 
/**
* @return the selection
* @return la valeur du booleen de selection
*/
public boolean isSelection() {
return selection;
}
 
/**
* Retourne une instance de manière unique
* @return l'instance du médiateur
*/
public static ImageMediateur Instance()
{
if(!estInstancie)
196,23 → 220,43
}
}
/**
* Renvoie l'identifiant de l'utilisateur en cours
* @return l'identifiant de l'utilisateur
*/
public String getIdentifiant()
{
return "0" ;
}
 
/**
* Accesseur pour le modèle associé au médiateur
* @return le modèle associé
*/
public ImageModele getIModele() {
return iModele;
}
 
/**
* Accesseur pour le panneau principal
* @return le panneau principal
*/
public Panel getPanneauPrincipalImage() {
return panneauPrincipalImage;
}
 
/**
* Accesseur pour le panneau à onglets
* @return le panneau à onglets
*/
public TabPanel getOngletsImage() {
return ongletsImage;
}
 
/**
* Accesseur pour la galerie d'images
* @return la galerie d'image
*/
public GalerieImageVue getGalerieImage() {
return galerieImage;
}
221,16 → 265,25
return listeImage;
}
 
/**
* Accesseur pour le panneau "zoom"
* @return le panneau zoom
*/
public ZoomImageVue getZoomImage() {
return zoomImage;
}
 
/**
* Accesseur pour le panneau détails et mot clés
* @return le panneau détails et mots clés
*/
public Panel getDetailsEtMotsCles() {
return detailsEtMotsCles;
}
/**
* @return the estInstancie
* Accesseur pour le booleen d'instanciation
* @return le booleen d'instanciation
*/
public static boolean isEstInstancie() {
return estInstancie;
237,7 → 290,8
}
 
/**
* @return the panneauMenuEtOngletsImage
* Accesseur pour la panneaèu contenant le menu et les onglets images
* @return le panneauMenuEtOngletsImage
*/
public Panel getPanneauMenuEtOngletsImage() {
return panneauMenuEtOngletsImage;
244,6 → 298,7
}
 
/**
* Accesseur pour le menu
* @return the menuImageVue
*/
public MenuImageVue getMenuImageVue() {
251,6 → 306,7
}
 
/**
* Accesseur pour la barre d'outils
* @return the barreOutilsVue
*/
public BarreOutilsVue getBarreOutilsVue() {
258,6 → 314,7
}
 
/**
* Accesseur pour le panneau infos et métadonnées
* @return the metadonneesIptcExif
*/
public PanneauMetadonneesVue getMetadonneesIptcExif() {
265,7 → 322,8
}
 
/**
* @return the dernierIndexOnglet
* Renvoie l'index du dernier onglet sélectionné
* @return l'index du dernier onglet
*/
public int getDernierIndexOnglet() {
return dernierIndexOnglet;
272,7 → 330,7
}
/**
*
* Renvoie la vue sélectionné par l'utilisateur
* @return la vue selectionnée par l'utilisateur
*/
public VueListable getVueSelectionnee()
306,7 → 364,41
}
/**
* met a jour les données provenant du modèle et synchronise les vues entre elles
* Renvoie l'identifiant de la vue en cours
* @return l'identifiant de la vue en cours de visualisation
*/
public String getIdVueSelectionnee()
{
Panel active = ongletsImage.getActiveTab() ;
if(active != zoomImage)
{
if(active == galerieImage)
{
return galerieImage.getId() ;
}
else
{
return listeImage.getId() ;
}
}
else
{
if(dernierIndexOnglet == 0)
{
return galerieImage.getId() ;
}
else
{
return listeImage.getId() ;
}
 
}
}
/**
* Met a jour les données provenant du modèle et synchronise les vues entre elles
* @param o données de mises a jour pour les vues
* @param r le refraichissable qui a demandé la mise a jour
*/
342,6 → 434,7
}
aucuneSelection() ;
demasquerChargement() ;
}
/**
373,6 → 466,10
getIModele().obtenirMotsClesId(r, id) ;
}
/**
* Envoie au modèle une demande pour obtenir l'arbre des mots clés
* @param r le raffraichissable qui a demandé la mise à jour
*/
public void obtenirArbreMotsCles(Rafraichissable r)
{
getIModele().obtenirArbreMotCle(r) ;
391,6 → 488,10
getIModele().mettreAJourCacheImage(commentaires, date, ids) ;
}
/**
* Met à jour l'arbre des mots clés affichés dans le volet de droite à partir de l'arbre passé en paramètre
* @param arbreMC le nouvel arbre des mots clés
*/
public void rafraichirArbreMotsCles(Tree arbreMC)
{
metadonneesIptcExif.getPanneauMotsCles().rafraichir(arbreMC, false) ;
498,6 → 599,7
int storeIndex ;
Record nRec = null ;
// tout d'abord on obtient les index selectionnés suivant la vue
if(getVueSelectionnee() == galerieImage)
{
DataView dv = getGalerieImage().getDView();
631,6 → 733,7
if(com.google.gwt.user.client.Window
.confirm("Supprimer les images selectionnees ?"))
{
masquerChargement() ;
getIModele().supprimerImages(ids) ;
aucuneSelection() ;
}
657,7 → 760,7
}
/**
* reacative les onglet metadonnees et zoom (lors d'une selection alors qu'il n'y en avait pas)
* reactive les onglet metadonnees et zoom (lors d'une selection alors qu'il n'y en avait pas)
*/
public void selection() {
669,6 → 772,12
}
}
 
/**
* Fait apparaitre le menu contextuel de l'arbre des mots clés au niveau d'un noeud donné
* @param n le noeud ou le menu doit apparaitre
* @param ev l'objet contenant les données sur l'évenement
* @param te l'éditeur associé à l'arbre qui permet de modifier les libellés des noeuds
*/
public void montrerContextMenuArbre(final TreeNode n, EventObject ev, final TreeEditor te)
{
Menu mn = new Menu() ;
697,8 → 806,11
}
 
/**
* Appelle le modèle pour mettre à jour la paire mot-clé / identifiant du mot clé
* @param text le texte du mot clé
* @param id l'identifiant du mot clé
*/
public void mettreAjourMotsClesId(String text, String id) {
getIModele().mettreAjourMotsClesId(text, id) ;
705,6 → 817,12
}
 
/**
* Récupère les identifiants des images selectionnés
* et appelle le modèle pour qu'il mette à jour les associations mots clés/images
* @param motsClesEnCours les mots clés à associer aux images selectionnés séparés par une ','
* @param arbreMC l'arbre des mots clés à mettre à jour
*/
public void mettreAjourMotsCles(String motsClesEnCours, Tree arbreMC) {
String[] ids = getGalerieImage().getIdSelectionnees() ;
712,11 → 830,21
}
/**
* Appelle le médiateur pour qu'il ajoute un mot clé dans l'arbre des mots clés
* @param n le noeud parent pour l'ajout
* @param arbreMC le nouvel arbre de mots clés à mettre à jour
*/
public void ajouterMotCleDansArbre(TreeNode n,Tree arbreMC)
{
getIModele().ajouterMotCleDansArbre(n, arbreMC) ;
}
 
/**
* Appelle le médiateur pour qu'il supprime un mot clé et son sous arbre dans l'arbre des mots clés
* @param n le noeud à supprimer
* @param arbreMC le nouvel arbre de mots clés à mettre à jour
*/
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC) {
getIModele().supprimerMotCleDansArbre(n,arbreMC) ;
723,6 → 851,11
}
 
/**
* Appelle le médiateur pour qu'il modifie un mot clé dans l'arbre des mots clés
* @param n le noeud à modifier
* @param arbreMC le nouvel arbre de mots clés à mettre à jour
*/
public void modifierMotCleDansArbre(TreeNode n , Tree arbreMC) {
getIModele().modifierMotCleDansArbre(n,arbreMC) ;
729,16 → 862,97
}
/**
* Appelle le médiateur pour qu'il déplace un mot clé et son sous arbre dans l'arbre des mots clés
* @param n le noeud à déplacer
* @param arbreMC le nouvel arbre de mots clés à mettre à jour
*/
public void deplacerMotCleDansArbre(TreeNode n , Tree arbreMC) {
getIModele().deplacerMotCleDansArbre(n, arbreMC) ;
}
 
/**
* initialise les mots clés cochés par rapport aux images sélectionnées
*/
public void initialiserMotsCleCoches() {
obtenirMotsClesId(metadonneesIptcExif.getPanneauMotsCles(), getGalerieImage().getIdSelectionnees()[0]) ;
}
 
/**
* Appelle le modèle pour lui demander les données d'une page à afficher
* @param pageCourante le numéro de page à affciher
*/
public void changerNumeroPage(int pageCourante) {
// on met le mesage d'attente
masquerChargement() ;
// on appelle le modèle
getIModele().changerNumeroPage(pageCourante) ;
// et met à jour les numéros de page dans les barre d'outils
getGalerieImage().getToolBarVue().changerPageCourante(pageCourante);
getListeImage().getToolBarVue().changerPageCourante(pageCourante);
}
/**
* Appelle le modèle pour qu'il change la taille de page utilisée
* @param nouvelleTaillePage la nouvelle taille de page
*/
public void changerTaillePage(int nouvelleTaillePage)
{
// on met le message d'attente
masquerChargement() ;
// on appelle le modèle
getIModele().changerTaillePage(nouvelleTaillePage) ;
// et on met à jour la taille de page dans les barres d'outils
getGalerieImage().getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
getListeImage().getToolBarVue().selectionnerTaillePage(nouvelleTaillePage);
}
 
/**
* Met à jour les barre d'outils avec des nouvelles valeurs
* @param pageMax le nombre de pages
* @param pageEncours la page en cours
* @param taillePage la taille de page
* @param nbElement le nombre d'élements par page
*/
public void changerPageMaxEtCourante(int pageMax, int pageEncours, int taillePage, int nbElement)
{
int[] pages = {pageMax,pageEncours, taillePage, nbElement} ;
getGalerieImage().getToolBarVue().rafraichir(pages, false) ;
getListeImage().getToolBarVue().rafraichir(pages, false) ;
}
/**
* Recherche l'élement actuellement affiché et affiche son message de chargement
*/
public void masquerChargement()
{
ExtElement masked = Ext.get(getIdVueSelectionnee()) ;
 
masked.mask("Chargement") ;
 
}
/**
* Recherche l'élement actuellement affiché et retire son message de chargement si l'était affiché
*/
public void demasquerChargement()
{
ExtElement masked = Ext.get(getIdVueSelectionnee()) ;
if(masked.isMasked())
{
masked.unmask() ;
}
}
 
}