Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 19 | Rev 27 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed


package org.tela_botanica.client.vues;


import java.util.Iterator;

import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.interfaces.VueListable;
import org.tela_botanica.client.modeles.ImageCarnet;
import org.tela_botanica.client.modeles.ListeImageCarnet;


import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
import com.gwtext.client.data.IntegerFieldDef;
import com.gwtext.client.data.MemoryProxy;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StoreMgr;
import com.gwtext.client.data.StringFieldDef;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Container;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.event.ComponentListenerAdapter;
import com.gwtext.client.widgets.event.ContainerListener;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
import com.gwtext.client.widgets.event.PanelListener;
import com.gwtext.client.widgets.event.PanelListenerAdapter;
import com.gwtext.client.widgets.grid.CellMetadata;
import com.gwtext.client.widgets.grid.ColumnConfig;
import com.gwtext.client.widgets.grid.ColumnModel;
import com.gwtext.client.widgets.grid.GridPanel;
import com.gwtext.client.widgets.grid.GridView;
import com.gwtext.client.widgets.grid.Renderer;
import com.gwtext.client.widgets.grid.RowSelectionModel;
import com.gwtext.client.widgets.grid.event.GridCellListener;
import com.gwtext.client.widgets.grid.event.GridListener;
import com.gwtext.client.widgets.grid.event.GridRowListener;
import com.gwtext.client.widgets.grid.event.RowSelectionListener;
import com.gwtext.client.widgets.grid.event.RowSelectionListenerAdapter;
import com.gwtext.client.widgets.layout.AnchorLayout;
import com.gwtext.client.widgets.layout.FitLayout;
import com.gwtextux.client.data.BufferedStore;

/**
 * Liste d'image composée de miniatures et d'information sur l'image
 * @author aurelien
 *
 */
public class ListeImageVue extends GridPanel implements Rafraichissable, VueListable {
        
        
        
        // instance du médiateur
        private ImageMediateur iMediateur = null; 
        
        
        private ColumnConfig numImage ;
        private ColumnConfig urlImage ;
        private ColumnConfig lieImage ;
        private ColumnConfig datImage ;
        private ColumnConfig appImage ;
        private ColumnModel modeleColonnes ;
        
        private boolean estInstancie = false ;
        
        
        
        // données locales
        // store qui gère les données de la liste d'images
        private Store st = null ;
        private ColumnConfig cl = null ;
        
        
        public ListeImageVue(ImageMediateur im) {
                
                super() ;
                
                this.setId("listeImageGrid") ;
                
                this.iMediateur = im ;
                
                numImage = new ColumnConfig("numéro","num_image",100,true);    
                datImage = new ColumnConfig("date","dat_image",120,true);       
                lieImage = new ColumnConfig("lieu","lie_image",120,true);       
                appImage = new ColumnConfig("appareil","app_image",200,true);   
                urlImage = new ColumnConfig("Image","url_image_S",200,true,new Renderer() {

                        public String render(Object value, CellMetadata cellMetadata,
                                        Record record, int rowIndex, int colNum, Store store) {

                                String ImgUrl = record.getAsString("url_image_S");
                                String ImgNum = record.getAsString("num_image");
                                return "<div class=\"img-list\"> <img src=\""+ImgUrl+"\" title='"+ImgNum+"'> </div>";
                        }

                });
                
                ColumnConfig[] cm = {numImage,datImage,lieImage,appImage,urlImage};
                modeleColonnes = new ColumnModel(cm);
                this.setColumnModel(modeleColonnes);
                this.setAutoScroll(true);
                this.setAutoWidth(true);
                
                
                // creation du store
                FieldDef defNumImage = new IntegerFieldDef("num_image");
                FieldDef defDatImage = new StringFieldDef("dat_image");
                FieldDef defLieImage = new StringFieldDef("lie_image");
                FieldDef defAppImage = new StringFieldDef("app_image");
                FieldDef defUrlImageS = new StringFieldDef("url_image_S");
                FieldDef defUrlImageM = new StringFieldDef("url_image_M");
                FieldDef defUrlImage = new StringFieldDef("url_image");
                FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
                RecordDef rd = new RecordDef(defTab) ;
                st = new Store(rd) ;
                this.setStore(st);
                this.getView().setAutoFill(true) ;
                
                //this.setLoadMask(true) ;
                this.setLoadMask("chargement") ;
                
                ajouterListeners() ;
                
                
        }
        
        public void ajouterListeners()
        {       
                this.addListener(new ContainerListenerAdapter() {

                        
                        public void onHide(Component component) {
                                // TODO Auto-generated method stub
                                
                        }

                        
                        public void onRender(Component component) {

                                if(!isEstInstancie())
                                {
                                        setEstInstancie(true) ;
                                        getIMediateur().synchroniserSelection("galerie") ;
                                }
                        }

                        
                        public void onShow(Component component) {
                                
                                
                        }

                        
                });
                
                this.addGridRowListener(new GridRowListener() {


                        public void onRowClick(GridPanel grid, int rowIndex, EventObject e) {
                                        ;
                                getIMediateur().clicListeImage(rowIndex) ;      
                        }

                        public void onRowContextMenu(GridPanel grid, int rowIndex,
                                        EventObject e) {
                                
                                getIMediateur().montrerContextMenu(e) ;
                                
                        }

                        public void onRowDblClick(GridPanel grid, int rowIndex,
                                        EventObject e) {
                                

                                getIMediateur().doubleClicListeImage(rowIndex) ;
                                                                    
                                
                        }
                        
                });
                
                this.getSelectionModel().addListener(new RowSelectionListenerAdapter() {

                        public void onSelectionChange(RowSelectionModel sm) {
                                
                                if(sm.getCount() <= 0)
                                {
                                        getIMediateur().aucuneSelection() ;
                                }
                                else
                                {
                                        getIMediateur().selection() ;
                                        getIMediateur().synchroniserSelection("liste");
                                }
                                
                        }
                        
                });
        }
        
        public String[] getIdSelectionnees()
        {               
                Record[] selection = this.getSelectionModel().getSelections() ;
                int taille = selection.length ;
                String id_selection[] = new String[taille] ;
                
                for (int i = 0; i < selection.length; i++) {
                        
                        id_selection[i] = selection[i].getAsString("num_image") ;
                }
                
                return id_selection ;
        }


        public void rafraichir(Object nouvelleDonnees, boolean repandreRafraichissement) {
                
                if(nouvelleDonnees instanceof Store)
                {
                        
                        st = (Store)nouvelleDonnees;
                        st.load();
                        this.reconfigure(st, this.getColumnModel());
                }
                
                if(repandreRafraichissement)
                {
                        getIMediateur().synchroniserDonneesZoomListeGalerie(nouvelleDonnees, this) ;
                }
        }


        public ImageMediateur getIMediateur() {
                return iMediateur;
        }


        public ColumnConfig getNumImage() {
                return numImage;
        }


        public ColumnConfig getUrlImage() {
                return urlImage;
        }


        public ColumnModel getModeleColonnes() {
                return modeleColonnes;
        }


        public Store getSt() {
                return st;
        }


        public ColumnConfig getCl() {
                return cl;
        }


        /**
         * @return the estInstancie
         */
        public boolean isEstInstancie() {
                return estInstancie;
        }


        /**
         * @param estInstancie the estInstancie to set
         */
        public void setEstInstancie(boolean estInstancie) {
                this.estInstancie = estInstancie;
        }


        /**
         * @param mediateur the iMediateur to set
         */
        public void setIMediateur(ImageMediateur mediateur) {
                iMediateur = mediateur;
        }

        public void selectionnerEnregistrements(Record[] sel) {
                
                if(isEstInstancie())
                {
                        getSelectionModel().clearSelections() ;
                        getSelectionModel().selectRecords(sel) ;
                }
        }
        
        

}