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