Rev 19 | Rev 25 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.client.image;import org.tela_botanica.client.interfaces.Rafraichissable;import org.tela_botanica.client.interfaces.VueListable;import org.tela_botanica.client.vues.BarreOutilsVue;import org.tela_botanica.client.vues.GalerieImageVue;import org.tela_botanica.client.vues.ListeImageVue;import org.tela_botanica.client.vues.MenuImageVue;import org.tela_botanica.client.vues.PanneauMetadonneesVue;import org.tela_botanica.client.vues.ZoomImageVue;import com.google.gwt.user.client.DOM;import com.google.gwt.user.client.Element;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.RegionPosition;import com.gwtext.client.data.Record;import com.gwtext.client.data.Store;import com.gwtext.client.widgets.DataView;import com.gwtext.client.widgets.Panel;import com.gwtext.client.widgets.TabPanel;import com.gwtext.client.widgets.layout.BorderLayout;import com.gwtext.client.widgets.layout.BorderLayoutData;import com.gwtext.client.widgets.layout.FitLayout;/*** Mediateur gérant les interactions entre vues et les echanges de données* C'est un singleton.* @author aurelien**/public class ImageMediateur {// cette classe est un singletonprivate static boolean estInstancie = false ;// controleurprivate ImageModele iModele = null ;//widgets//Panneau principal des images (onglet "images")private final Panel panneauPrincipalImage = new Panel("Images");// Panneau à onglet pour la liste, la galerie et la vue en grandprivate TabPanel ongletsImage = null ;private Panel panneauMenuEtOngletsImage = null ;private GalerieImageVue galerieImage = null ;private ListeImageVue listeImage = null ;private ZoomImageVue zoomImage = null ;// panneau details et mots clésprivate final Panel detailsEtMotsCles = new Panel("Détails et mots clés");private MenuImageVue menuImageVue = null ;private BarreOutilsVue barreOutilsVue = null ;private PanneauMetadonneesVue metadonneesIptcExif = null ;private int dernierIndexOnglet = 0 ;private boolean selection = false ;/*** @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 ;}}private ImageMediateur(){final BorderLayoutData regionNord = new BorderLayoutData(RegionPosition.NORTH) ;final BorderLayoutData regionCentre = new BorderLayoutData(RegionPosition.CENTER) ;final BorderLayoutData regionEst = new BorderLayoutData(RegionPosition.EAST);regionEst.setSplit(true);iModele = ImageModele.Instance(this);panneauPrincipalImage.setLayout(new BorderLayout());panneauMenuEtOngletsImage = new Panel() ;panneauMenuEtOngletsImage.setLayout(new BorderLayout()) ;ongletsImage = new TabPanel();galerieImage = new GalerieImageVue(this) ;Panel panneauListeImage = new Panel("Liste");listeImage = new ListeImageVue(this);panneauListeImage.setLayout(new FitLayout());panneauListeImage.add(listeImage);zoomImage = new ZoomImageVue(this);ongletsImage.add(galerieImage);ongletsImage.add(zoomImage);ongletsImage.add(panneauListeImage);menuImageVue = new MenuImageVue(this) ;barreOutilsVue = new BarreOutilsVue(this) ;detailsEtMotsCles.setWidth("20%");detailsEtMotsCles.setAnimCollapse(true);detailsEtMotsCles.setTitleCollapse(true);detailsEtMotsCles.setCollapsible(true);metadonneesIptcExif = new PanneauMetadonneesVue(this) ;detailsEtMotsCles.add(metadonneesIptcExif) ;panneauMenuEtOngletsImage.add(barreOutilsVue,regionNord) ;panneauMenuEtOngletsImage.add(ongletsImage,regionCentre);panneauPrincipalImage.add(panneauMenuEtOngletsImage,regionCentre);panneauPrincipalImage.add(detailsEtMotsCles,regionEst);}public String getIdentifiant(){return "0" ;}public ImageModele getIModele() {return iModele;}public Panel getPanneauPrincipalImage() {return panneauPrincipalImage;}public TabPanel getOngletsImage() {return ongletsImage;}public GalerieImageVue getGalerieImage() {return galerieImage;}public ListeImageVue getListeImage() {return listeImage;}public ZoomImageVue getZoomImage() {return zoomImage;}public Panel getDetailsEtMotsCles() {return detailsEtMotsCles;}/*** @return the estInstancie*/public static boolean isEstInstancie() {return estInstancie;}/*** @return the panneauMenuEtOngletsImage*/public Panel getPanneauMenuEtOngletsImage() {return panneauMenuEtOngletsImage;}/*** @return the menuImageVue*/public MenuImageVue getMenuImageVue() {return menuImageVue;}/*** @return the barreOutilsVue*/public BarreOutilsVue getBarreOutilsVue() {return barreOutilsVue;}/*** @return the metadonneesIptcExif*/public PanneauMetadonneesVue getMetadonneesIptcExif() {return metadonneesIptcExif;}/*** @return the dernierIndexOnglet*/public int getDernierIndexOnglet() {return dernierIndexOnglet;}public VueListable getVueSelectionnee(){Panel active = ongletsImage.getActiveTab() ;if(active != zoomImage){if(active == galerieImage){return galerieImage ;}else{return listeImage ;}}else{if(dernierIndexOnglet == 0){return galerieImage ;}else{return listeImage ;}}}public void synchroniserDonneesZoomListeGalerie(Object o, Rafraichissable r){if(o instanceof Store) {Store li = (Store)o ;if(li.getCount() <= 0){aucuneSelection() ;}else{selection() ;}}if(r != getGalerieImage()){getGalerieImage().rafraichir(o,false);}if(r != getZoomImage()){getZoomImage().rafraichir(o,false);}if(r != getListeImage()){getListeImage().rafraichir(o,false);}aucuneSelection() ;}public void obtenirPhotoGalerie(Rafraichissable r){getIModele().obtenirPhotoGalerie(r) ;}public void obtenirMetadonnees(Rafraichissable r, String id){getIModele().obtenirMetadonnees(r, id) ;}public void mettreAJourInfo(String commentaires, String date){String ids[] = getVueSelectionnee().getIdSelectionnees() ;getIModele().mettreAJourCacheImage(commentaires, date, ids) ;}public void uploaderImages(){getIModele().uploaderImages() ;}public void clicGalerieImage(int index, Element node,EventObject e){Record rd = getGalerieImage().getDView().getRecord(node) ;String imgUrl = rd.getAsString("url_image");getZoomImage().rafraichir(imgUrl,false);dernierIndexOnglet = 0 ;if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK){getOngletsImage().setActiveTab(1);}String imgNum = rd.getAsString("num_image");obtenirMetadonnees(metadonneesIptcExif,imgNum) ;}public void clicListeImage(int rowIndex){Record rd = getListeImage().getSelectionModel().getSelected() ;String imgUrl = rd.getAsString("url_image");getZoomImage().rafraichir(imgUrl,false);dernierIndexOnglet = 2 ;String imgNum = rd.getAsString("num_image");obtenirMetadonnees(metadonneesIptcExif,imgNum) ;}public void doubleClicListeImage(int rowIndex){clicListeImage(rowIndex) ;getOngletsImage().setActiveTab(1);}public void rafraichirToutesVues(){obtenirPhotoGalerie(getGalerieImage());}public void montrerContextMenu(EventObject e){menuImageVue.showAt(e.getXY()) ;}public void doubleClicZoomImage(){getOngletsImage().setActiveTab(dernierIndexOnglet);}public void clicBoutonZoomImage(String arg){Store st ;int selected ;int storeIndex ;Record nRec = null ;if(getVueSelectionnee() == galerieImage){DataView dv = getGalerieImage().getDView();st = getGalerieImage().getSt();if(st.getCount() <= 0){return ;}selected = st.indexOf(dv.getSelectedRecords()[0]);storeIndex = dv.indexOf(selected);}else{st = listeImage.getSt() ;if(st.getCount() <= 0){return ;}selected = st.indexOf(listeImage.getSelectionModel().getSelected()) ;storeIndex = selected ;}if(arg.equals("prev")){// si la photo séléctionnée est la première, on passe à la// dernièreif (selected == 0) {storeIndex = st.getCount() - 1 ;nRec = st.getAt(storeIndex);}else{storeIndex = storeIndex - 1 ;nRec = st.getAt(storeIndex);}}if(arg.equals("suiv")){// si la photo selectionnée est la dernière on passe à la// premièreif (selected == st.getCount() - 1) {storeIndex = 0 ;nRec = st.getAt(0);}else{storeIndex = storeIndex + 1 ;nRec = st.getAt(storeIndex);}}if(nRec != null){getZoomImage().rafraichir(nRec.getAsString("url_image"),false);if(getGalerieImage().isRendered()){getGalerieImage().getDView().select(storeIndex);}if(getListeImage().isRendered()){getListeImage().getSelectionModel().selectRecords(nRec) ;}String imgNum = nRec.getAsString("num_image");obtenirMetadonnees(metadonneesIptcExif,imgNum) ;}}public void obtenirSelection(String nomVue){}public void synchroniserSelection(String string) {if(string.equals("galerie") && getDernierIndexOnglet() != 2){Record[] sel = getGalerieImage().getDView().getSelectedRecords() ;getListeImage().selectionnerEnregistrements(sel) ;}if(string.equals("liste") && getDernierIndexOnglet() != 0){Record[] sel = getListeImage().getSelectionModel().getSelections() ;int[] ids = new int[sel.length] ;for (int i = 0; i < sel.length; i++) {ids[i] = getGalerieImage().getSt().indexOf(sel[i]) ;}getGalerieImage().selectionnerImages(ids) ;}}public void supprimerImages() {String[] ids = null ;if(dernierIndexOnglet == 0){ids = getGalerieImage().getIdSelectionnees() ;}else{ids = getListeImage().getIdSelectionnees() ;}if(ids.length > 0){if(com.google.gwt.user.client.Window.confirm("Supprimer les images sélectionnées ?")){getIModele().supprimerImages(ids) ;aucuneSelection() ;}}else{Window.alert("Impossible de supprimer : aucune image selectionnée") ;}}public void aucuneSelection() {if(getListeImage().getSelectionModel().getCount() <= 0 && getGalerieImage().getDView().getSelectionCount() <= 0){getMetadonneesIptcExif().desactiverPanneau() ;getZoomImage().desactiverPanneau() ;setSelection(false) ;}}public void selection() {if(!isSelection()){getMetadonneesIptcExif().activerPanneau() ;getZoomImage().activerPanneau() ;setSelection(true);}}}