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() ; |
} |
} |
|
|
|
} |