7,9 → 7,12 |
|
import com.google.gwt.core.client.JavaScriptObject; |
import com.google.gwt.user.client.Element; |
import com.google.gwt.user.client.Event; |
import com.gwtext.client.core.EventObject; |
import com.gwtext.client.core.XTemplate; |
import com.gwtext.client.data.ArrayReader; |
import com.gwtext.client.data.FieldDef; |
import com.gwtext.client.data.MemoryProxy; |
import com.gwtext.client.data.RecordDef; |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
16,13 → 19,17 |
import com.gwtext.client.util.Format; |
import com.gwtext.client.widgets.BoxComponent; |
import com.gwtext.client.widgets.Component; |
import com.gwtext.client.widgets.Container; |
import com.gwtext.client.widgets.DataView; |
import com.gwtext.client.widgets.Observable; |
import com.gwtext.client.widgets.Panel; |
import com.gwtext.client.widgets.DataView.Data; |
import com.gwtext.client.widgets.event.ContainerListener; |
import com.gwtext.client.widgets.event.ContainerListenerAdapter; |
import com.gwtext.client.widgets.event.DataViewListener; |
import com.gwtext.client.widgets.event.DataViewListenerAdapter; |
|
public class GalerieImageVue extends Panel implements Rafraichissable { |
public class GalerieImageVue extends Panel implements Rafraichissable, Observable { |
|
// instance du médiateur |
private ImageMediateur iMediateur = null; |
34,54 → 41,38 |
super("Galerie"); |
iMediateur = im ; |
|
this.addListener(new ContainerListenerAdapter() { |
|
// Preparation de la dataview et du template |
// le template va créer une div contenant une image |
// pour chacune des photos |
final XTemplate template = new XTemplate( |
new String[]{ |
"<tpl for='.'>", |
"<div class='thumb-wrap' id='{nom}'>", |
"<div class='thumb'><img src='{url}' title='{nom}'></div>", |
"<span>{nom}</span></div>", "</tpl>", |
"<div class='x-clear'></div>"}); |
template.compile(); |
|
// la dataview affichera les images en accord avec le template |
// cree precedemment |
dView = new DataView("div.thumb-wrap") { |
public void prepareData(Data data) { |
data.setProperty("shortName", Format.ellipsis(data |
.getProperty("name"), 15)); |
public void onHide(Component component) { |
// TODO Auto-generated method stub |
|
} |
}; |
dView.setTpl(template); |
|
// parametre d'affichage de la dataview |
dView.setAutoHeight(true); |
dView.setMultiSelect(true); |
dView.setOverCls("x-view-over"); |
dView.setEmptyText("Aucune image à afficher"); |
|
public void onRender(Component component) { |
// TODO Auto-generated method stub |
|
// creation du store |
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) ; |
dView.setStore(st); |
} |
|
// ajouts de la gestion des evenements pour la dataview |
ajouterListeners(); |
|
this.add(dView); |
public void onShow(Component component) { |
|
|
if(dView == null) |
{ |
initialiser(); |
} |
} |
|
}); |
|
public void ajouterListeners() |
} |
|
|
public void ajouterListenersDataView() |
{ |
|
// ajout de listeners pour la gestion de la selection |
// dans la galerie |
dView.addListener(new DataViewListenerAdapter() { |
90,8 → 81,9 |
|
public void onClick(DataView source, int index, Element node, |
EventObject e) { |
//TODO: appeler le mediateur |
|
getIMediateur().ClicGalerieImage(index, node, e); |
|
} |
|
|
110,7 → 102,9 |
|
public void onDblClick(DataView source, int index, Element node, |
EventObject e) { |
|
//TODO: appeler le mediateur |
getIMediateur().ClicGalerieImage(index, node, e); |
|
} |
|
124,9 → 118,84 |
} |
|
|
// instantiation paresseuse |
public void initialiser() |
{ |
// Preparation de la dataview et du template |
// le template va créer une div contenant une image |
// pour chacune des photos |
final XTemplate template = new XTemplate( |
new String[]{ |
"<tpl for='.'>", |
"<div class='thumb-wrap' id='{num_image}'>", |
"<div class='thumb'><img src='{url_image}' title='{num_image}'></div>", |
"<span>{nom}</span></div>", "</tpl>", |
"<div class='x-clear'></div>"}); |
template.compile(); |
|
// la dataview affichera les images en accord avec le template |
// cree precedemment |
dView = new DataView("div.thumb-wrap") { |
public void prepareData(Data data) { |
data.setProperty("shortName", Format.ellipsis(data |
.getProperty("num_image"), 15)); |
} |
}; |
dView.setTpl(template); |
|
// parametre d'affichage de la dataview |
dView.setAutoHeight(true); |
dView.setMultiSelect(true); |
dView.setOverCls("x-view-over"); |
dView.setEmptyText("Aucune image à afficher"); |
|
|
// creation du store |
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) ; |
dView.setStore(st); |
|
// ajouts de la gestion des evenements pour la dataview |
ajouterListenersDataView(); |
|
this.add(dView); |
|
getIMediateur().ObtenirPhotoGalerie(this); |
} |
|
|
|
public void rafraichir(Object nouvelleDonnees) { |
// TODO Auto-generated method stub |
|
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); |
photoStore.load(); |
|
st = photoStore; |
dView.setStore(st); |
dView.refresh(); |
} |
|
|
public ImageMediateur getIMediateur() { |
return iMediateur; |
} |
|
|
public DataView getDView() { |
return dView; |
} |
|
|
public Store getSt() { |
return st; |
} |
} |