Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 4 → Rev 5

/trunk/src/org/tela_botanica/client/modeles/ListeImageAsynchroneDAO.java
New file
0,0 → 1,51
package org.tela_botanica.client.modeles;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
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;
 
public class ListeImageAsynchroneDAO {
public void ObtenirListeImages(final Rafraichissable r)
{
HTTPRequest.asyncGet("getphotos.php", new ResponseTextHandler() {
public void onCompletion(String responseText) {
final Object[][] photoData ;
 
final JSONValue responseValue = JSONParser.parse(responseText);
if (responseValue.isArray() != null) {
final JSONArray liste_noms = responseValue.isArray();
 
final int taillemax = liste_noms.size();
photoData = new Object[taillemax][2];
for (int j = 0; j < liste_noms.size(); j++) {
final JSONString debuturl = (JSONString) liste_noms
.get(j);
photoData[j] = new Object[]{"photo" + j,
"images/" + debuturl.stringValue()};
}
}
else
{
photoData = null ;
}
r.rafraichir(photoData);
}
});
}
 
}
/trunk/src/org/tela_botanica/client/image/ImageControleur.java
1,5 → 1,8
package org.tela_botanica.client.image;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO;
 
public class ImageControleur {
private ImageMediateur iMediateur = null ;
8,5 → 11,11
iMediateur = im ;
}
public void obtenirPhotoGalerie(Rafraichissable r)
{
ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
liaDAO.ObtenirListeImages(r);
}
 
}
/trunk/src/org/tela_botanica/client/image/ImageMediateur.java
1,10 → 1,19
package org.tela_botanica.client.image;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.vues.GalerieImageVue;
import org.tela_botanica.client.vues.ListeImageVue;
import org.tela_botanica.client.vues.ZoomImageVue;
 
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Element;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.data.Record;
import com.gwtext.client.data.Store;
import com.gwtext.client.widgets.DataView;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.TabPanel;
import com.gwtext.client.widgets.layout.BorderLayout;
96,5 → 105,98
return detailsEtMotsCles;
}
public void synchroniserZoomListeGalerie(Object o, Rafraichissable r)
{
if(r != getGalerieImage())
{
getGalerieImage().rafraichir(o);
}
if(r != getZoomImage())
{
getZoomImage().rafraichir(o);
}
if(r != getListeImage())
{
getListeImage().rafraichir(o);
}
}
public void ObtenirPhotoGalerie(Rafraichissable r)
{
getIControleur().obtenirPhotoGalerie(r) ;
}
public void ClicGalerieImage(int index, Element node,
EventObject e)
{
Record rd = getGalerieImage().getDView().getRecord(node) ;
String imgUrl = rd.getAsString("url_image");
getZoomImage().rafraichir(imgUrl);
if(DOM.eventGetType(e.getBrowserEvent()) == Event.ONDBLCLICK)
{
getOngletsImage().setActiveTab(1);
}
}
public void DoubleClicZoomImage()
{
getOngletsImage().setActiveTab(0);
}
public void ClicBoutonZoomImage(String arg)
{
DataView dv = getGalerieImage().getDView();
Store st = getGalerieImage().getSt();
Record nRec = null ;
final int selected = st.indexOf(dv.getSelectedRecords()[0]);
int storeIndex = dv.indexOf(selected);
if(arg.equals("prev"))
{
// si la photo séléctionnée est la première, on passe à la
// dernière
if (selected == 0) {
storeIndex = st.getCount() - 1 ;
nRec = st.getAt(storeIndex);
}
else
{
storeIndex = storeIndex - 1 ;
nRec = st.getAt(storeIndex);
}
}
if(arg.equals("suiv"))
{
// si la photo selectionnée est la dernière on passe à la
// première
if (selected == st.getCount() - 1) {
storeIndex = 0 ;
nRec = st.getAt(0);
}
else
{
storeIndex = storeIndex + 1 ;
nRec = st.getAt(storeIndex);
}
}
if(nRec != null)
{
getZoomImage().rafraichir(nRec.getAsString("url_image"));
dv.select(storeIndex);
}
}
 
}
/trunk/src/org/tela_botanica/client/vues/ZoomImageVue.java
5,7 → 5,12
import org.tela_botanica.client.interfaces.Rafraichissable;
 
 
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.RegionPosition;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
24,9 → 29,19
super("Zoom");
iMediateur = im ;
image = new Image();
image.setUrl("images/vide.jpg");
image = new Image() {
public void onBrowserEvent(Event event) {
if (Event.ONDBLCLICK == DOM.eventGetType(event)) {
 
getIMediateur().DoubleClicZoomImage();
}
}
};
 
image.sinkEvents(Event.ONDBLCLICK);
image.setUrl("image/vide.jpg");
this.setLayout(new BorderLayout());
prev.setWidth("5%");
35,12 → 50,61
this.add(prev,new BorderLayoutData(RegionPosition.WEST));
this.add(image,new BorderLayoutData(RegionPosition.CENTER));
this.add(suiv,new BorderLayoutData(RegionPosition.EAST));
ajouterListenersBoutons();
}
 
public void rafraichir(Object nouvelleDonnees) {
// TODO Auto-generated method stub
if(nouvelleDonnees instanceof String)
{
getImage().setUrl((String)nouvelleDonnees);
}
}
public void ajouterListenersBoutons()
{
prev.addClickListener(new ClickListener() {
 
public void onClick(Widget sender) {
getIMediateur().ClicBoutonZoomImage("prev");
}
});
suiv.addClickListener(new ClickListener() {
 
public void onClick(Widget sender) {
getIMediateur().ClicBoutonZoomImage("suiv");
}
});
}
 
 
public ImageMediateur getIMediateur() {
return iMediateur;
}
 
 
public Image getImage() {
return image;
}
 
 
public com.google.gwt.user.client.ui.Button getPrev() {
return prev;
}
 
 
public com.google.gwt.user.client.ui.Button getSuiv() {
return suiv;
}
 
}
/trunk/src/org/tela_botanica/client/vues/GalerieImageVue.java
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 ;
// 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();
this.addListener(new ContainerListenerAdapter() {
 
// 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);
 
 
public void onRender(Component component) {
// TODO Auto-generated method stub
}
 
 
public void onShow(Component component) {
if(dView == null)
{
initialiser();
}
}
});
// 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
ajouterListeners();
this.add(dView);
}
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;
}
}
/trunk/src/org/tela_botanica/client/vues/ListeImageVue.java
6,12 → 6,18
import org.tela_botanica.client.interfaces.Rafraichissable;
 
 
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.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;
42,17 → 48,10
public ListeImageVue(ImageMediateur im) {
this.iMediateur = im ;
configurerColonnes();
configurerStore();
setAutoWidth(true);
setAutoHeight(true);
}
// role : configurer les colonnes affichées dans la grille
private void configurerColonnes() {
setAutoHeight(true);
numImage = new ColumnConfig("numéro d'image","num_image",150,true);
urlImage = new ColumnConfig("Image","url_image",150,true,new Renderer() {
60,7 → 59,7
public String render(Object value, CellMetadata cellMetadata,
Record record, int rowIndex, int colNum, Store store) {
 
String ImgUrl = record.getAsString("Miniature");
String ImgUrl = record.getAsString("url_image");
return "<img src=\""+ImgUrl+"\" title='example'>";
}
 
78,22 → 77,90
st = new Store(rd) ;
this.setStore(st);
ajouterListeners() ;
}
// role : préparer le store et faire l'appel aux données nécessaires
private void configurerStore() {
// role : configurer les colonnes affichées dans la grille
private void initialiser() {
getIMediateur().ObtenirPhotoGalerie(this);
}
public void ajouterListeners()
{
this.addListener(new ContainerListenerAdapter() {
 
 
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) {
initialiser();
}
});
}
 
 
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;
this.reconfigure(st, modeleColonnes);
}
 
 
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;
}