/trunk/src/org/tela_botanica/client/modeles/ObservationAsynchroneDAO.java |
---|
5,7 → 5,6 |
* |
*/ |
import org.tela_botanica.client.Util; |
import org.tela_botanica.client.interfaces.iRetourObservation; |
/trunk/src/org/tela_botanica/client/modeles/ImageUploaderAsynchroneDAO.java |
---|
New file |
0,0 → 1,93 |
package org.tela_botanica.client.modeles; |
import com.gwtext.client.widgets.Window; |
import com.gwtextux.client.widgets.upload.UploadDialog; |
/** |
* DAO un peu particulier car il crée une fenetre d'upload différente |
* suivant que le plugin Java est détecté ou non |
* |
* |
*/ |
public class ImageUploaderAsynchroneDAO { |
private static void appelerUploadSimple() |
{ |
UploadDialog up = new UploadDialog("Upload simple de fichiers") ; |
up.setUrl("jrest/InventoryImage"); |
up.show(); |
} |
private static void appelerUploadMultiple() |
{ |
final Window nPan = new Window("Upload multiple"); |
nPan.setSize(640, 800); |
final String applet = "<applet code=\"wjhk.jupload2.JUploadApplet\" archive=\"wjhk.jupload.jar\" alt=\"\" mayscript=\"\" height=\"770\" width=\"625\">"; |
final String paramPostTarget = "<param name=\"postURL\" value=\"jrest/InventoryImage/\">"; |
final String paramUploadPolicy = "<param name=\"uploadPolicy\" value=\"PictureUploadPolicy\">"; |
final String paramMaxChunkSize = "<param name=\"maxChunkSize\" value=\"0\">"; |
final String paramMaxFileSize = "<param name=\"maxFileSize\" value=\"10000000\">"; |
final String paramMaxPicHeight = "<param name=\"maxPicHeight\" value=\"1200\">" ; |
final String paramMaxPicWidth = "<param name=\"maxPicWidth\" value=\"1600\">" ; |
final String paramTransmitMetaData = "<param name=\"pictureTransmitMetadata\" value=\"true\">"; |
final String paramFilesPerRequest = "<param name=\"nbFilesPerRequest\" value=\"1\">"; |
final String paramAllowedExtensions = "<param name=\"allowedFileExtensions\" value=\"jpg/jpeg/\">"; |
final String paramUploadSuccess = "<param name=\"stringUploadSuccess\" value=\"OK\">" ; |
final String paramShowLogWindow = "<param name=\"showLogWindow\" value=\"false\">"; |
final String finApplet = "</applet>"; |
final String appelApplet = applet |
+ paramPostTarget |
+ paramUploadPolicy |
+ paramMaxChunkSize |
+ paramMaxFileSize |
+ paramMaxPicHeight |
+ paramMaxPicWidth |
+ paramTransmitMetaData |
+ paramFilesPerRequest |
+ paramAllowedExtensions |
+ paramUploadSuccess |
+ paramShowLogWindow |
+ finApplet; |
nPan.setHtml(appelApplet); |
nPan.show(); |
} |
public static native void choisirMethodeUpload() /*-{ |
var agt=navigator.userAgent.toLowerCase(); |
var ie = (agt.indexOf("msie") != -1); |
var ns = (navigator.appName.indexOf("Netscape") != -1); |
var win = ((agt.indexOf("win")!=-1) || (agt.indexOf("32bit")!=-1)); |
var mac = (agt.indexOf("mac")!=-1); |
function detectIE(ClassID,name) { result = false; document.write('<SCRIPT LANGUAGE=VBScript>\n on error resume next \n result = IsObject(CreateObject("' + ClassID + '"))</SCRIPT>\n'); if (result) return name+','; else return ''; } |
function detectNS(ClassID,name) { n = ""; if (nse.indexOf(ClassID) != -1) if (navigator.mimeTypes[ClassID].enabledPlugin != null) n = name+","; return n; } |
if (ie && win) { pluginlist = detectIE("Adobe.SVGCtl","SVG Viewer") + detectIE("SWCtl.SWCtl.1","Shockwave Director") + detectIE("ShockwaveFlash.ShockwaveFlash.1","Shockwave Flash") + detectIE("rmocx.RealPlayer G2 Control.1","RealPlayer") + detectIE("QuickTimeCheckObject.QuickTimeCheck.1","QuickTime") + detectIE("MediaPlayer.MediaPlayer.1","Windows Media Player") + detectIE("PDF.PdfCtrl.5","Acrobat Reader"); } |
if (ns || !win) { |
nse = ""; for (var i=0;i<navigator.mimeTypes.length;i++) nse += navigator.mimeTypes[i].type.toLowerCase(); |
pluginlist = detectNS("image/svg-xml","SVG Viewer") + detectNS("application/x-director","Shockwave Director") + detectNS("application/x-shockwave-flash","Shockwave Flash") + detectNS("audio/x-pn-realaudio-plugin","RealPlayer") + detectNS("video/quicktime","QuickTime") + detectNS("application/x-mplayer2","Windows Media Player") + detectNS("application/pdf","Acrobat Reader"); |
} |
pluginlist += navigator.javaEnabled() ? "Java," : ""; |
if (pluginlist.length > 0) pluginlist = pluginlist.substring(0,pluginlist.length-1); |
if(pluginlist.indexOf("Java")!=-1) |
{ |
@org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO::appelerUploadMultiple()() ; |
} |
else |
{ |
@org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO::appelerUploadSimple()() ; |
} |
}-*/; |
} |
/trunk/src/org/tela_botanica/client/modeles/ImageCarnet.java |
---|
1,29 → 1,169 |
package org.tela_botanica.client.modeles; |
public class ImageCarnet { |
import java.util.HashMap; |
import java.util.Iterator; |
import java.util.Set; |
import com.google.gwt.json.client.JSONObject; |
/** |
* |
* Classe representant une image du carnet, |
* elle ne contient pas d'image à proprement parler mais |
* plutôt les informations associées ainsi que l'url distante |
* |
*/ |
public class ImageCarnet extends HashMap { |
private String url = null ; |
private int numero = 0 ; |
private String nom = null ; |
/* |
// infos sur l'image |
private String url = " " ; |
private String ordre = " " ; |
private String utilisateur = " " ; |
private boolean publiable = false ; |
private String height = "0" ; |
private String width = "0" ; |
private String make = " " ; |
private String model = " " ; |
private String xResolution = "0" ; |
private String yResolution = "0" ; |
private String date = " " ; |
private String GPS = " " ; |
private String comment = " " ; |
public ImageCarnet(String url,int numero,String nom) |
// metadonnees exif |
private String exifExposureTime = " " ; |
private String exifFNumber = " " ; |
private String exifVersion = " " ; |
private String exifCompressedBitsPerPixel = " " ; |
private String exifShutterSpeedValue = " " ; |
private String exifApertureValue = " " ; |
private String exifExposureBiasValue = " " ; |
private String exifMaxApertureValue = " " ; |
private String exifMeteringMode = " " ; |
private String exifLightSource = " " ; |
private String exifFlash = " " ; |
private String exifFocalLength = " " ; |
private String exifFlashPixVersion = " " ; |
private String exifColorSpace = " " ; |
private String exifInteroperabilityOffset = " " ; |
private String exifFocalPlaneXResolution = " " ; |
private String exifFocalPlaneYResolution = " " ; |
private String exifFocalPlaneResolutionUnit = " " ; |
private String exifSensingMethod = " " ; |
private String exifFileSource = " " ; |
private String exifCustomRendered = " " ; |
private String exifExposureMode = " " ; |
private String exifWhiteBalance = " " ; |
private String exifDigitalZoomRatio = " " ; |
private String exifSceneCaptureType = " " ; |
private String exifGainControl = " " ; |
private String exifContrast = " " ; |
private String exifSaturation = " " ; |
private String exifSharpness = " " ; |
private String exifSubjectDistanceRange = " " ; |
private String exifAutres = " " ; |
// metadonnes iptc |
private String iptcMotsCles = " " ; |
private String iptcByLine = " " ; |
private String iptcByLineTitle = " " ; |
private String iptcCity = " " ; |
private String iptcSubLocation = " " ; |
private String iptcProvinceState = " " ; |
private String iptcCountryPrimaryLocationCode = " " ; |
private String iptcHeadline = " " ; |
private String iptcCredit = " " ; |
private String iptcCopyrightNotice = " " ; |
private String iptcContact = " " ; |
private String iptcAutres = " " ; |
*/ |
public ImageCarnet(JSONObject image) |
{ |
Set im = image.keySet() ; |
for (Iterator iterator = im.iterator(); iterator.hasNext();) { |
String key = (String) iterator.next(); |
if(image.get(key).isString() != null) |
{ |
String valeur = image.get(key).isString().stringValue() ; |
this.put(key, valeur) ; |
} |
} |
} |
public String renvoyerValeurCorrecte(String cle) |
{ |
this.url = url ; |
this.numero = numero ; |
this.nom = nom ; |
if(this.containsKey((cle))) |
{ |
String valeur = (String)this.get(cle) ; |
if(valeur.equals("null")) |
{ |
return " " ; |
} |
else |
{ |
return valeur ; |
} |
} |
else |
{ |
return " " ; |
} |
} |
public String getOrdre() { |
return renvoyerValeurCorrecte("ci_ordre") ; |
} |
public String getBaseUrl() |
{ |
return "http://localhost/Documents/images_serveur/" ; |
} |
public String getUrl() { |
return url; |
return getBaseUrl()+(String)this.get("ci_id_image")+".jpg" ; |
} |
public String getSUrl() { |
return getBaseUrl()+(String)this.get("ci_id_image")+"_S.jpg" ; |
} |
public String getMUrl() { |
return getBaseUrl()+(String)this.get("ci_id_image")+"_M.jpg" ; |
} |
public int getNumero() { |
return numero; |
public String getDate() { |
return renvoyerValeurCorrecte("ci_meta_date_time") ; |
} |
public String getNom() { |
return nom; |
public Object getIptcCity() { |
return renvoyerValeurCorrecte("ci_meta_iptc_city") ; |
} |
public String getMake() { |
return renvoyerValeurCorrecte("ci_meta_make") ; |
} |
public String getModel() { |
return renvoyerValeurCorrecte("ci_meta_model") ; |
} |
} |
/trunk/src/org/tela_botanica/client/modeles/ListeImageAsynchroneDAO.java |
---|
3,6 → 3,7 |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import com.google.gwt.json.client.JSONArray; |
import com.google.gwt.json.client.JSONObject; |
import com.google.gwt.json.client.JSONParser; |
import com.google.gwt.json.client.JSONString; |
import com.google.gwt.json.client.JSONValue; |
15,32 → 16,49 |
import com.gwtext.client.data.Store; |
import com.gwtext.client.data.StringFieldDef; |
/** |
* Data Object Access communiquant avec le serveur jrest fournissant la liste des images |
* répondant à des critères donné |
* @author aurelien |
* |
*/ |
public class ListeImageAsynchroneDAO { |
public void ObtenirListeImages(final Rafraichissable r) |
{ |
HTTPRequest.asyncGet("getphotos.php", new ResponseTextHandler() { |
HTTPRequest.asyncGet("jrest/inventoryImageList/1/ci_publiable_eflore=0", new ResponseTextHandler() { |
public void onCompletion(String responseText) { |
final Object[][] photoData ; |
final ListeImage photoData ; |
final JSONValue responseValue = JSONParser.parse(responseText); |
if (responseValue.isArray() != null) { |
final JSONArray liste_noms = responseValue.isArray(); |
final JSONArray reponse = 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()}; |
final int taillemax = reponse.size(); |
photoData = new ListeImage(taillemax); |
for (int j = 0; j < taillemax ; j++) { |
JSONObject image = (JSONObject)reponse.get(j) ; |
photoData.add(new ImageCarnet(image)) ; |
} |
} |
else |
{ |
photoData = null ; |
if(responseValue.isObject() != null) |
{ |
photoData = new ListeImage(1); |
photoData.add(new ImageCarnet(responseValue.isObject())) ; |
} |
else |
{ |
photoData = null ; |
} |
} |
r.rafraichir(photoData); |
/trunk/src/org/tela_botanica/client/modeles/ListeImage.java |
---|
2,6 → 2,12 |
import java.util.Vector; |
/** |
* vecteur composé d'ImageCarnet, renvoyé par les objets de type DAO |
* pour les images |
* @author aurelien |
* |
*/ |
public class ListeImage extends Vector { |
public ListeImage() |
9,12 → 15,17 |
super(); |
} |
public ListeImage(int taille) |
{ |
super(taille); |
} |
public ListeImage(ImageCarnet[] ic) |
{ |
super() ; |
for (int i = 0; i < ic.length; i++) |
{ |
if(ic[i] != null) |
if(ic[i] != null && ic[i] instanceof ImageCarnet) |
{ |
this.add(ic[i]); |
} |
/trunk/src/org/tela_botanica/client/image/ImageMediateur.java |
---|
3,12 → 3,11 |
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.MenuImageVue; |
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; |
18,9 → 17,19 |
import com.gwtext.client.widgets.TabPanel; |
import com.gwtext.client.widgets.layout.BorderLayout; |
import com.gwtext.client.widgets.layout.BorderLayoutData; |
import com.gwtext.client.widgets.layout.FitLayout; |
/** |
* Mediateur gérant les interactions entre vues et les echanges de données |
* C'est un singleton. |
* @author aurelien |
* |
*/ |
public class ImageMediateur { |
// cette classe est un singleton |
private static boolean estInstancie = false ; |
// controleur |
private ImageModele iModele = null ; |
39,9 → 48,28 |
// panneau details et mots clés |
private final Panel detailsEtMotsCles = new Panel("Détails et mots clés"); |
private MenuImageVue menuImageVue = null ; |
public ImageMediateur() |
public static ImageMediateur Instance() |
{ |
if(!estInstancie) |
{ |
estInstancie = true ; |
return new ImageMediateur() ; |
} |
else |
{ |
return null ; |
} |
} |
private ImageMediateur() |
{ |
final BorderLayoutData regionNord = new BorderLayoutData( |
RegionPosition.NORTH) ; |
final BorderLayoutData regionCentre = new BorderLayoutData( |
RegionPosition.CENTER) ; |
final BorderLayoutData regionEst = new BorderLayoutData( |
RegionPosition.EAST); |
48,7 → 76,7 |
regionEst.setSplit(true); |
iModele = new ImageModele(this); |
iModele = ImageModele.Instance(this); |
panneauPrincipalImage.setLayout(new BorderLayout()); |
57,6 → 85,7 |
Panel panneauListeImage = new Panel("Liste"); |
listeImage = new ListeImageVue(this); |
panneauListeImage.setLayout(new FitLayout()); |
panneauListeImage.add(listeImage); |
zoomImage = new ZoomImageVue(this); |
65,12 → 94,14 |
ongletsImage.add(zoomImage); |
ongletsImage.add(panneauListeImage); |
menuImageVue = new MenuImageVue(this) ; |
detailsEtMotsCles.setWidth("20%"); |
detailsEtMotsCles.setAnimCollapse(true); |
detailsEtMotsCles.setTitleCollapse(true); |
detailsEtMotsCles.setCollapsible(true); |
panneauPrincipalImage.add(ongletsImage,new BorderLayoutData(RegionPosition.CENTER)); |
panneauPrincipalImage.add(ongletsImage,regionCentre); |
panneauPrincipalImage.add(detailsEtMotsCles,regionEst); |
} |
127,7 → 158,12 |
getIModele().obtenirPhotoGalerie(r) ; |
} |
public void ClicGalerieImage(int index, Element node, |
public void uploaderImage() |
{ |
getIModele().uploaderImages() ; |
} |
public void clicGalerieImage(int index, Element node, |
EventObject e) |
{ |
Record rd = getGalerieImage().getDView().getRecord(node) ; |
141,12 → 177,17 |
} |
} |
public void DoubleClicZoomImage() |
public void montrerContextMenu(EventObject e) |
{ |
menuImageVue.showAt(e.getXY()) ; |
} |
public void doubleClicZoomImage() |
{ |
getOngletsImage().setActiveTab(0); |
} |
public void ClicBoutonZoomImage(String arg) |
public void clicBoutonZoomImage(String arg) |
{ |
DataView dv = getGalerieImage().getDView(); |
198,5 → 239,6 |
} |
} |
} |
/trunk/src/org/tela_botanica/client/image/ImageModele.java |
---|
1,13 → 1,34 |
package org.tela_botanica.client.image; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO; |
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO; |
/** |
* Modèle d'accès aux données pour les images. |
* C'est un singleton |
* @author aurelien |
* |
*/ |
public class ImageModele { |
private static boolean estInstancie = false ; |
private ImageMediateur iMediateur = null ; |
public ImageModele(ImageMediateur im) { |
static ImageModele Instance(ImageMediateur im) |
{ |
if(!estInstancie) |
{ |
return new ImageModele(im); |
} |
else |
{ |
return null ; |
} |
} |
private ImageModele(ImageMediateur im) { |
iMediateur = im ; |
} |
17,5 → 38,10 |
ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO(); |
liaDAO.ObtenirListeImages(r); |
} |
public void uploaderImages() |
{ |
ImageUploaderAsynchroneDAO.choisirMethodeUpload() ; |
} |
} |
/trunk/src/org/tela_botanica/client/vues/ListeImageVue.java |
---|
2,13 → 2,18 |
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.modeles.ImageCarnet; |
import org.tela_botanica.client.modeles.ListeImage; |
import com.google.gwt.user.client.Window; |
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; |
26,8 → 31,15 |
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.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 { |
38,6 → 50,9 |
private ColumnConfig numImage ; |
private ColumnConfig urlImage ; |
private ColumnConfig lieImage ; |
private ColumnConfig datImage ; |
private ColumnConfig appImage ; |
private ColumnModel modeleColonnes ; |
50,40 → 65,43 |
public ListeImageVue(ImageMediateur im) { |
super() ; |
this.iMediateur = im ; |
/*setAutoWidth(true); |
setAutoHeight(true);*/ |
numImage = new ColumnConfig("numéro d'image","num_image",150,true); |
numImage.setId("expCol"); |
urlImage = new ColumnConfig("Image","url_image",150,true,new Renderer() { |
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",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"); |
return "<div class=\"img-list\"> <img src=\""+ImgUrl+"\" title='example'> </div>"; |
String ImgNum = record.getAsString("num_image"); |
return "<div class=\"img-list\"> <img src=\""+ImgUrl+"\" title='"+ImgNum+"'> </div>"; |
} |
}); |
ColumnConfig[] cm = {numImage,urlImage}; |
ColumnConfig[] cm = {numImage,datImage,lieImage,appImage,urlImage}; |
modeleColonnes = new ColumnModel(cm); |
this.setColumnModel(modeleColonnes); |
this.setAutoExpandColumn("expCol"); |
this.setAutoScroll(true); |
this.setAutoWidth(true); |
this.setAutoHeight(true); |
FieldDef defNumImage = new StringFieldDef("num_image"); |
FieldDef defDatImage = new StringFieldDef("dat_image"); |
FieldDef defLieImage = new StringFieldDef("lie_image"); |
FieldDef defAppImage = new StringFieldDef("app_image"); |
FieldDef defUrlImage = new StringFieldDef("url_image"); |
FieldDef[] defTab = {defNumImage,defUrlImage}; |
FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImage}; |
RecordDef rd = new RecordDef(defTab) ; |
st = new Store(rd) ; |
this.setStore(st); |
this.getView().setAutoFill(true) ; |
ajouterListeners() ; |
131,18 → 149,36 |
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(); |
if(nouvelleDonnees instanceof ListeImage) |
{ |
ListeImage data = (ListeImage) nouvelleDonnees ; |
Object[][] photoData = new Object[data.size()][5]; |
for(int i = 0 ; i<data.size();i++) |
{ |
ImageCarnet im = (ImageCarnet) data.elementAt(i); |
photoData[i][0] = im.getOrdre() ; |
photoData[i][1] = im.getDate() ; |
photoData[i][2] = im.getIptcCity() ; |
photoData[i][3] = im.getMake()+" "+im.getModel() ; |
photoData[i][4] = im.getUrl() ; |
} |
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 defUrlImage = new StringFieldDef("url_image"); |
FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImage}; |
final MemoryProxy dataProxy = new MemoryProxy(photoData); |
final ArrayReader reader = new ArrayReader(new RecordDef(defTab)); |
final Store photoStore = new Store(dataProxy, reader); |
st = photoStore; |
this.reconfigure(st, this.getColumnModel()); |
photoStore.load(); |
} |
} |
/trunk/src/org/tela_botanica/client/vues/MenuImageVue.java |
---|
New file |
0,0 → 1,100 |
package org.tela_botanica.client.vues; |
import org.tela_botanica.client.image.ImageMediateur; |
import com.google.gwt.user.client.ui.MenuItem; |
import com.gwtext.client.core.EventObject; |
import com.gwtext.client.widgets.menu.BaseItem; |
import com.gwtext.client.widgets.menu.Item; |
import com.gwtext.client.widgets.menu.Menu; |
import com.gwtext.client.widgets.menu.event.MenuListener; |
public class MenuImageVue extends Menu { |
private ImageMediateur iMediateur ; |
private Item uploaderImage = null ; |
private Item supprimerImage = null ; |
public MenuImageVue(ImageMediateur im) |
{ |
super() ; |
iMediateur = im ; |
uploaderImage = new Item("Uploader des images") ; |
addItem(uploaderImage); |
//this.addItem(supprimerImage) ; |
ajouterListeners() ; |
} |
public void ajouterListeners() |
{ |
this.addListener(new MenuListener() { |
public void doBeforeHide(Menu menu) { |
// TODO Auto-generated method stub |
} |
public void doBeforeShow(Menu menu) { |
} |
public void onClick(Menu menu, String menuItemId, EventObject e) { |
// TODO Auto-generated method stub |
} |
public void onHide(Menu menu) { |
// TODO Auto-generated method stub |
} |
public void onItemClick(BaseItem item, EventObject e) { |
if(item.equals(uploaderImage)) |
{ |
getIMediateur().uploaderImage() ; |
hide() ; |
} |
} |
public void onMouseOut(Menu menu, BaseItem menuItem, EventObject e) { |
// TODO Auto-generated method stub |
} |
public void onMouseOver(Menu menu, BaseItem menuItem, EventObject e) { |
// TODO Auto-generated method stub |
} |
public void onShow(Menu menu) { |
} |
}) ; |
} |
public ImageMediateur getIMediateur() |
{ |
return iMediateur ; |
} |
} |
/trunk/src/org/tela_botanica/client/vues/ZoomImageVue.java |
---|
33,7 → 33,7 |
public void onBrowserEvent(Event event) { |
if (Event.ONDBLCLICK == DOM.eventGetType(event)) { |
getIMediateur().DoubleClicZoomImage(); |
getIMediateur().doubleClicZoomImage(); |
} |
} |
}; |
71,7 → 71,7 |
public void onClick(Widget sender) { |
getIMediateur().ClicBoutonZoomImage("prev"); |
getIMediateur().clicBoutonZoomImage("prev"); |
} |
}); |
81,7 → 81,7 |
public void onClick(Widget sender) { |
getIMediateur().ClicBoutonZoomImage("suiv"); |
getIMediateur().clicBoutonZoomImage("suiv"); |
} |
}); |
/trunk/src/org/tela_botanica/client/vues/GalerieImageVue.java |
---|
3,11 → 3,14 |
import org.tela_botanica.client.image.ImageMediateur; |
import org.tela_botanica.client.interfaces.Rafraichissable; |
import org.tela_botanica.client.modeles.ImageCarnet; |
import org.tela_botanica.client.modeles.ListeImage; |
import com.google.gwt.core.client.JavaScriptObject; |
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.XTemplate; |
import com.gwtext.client.data.ArrayReader; |
29,6 → 32,11 |
import com.gwtext.client.widgets.event.DataViewListener; |
import com.gwtext.client.widgets.event.DataViewListenerAdapter; |
/** |
* Galerie d'images miniatures |
* @author aurelien |
* |
*/ |
public class GalerieImageVue extends Panel implements Rafraichissable, Observable { |
// instance du médiateur |
82,7 → 90,7 |
public void onClick(DataView source, int index, Element node, |
EventObject e) { |
getIMediateur().ClicGalerieImage(index, node, e); |
getIMediateur().clicGalerieImage(index, node, e); |
} |
95,8 → 103,10 |
public void onContextMenu(DataView source, int index, Element node, |
EventObject e) { |
//TODO: appeler le mediateur |
e.stopEvent() ; |
getIMediateur().montrerContextMenu(e) ; |
} |
104,7 → 114,7 |
EventObject e) { |
//TODO: appeler le mediateur |
getIMediateur().ClicGalerieImage(index, node, e); |
getIMediateur().clicGalerieImage(index, node, e); |
} |
128,7 → 138,7 |
new String[]{ |
"<tpl for='.'>", |
"<div class='thumb-wrap' id='{num_image}'>", |
"<div class='thumb'><img src='{url_image}' title='{num_image}'></div>", |
"<div class='thumb'><img src='{url_image_S}' title='{num_image}'></div>", |
"<span>{nom}</span></div>", "</tpl>", |
"<div class='x-clear'></div>"}); |
template.compile(); |
144,6 → 154,7 |
dView.setTpl(template); |
// parametre d'affichage de la dataview |
this.setAutoScroll(true); |
dView.setAutoHeight(true); |
dView.setMultiSelect(true); |
dView.setOverCls("x-view-over"); |
153,7 → 164,9 |
// creation du store |
FieldDef defNumImage = new StringFieldDef("num_image"); |
FieldDef defUrlImage = new StringFieldDef("url_image"); |
FieldDef[] defTab = {defNumImage,defUrlImage}; |
FieldDef defUrlImageM = new StringFieldDef("url_image_M"); |
FieldDef defUrlImageS = new StringFieldDef("url_image_S"); |
FieldDef[] defTab = {defNumImage,defUrlImage,defUrlImageM,defUrlImageS}; |
RecordDef rd = new RecordDef(defTab) ; |
st = new Store(rd) ; |
dView.setStore(st); |
170,11 → 183,25 |
public void rafraichir(Object nouvelleDonnees) { |
Object[][] photoData = (Object[][])nouvelleDonnees ; |
if(nouvelleDonnees instanceof ListeImage) |
{ |
ListeImage data = (ListeImage) nouvelleDonnees ; |
Object[][] photoData = new Object[data.size()][4]; |
for(int i = 0 ; i<data.size();i++) |
{ |
ImageCarnet im = (ImageCarnet) data.elementAt(i); |
photoData[i][0] = im.getOrdre() ; |
photoData[i][1] = im.getUrl() ; |
photoData[i][2] = im.getSUrl() ; |
photoData[i][3] = im.getMUrl() ; |
} |
final MemoryProxy dataProxy = new MemoryProxy(photoData); |
final ArrayReader reader = new ArrayReader(new RecordDef( |
new FieldDef[]{new StringFieldDef("num_image"), |
new StringFieldDef("url_image")})); |
new StringFieldDef("url_image"), |
new StringFieldDef("url_image_S"), |
new StringFieldDef("url_image_M")})); |
final Store photoStore = new Store(dataProxy, reader); |
photoStore.load(); |
182,6 → 209,7 |
st = photoStore; |
dView.setStore(st); |
dView.refresh(); |
} |
} |