Rev 27 | Rev 31 | 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) {
}
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) {
e.stopEvent() ;
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 ColumnConfig getCl() {
return cl;
}
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 ImageMediateur getIMediateur() {
return iMediateur;
}
public ColumnModel getModeleColonnes() {
return modeleColonnes;
}
public ColumnConfig getNumImage() {
return numImage;
}
public Store getSt() {
return st;
}
public ColumnConfig getUrlImage() {
return urlImage;
}
/**
* @return the estInstancie
*/
public boolean isEstInstancie() {
return estInstancie;
}
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 void selectionnerEnregistrements(Record[] sel) {
if (isEstInstancie()) {
getSelectionModel().clearSelections();
getSelectionModel().selectRecords(sel);
}
}
/**
* @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;
}
}