Subversion Repositories eFlore/Archives.cel-v2

Rev

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


package org.tela_botanica.client.vues;


import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;


import com.google.gwt.user.client.Window;
import com.gwtext.client.data.ArrayReader;
import com.gwtext.client.data.FieldDef;
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.Component;
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.gwtextux.client.data.BufferedStore;

public class ListeImageVue extends GridPanel implements Rafraichissable {
        
        
        
        // instance du médiateur
        private ImageMediateur iMediateur = null; 
        
        
        private ColumnConfig numImage ;
        private ColumnConfig urlImage ;
        private ColumnModel modeleColonnes ;
        
        
        
        // 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) {
                
                this.iMediateur = im ;
                
                
                setAutoWidth(true);
                setAutoHeight(true);
                
                numImage = new ColumnConfig("numéro d'image","num_image",150,true);            
                urlImage = new ColumnConfig("Image","url_image",150,true,new Renderer() {

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

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

                });
                
                ColumnConfig[] cm = {numImage,urlImage};
                modeleColonnes = new ColumnModel(cm);
                this.setColumnModel(modeleColonnes);
                this.setAutoScroll(true);
                
                
                FieldDef defNumImage = new StringFieldDef("num_image");
                FieldDef defUrlImage = new StringFieldDef("url_image");
                FieldDef[] defTab = {defNumImage,defUrlImage};
                RecordDef rd = new RecordDef(defTab) ;
                st = new Store(rd) ;
                this.setStore(st);
                
                ajouterListeners() ;
                
        }
        
        
        // role : configurer les colonnes affichées dans la grille
        private void initialiser() {
                
                getIMediateur().obtenirPhotoGalerie(this);
                
                
        }
        
        public void ajouterListeners()
        {
                this.addListener(new ContainerListenerAdapter() {


                        public boolean doBeforeRender(Component component)
                        {
                                initialiser();
                                return true ;
                        }
                        
                        public void onHide(Component component) {
                                // TODO Auto-generated method stub
                                
                        }


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


                        public void onShow(Component component) {
                                
                        }
                        
                });
        }


        public void rafraichir(Object nouvelleDonnees) {
                
                Object[][] photoData = (Object[][])nouvelleDonnees ;

                final MemoryProxy dataProxy = new MemoryProxy(photoData);
                final ArrayReader reader = new ArrayReader(new RecordDef(
                                new FieldDef[]{new StringFieldDef("num_image"),
                                                new StringFieldDef("url_image")}));

                final Store photoStore = new Store(dataProxy, reader);

                st = photoStore;
                this.reconfigure(st, this.getColumnModel());
                photoStore.load();
        }


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

}