Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 48 → Rev 47

/trunk/src/org/tela_botanica/client/image/ImageModele.java
2,23 → 2,28
 
import java.util.HashMap;
import java.util.Iterator;
import java.util.Vector;
 
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.ImageAsynchroneDAO;
import org.tela_botanica.client.modeles.ImageCarnet;
import org.tela_botanica.client.modeles.ImageUploaderAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeImageCarnet;
import org.tela_botanica.client.modeles.ListeImageAsynchroneDAO;
import org.tela_botanica.client.modeles.ListeImageCarnet;
import org.tela_botanica.client.modeles.MotsClesAsynchroneDAO;
import org.tela_botanica.client.modeles.NombreImageAsynchroneDAO;
import org.tela_botanica.client.vues.BarreNotationVue;
 
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
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.Node;
import com.gwtext.client.data.NodeTraversalCallback;
import com.gwtext.client.data.RecordDef;
import com.gwtext.client.data.Store;
import com.gwtext.client.data.StringFieldDef;
86,7 → 91,6
if(!estInstancie)
{
// on en crée un nouveau
estInstancie = true ;
return new ImageModele(im);
}
else
125,13 → 129,14
// on rassemble les critères
String[][] criteres = {{"ci_ce_utilisateur", ""+getIMediateur().getIdentifiant()}, {motsClesFiltres[0][0], motsClesFiltres[0][1]}, {motsClesFiltres[1][0],motsClesFiltres[1][1] }} ;
// on les crée un DAO auquel on les transmet et qui demande le nombre d'images correspondantes (pour les pages)
NombreImageAsynchroneDAO niaDAO = new NombreImageAsynchroneDAO(this) ;
NombreImageAsynchroneDAO niaDAO = new NombreImageAsynchroneDAO() ;
niaDAO.setIModele(this) ;
niaDAO.obtenirNombreImages(this, criteres) ;
// ensuite on demande la page correspondante avec les mêmes critères
String[][] criteres2 = { {"ci_limite" ,""+taillePage },{"ci_numero_page",""+pageEncours}, {motsClesFiltres[0][0], motsClesFiltres[0][1]}, {motsClesFiltres[1][0],motsClesFiltres[1][1] }} ;
// et on crée un DAO auquel on les transmet et qui envoie une requete pour recevoir les images
ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO(this);
ListeImageAsynchroneDAO liaDAO = new ListeImageAsynchroneDAO();
liaDAO.ObtenirListeImages(this, criteres2);
}
141,7 → 146,8
*/
public void uploaderImages()
{
ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO(this) ;
ImageUploaderAsynchroneDAO IuADaO = new ImageUploaderAsynchroneDAO() ;
IuADaO.setIModele(this) ;
IuADaO.choisirMethodeUpload() ;
}
222,7 → 228,6
ic.miseAJourInfoGenerales(commentaires, date, note) ;
mettreAjourBaseDeDonneesImageCarnet(ic) ;
}
}
/**
241,7 → 246,8
*/
public void mettreAJourBaseDeDonneesListeImageCarnet()
{
ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO(this);
ListeImageAsynchroneDAO liDaO = new ListeImageAsynchroneDAO();
liDaO.setIModele(this);
liDaO.SynchroniserBaseDeDonnees(cacheImage);
}
253,7 → 259,7
*/
public void mettreAjourBaseDeDonneesImageCarnet(ImageCarnet ic)
{
ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO(this);
ImageAsynchroneDAO iaDaO = new ImageAsynchroneDAO();
iaDaO.SynchroniserBaseDeDonnees(ic) ;
}
 
265,7 → 271,8
public void supprimerImages(String[] ids)
{
String rids[] = new String[ids.length] ;
ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO(this) ;
ListeImageAsynchroneDAO liDao = new ListeImageAsynchroneDAO() ;
liDao.setIModele(this);
for (int i = 0; i < ids.length; i++)
{
292,7 → 299,7
if(nouvelleDonnees instanceof ListeImageCarnet)
{
ListeImageCarnet data = (ListeImageCarnet) nouvelleDonnees ;
Object[][] photoData = new Object[data.size()][8];
Object[][] photoData = new Object[data.size()][7];
int i = 0 ;
if(data.size() == 0)
311,7 → 318,6
photoData[i][4] = im.getSUrl() ;
photoData[i][5] = im.getMUrl() ;
photoData[i][6] = im.getLUrl() ;
photoData[i][7] = im.getNote() ;
i++ ;
}
324,8 → 330,7
FieldDef defUrlImageS = new StringFieldDef("url_image_S");
FieldDef defUrlImageM = new StringFieldDef("url_image_M");
FieldDef defUrlImage = new StringFieldDef("url_image");
FieldDef defNoteImage = new IntegerFieldDef("note_image") ;
FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage,defNoteImage};
FieldDef[] defTab = {defNumImage,defDatImage,defLieImage,defAppImage,defUrlImageS,defUrlImageM,defUrlImage};
RecordDef rd = new RecordDef(defTab) ;
final MemoryProxy dataProxy = new MemoryProxy(photoData);
458,7 → 463,7
ImageCarnet ic = (ImageCarnet)cacheImage.get(ids[i]) ;
ic.mettreAjourMotsCles(motsClesEnCours) ;
ImageAsynchroneDAO imgDao = new ImageAsynchroneDAO(this) ;
ImageAsynchroneDAO imgDao = new ImageAsynchroneDAO() ;
imgDao.SynchroniserMotsClesImageBaseDeDonnees(ic) ;
}
}
472,7 → 477,9
*/
public void initialiserArbreMotsCles()
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this) ;
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIModele(this) ;
MCDao.obtenirListeMotsCles(this) ;
}
493,7 → 500,8
*/
public void ajouterMotCleDansArbre(TreeNode n, com.gwtext.client.data.Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this) ;
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIModele(this) ;
String[] usObj = (String[])n.getUserObject() ;
String motCle = usObj[0] ;
525,7 → 533,8
public void supprimerMotCleDansArbre(TreeNode n, Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this) ;
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIModele(this) ;
String[] usObj = (String[])n.getUserObject() ;
String motCle = usObj[0] ;
546,7 → 555,8
public void modifierMotCleDansArbre(TreeNode n, Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this) ;
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIModele(this) ;
String[] usObj = (String[])n.getUserObject() ;
String motCle = usObj[0] ;
578,7 → 588,8
*/
public void deplacerMotCleDansArbre(TreeNode n, Tree arbreMC)
{
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO(this) ;
MotsClesAsynchroneDAO MCDao = new MotsClesAsynchroneDAO() ;
MCDao.setIModele(this) ;
String[] usObj = (String[])n.getUserObject() ;
String motCle = usObj[0] ;
665,7 → 676,6
*/
public void requeteTerminee()
{
getIMediateur().demasquerChargement() ;
getIMediateur().rafraichirToutesVues() ;
}
 
/trunk/src/org/tela_botanica/client/image/ImageMediateur.java
1,14 → 1,14
package org.tela_botanica.client.image;
 
import org.tela_botanica.client.interfaces.IdVue;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.interfaces.VueListable;
import org.tela_botanica.client.vues.ArbreMotsClesFiltreVue;
import org.tela_botanica.client.vues.ArbreMotsClesVue;
import org.tela_botanica.client.vues.BarreNotationVue;
import org.tela_botanica.client.vues.BarreOutilsVue;
import org.tela_botanica.client.vues.BarreRechercheFiltreVue;
import org.tela_botanica.client.vues.GalerieImageVue;
import org.tela_botanica.client.vues.ListeImageVue;
import org.tela_botanica.client.vues.MenuFiltreVue;
import org.tela_botanica.client.vues.MenuImageVue;
import org.tela_botanica.client.vues.PanneauMetadonneesVue;
import org.tela_botanica.client.vues.ZoomImageVue;
55,7 → 55,6
*/
private ImageModele iModele = null ;
private String identifiant = "0" ;
 
/**
* panneau principal des images (onglet "images")
126,7 → 125,7
* Filtre pour les commentaires
*/
private BarreRechercheFiltreVue filtreCommentaires = null ;
 
/**
* constructeur privé (on accède a la classe par la méthode getInstance
*/
142,8 → 141,6
final BorderLayoutData regionEst = new BorderLayoutData(
RegionPosition.EAST);
regionEst.setSplit(true);
afficherMenuId() ;
 
// on crée un modèle
238,7 → 235,6
else
{
return null ;
}
}
248,19 → 244,8
*/
public String getIdentifiant()
{
return identifiant ;
return "0" ;
}
public void setIdentifiant(String id)
{
identifiant = id ;
}
public void changerUtilisateur()
{
getIModele().initialiserArbreMotsCles() ;
obtenirPhotoGalerie(getGalerieImage()) ;
}
 
/**
* Accesseur pour le modèle associé au médiateur
331,7 → 316,7
}
 
/**
* Accesseur pour le menu image
* Accesseur pour le menu
* @return the menuImageVue
*/
public MenuImageVue getMenuImageVue() {
537,7 → 522,6
String ids[] = getVueSelectionnee().getIdSelectionnees() ;
getIModele().mettreAJourCacheImage(commentaires, date, note, ids) ;
getListeImage().mettreAjourInfos(commentaires, date, note) ;
}
/**
871,7 → 855,6
mn.addListener(new MenuListenerAdapter() {
public void onItemClick(BaseItem item, EventObject e)
{
if(item.equals(suppN))
1042,12 → 1025,6
}
public void afficherMenuId()
{
IdVue i = new IdVue(this) ;
i.show() ;
}
/**
* C'est dans cette fonction que doivent être renvoyé les valeurs des filtres
* sous forme de tableau [nom, valeur]
/trunk/src/org/tela_botanica/client/vues/MenuFiltreVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/MenuIdVue.java
File deleted
/trunk/src/org/tela_botanica/client/vues/ListeImageVue.java
192,7 → 192,7
htmlImage += "<div class=\"img-note centered-list\">" ;
for(int i = 0 ; i <= noteImg ; i++)
{
htmlImage += "<img src=\"etoile_petite.png\">" ;
htmlImage += "<img src=\"etoile_notee.jpg\">" ;
}
htmlImage += "</div>" ;
}
/trunk/src/org/tela_botanica/client/vues/ArbreMotsClesVue.java
109,8 → 109,6
String[] usObject = {"Mots clés" , "racine" } ;
root.setUserObject(usObject) ;
arbreMotsCles.setAutoScroll(true) ;
arbreMotsCles.setRootNode(root) ;
arbreMotsCles.setRootVisible(false) ;
arbreMotsCles.getRootNode().setIcon("tela.png") ;
232,8 → 230,29
{
// on notifie le médiateur et on lui passe l'arbre
GetIMediateur().deplacerMotCleDansArbre(node, getArbreMotsCles().getTree()) ;
}
}
 
// gestion du changement de valeur dans la checkbox
/*public void onCheckChange(TreeNode node, boolean checked) {
// si on a coché un noeud
if(checked)
{
// on remonte pour cocher tous les parents du noeud
node.bubble(new NodeTraversalCallback() {
public boolean execute(Node node)
{
TreeNode tn = getArbreMotsCles().getNodeById(node.getId()) ;
tn.getUI().toggleCheck(true) ;
return true ;
}
}) ;
}
}*/
}) ;
// gestion de la validation
311,30 → 330,27
*/
public void ajouterNoeud(TreeNode parent)
{
// on met l'ajout du noeud à vrai
ajoutNoeud = true ;
// on crée un nouveau noeud vide
TreeNode nd = new TreeNode("");
nd.setIcon("tela.png") ;
nd.setChecked(true);
// on associe un objet au noeud qui contient des infos
String[] usObject = new String[2] ;
// l'objet contient le nom du noeud
usObject[0] = "" ;
// l'identifiant d'un noeud c'est son hashcode
usObject[1] = Integer.toString(nd.hashCode()) ;
// l'objet associé au noeud contient aussi son identifiant
nd.setId(usObject[1]) ;
nd.setUserObject(usObject) ;
// on met l'ajout du noeud à vrai
ajoutNoeud = true ;
// on crée un nouveau noeud vide
TreeNode nd = new TreeNode("");
nd.setIcon("tela.png") ;
nd.setChecked(true);
// on associe un objet au noeud qui contient des infos
String[] usObject = new String[2] ;
// l'objet contient le nom du noeud
usObject[0] = "" ;
usObject[1] = Integer.toString(nd.hashCode()) ;
nd.setId(usObject[1]) ;
nd.setUserObject(usObject) ;
// l'identifiant d'un noeud c'est son hashcode
// l'objet associé au noeud contient aussi son identifiant
// on le concatène au parent et on étend ses enfants
parent.appendChild(nd);
parent.expand();
// enfin on place le curseur et on fait apparaitre le champ d'édition pour que l'utilisateur nomme son mot clé
te.startEdit(nd);
 
// on le concatène au parent et on étend ses enfants
parent.appendChild(nd);
parent.expand();
// enfin on place le curseur et on fait apparaitre le champ d'édition pour que l'utilisateur nomme son mot clé
te.startEdit(nd);
}
/**
404,11 → 420,6
Tree nouvelArbre = (Tree)nouvelleDonnees ;
// on prend sa racine et on l'attache à l'arbre des mots clés
Node[] rootChild = getArbreMotsCles().getRootNode().getChildNodes() ;
for (int i = 0; i < rootChild.length; i++) {
rootChild[i].remove() ;
}
getArbreMotsCles().getRootNode().appendChild(nouvelArbre.getRootNode()) ;
getArbreMotsCles().expandAll() ;
423,6 → 434,7
if(motsCleInitialises == false && motsClesEnAttente != null)
{
// on les coche
// TODO: corriger le bug qui fait que ça ne marche pas la premiere fois !!!!
cocherMotsCles(motsClesEnAttente) ;
motsCleInitialises = true ;
}
/trunk/src/org/tela_botanica/client/vues/BarreNotationVue.java
9,52 → 9,20
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.widgets.Panel;
 
/**
* Une barre de notation avec des étoiles, tout ce qu'il ya de plus classique,
* utilisant Ajax (et pas CSS)
* @author aurelien
*
*/
public class BarreNotationVue extends Panel implements Rafraichissable {
 
/**
* Le médiateur associé
*/
private ImageMediateur iMediateur = null ;
/**
* La note actuellement affichée
*/
private int noteEnCours = 0 ;
/**
* La note maximum
*/
private int noteMax = 0 ;
/**
* La note au dessus de laquelle se trouve le curseur (pour gérer le rollover)
*/
private int noteCurseur = 0 ;
/**
* Booléen indiquant si une note est affectée à la barre en ce moment
*/
private boolean estNote = false ;
/**
* Tablmeau d'images contenant les étoiles affichées
*/
private Image[] etoiles = null ;
/**
* Constructeur sans argument (privé car ne doit pas être utilisé)
*/
private BarreNotationVue()
{
super() ;
}
/**
* Constructeur avec arguments
* @param im le médiateur à associer à la vue
* @param noteMax la note maximale
*/
public BarreNotationVue(ImageMediateur im, int noteMax)
{
iMediateur = im ;
76,27 → 44,24
etoiles[i].addMouseListener(new MouseListenerAdapter() {
 
 
// si la souris passe sur la barre
public void onMouseEnter(Widget sender) {
Image enCours = (Image)sender ;
int nEnCours = 0 ;
// on met en surbrillance toutes les étoiles allant de la première jusqu'à
// celle sous le curseur
for(int i = 0 ; etoiles[i] != enCours ; i++)
{
etoiles[i].setUrl("etoile_curseur.png") ;
etoiles[i].setUrl("etoile_curseur.jpg") ;
nEnCours = i ;
}
enCours.setUrl("etoile_curseur.png") ;
enCours.setUrl("etoile_curseur.jpg") ;
}
 
// si la souris sort de la barre
public void onMouseLeave(Widget sender) {
// on affiche la véritable note
afficherNote() ;
}
 
104,17 → 69,16
}) ;
etoiles[i].addClickListener(new ClickListener() {
// si on clique sur une étoiles
 
public void onClick(Widget sender) {
int i = 0 ;
// on récupère le numéro de l'étoile sur laquelle on a cliqué
while(etoiles[i] != (Image)sender)
{
i++ ;
}
// et on affecte la note
noter(i) ;
}
125,33 → 89,24
}
/**
* Fonction héritée de l'interface rafraichissable
*/
public void rafraichir(Object nouvelleDonnees,
boolean repandreRaffraichissement) {
// si on recoit un tableau de string
if(nouvelleDonnees instanceof String[])
{
// on récupère le premier élément (un entier, qui contient la note)
{
estNote = false ;
String[] note = (String[])nouvelleDonnees ;
int noteInt = Integer.parseInt(note[0]) ;
// si l'entier est une note valide
if(noteInt != -1 && noteInt >= 0)
if(noteInt != -1)
{
noter(noteInt) ;
}
// sinon si l'entier vaut -1
else
{
// alors on note avec 0
// et on met le booleen de notation a false (qui signifie que l'image n'est pas encore notée)
estNote = false ;
noteEnCours = 0 ;
// et demande l'affichage
afficherNote() ;
}
159,32 → 114,18
}
/**
* Affecte une note à la barre et rafraichit l'affichage
* @param note la nouvelle note
*/
public void noter(int note)
{
// on affecte la note
noteEnCours = note ;
// on met le boolean de notation à true (l'image est notée)
estNote = true ;
// et on demande l'affichage
afficherNote() ;
}
/**
* Setteur pour la note maximale
* @param nMax la nouvelle note maximale
*/
public void setNoteMax(int nMax)
{
// on affecte la note
noteMax = nMax ;
// on prépare le tableau d'image
etoiles = new Image[noteMax] ;
// qu'on remplit par defaut avec des images d'étoiles vides
for(int i = 0 ; i < noteMax ; i++)
{
etoiles[i] = new Image("etoile_vide.jpg") ;
192,32 → 133,25
}
}
/**
* Affiche la note d'une image sous la forme d'étoiles
*/
public void afficherNote()
{
// si l'image est notée
if(estNote)
{
// on affiche autant d'étoiles que le chiffre de la note
for(int i = 0 ; i <= noteEnCours ; i++)
{
etoiles[i].setUrl("etoile_notee.png") ;
etoiles[i].setUrl("etoile_notee.jpg") ;
}
// et si elle est inférieure à la note maximale, on remplit le reste par des étoiles vides
for (int j = noteEnCours + 1 ; j < noteMax ; j++)
{
etoiles[j].setUrl("etoile_vide.png") ;
etoiles[j].setUrl("etoile_vide.jpg") ;
}
}
// sinon
else
{
// on remplit toute la barre avec des étoiles vides
for(int i = 0 ; i < noteMax ; i++)
{
etoiles[i].setUrl("etoile_vide.png") ;
etoiles[i].setUrl("etoile_vide.jpg") ;
}
}
224,10 → 158,6
}
/**
* Accesseur pour la note en cours sous forme de string
* @return
*/
public String getNote()
{
return ""+noteEnCours ;
/trunk/src/org/tela_botanica/client/vues/MenuImageVue.java
28,8 → 28,18
* Item pour la suppression
*/
private Item supprimerImage = null ;
 
/**
* Item pour la recherche par mots clés
*/
private Item chercherImage = null ;
/**
* Item pour la recherche sur les commentaires
*/
private Item chercherCommentaire = null ;
/**
* Constructeur sans argument (privé car ne doit être utilisé)
*/
private MenuImageVue()
50,8 → 60,13
// on construit le menu
uploaderImage = new Item("Uploader des images") ;
supprimerImage = new Item("Supprimer les images selectionnées") ;
chercherImage = new Item("Filtrer par les mots clés") ;
chercherCommentaire = new Item("Filtrer par les commentaires") ;
addItem(uploaderImage);
addItem(supprimerImage) ;
addSeparator() ;
addItem(chercherImage) ;
addItem(chercherCommentaire) ;
// on ajoute les listeners
ajouterListeners() ;
82,6 → 97,20
getIMediateur().supprimerImages() ;
}
// si c'est la recherche par mots clé
if(item.equals(chercherImage))
{
// on notifie le médiateur
getIMediateur().afficherFiltreMotsCles() ;
}
// si c'est la recherche par commentaires
if(item.equals(chercherCommentaire))
{
// on notifie le médiateur
getIMediateur().afficherFiltreCommentaires() ;
}
// enfin, on cache le menu
hide() ;
/trunk/src/org/tela_botanica/client/vues/ZoomImageVue.java
19,6 → 19,7
 
/**
* Panneau d'affichage d'une image avec des boutons précdents et suivant
* TODO: assurer le redimensionnement automatique de l'image et la centrer
* @author aurelien
*
*/
/trunk/src/org/tela_botanica/client/vues/PanneauMetadonneesVue.java
126,7 → 126,7
Label labelComm = new Label("Commentaires :") ;
labelComm.setHeight("20px") ;
commentaireGeneral = new TextArea() ;
commentaireGeneral.setWidth("90%") ;
commentaireGeneral.setAutoWidth(true) ;
Label labelDate = new Label("Date :") ;
Label labelNote = new Label("Note :") ;
322,12 → 322,12
for(int i = 0; i < maxLength ; i++)
{
if(i < exif.length && !exif[i][0].equals("null"))
if(i < exif.length)
{
exifSource[i] = new NameValuePair(exif[i][0],exif[i][1]) ;
}
if(i < iptc.length && !iptc[i][0].equals("null"))
if(i < iptc.length)
{
iptcSource[i] = new NameValuePair(iptc[i][0],iptc[i][1]) ;
}
/trunk/src/org/tela_botanica/client/vues/BarreOutilsVue.java
19,15 → 19,6
*/
ToolbarMenuButton images = null ;
/**
* Un bouton qui sert à déployer le menu
*/
ToolbarMenuButton filtres = null ;
/**
* Un bouton qui sert à déployer le menu
*/
ToolbarMenuButton utilisateur = null ;
/**
* Le médiateur associé à la toolbar
*/
ImageMediateur iMediateur = null ;
35,16 → 26,6
* Le menu de gestion des images
*/
MenuImageVue imageMenu = null ;
/**
* Le menu de gestion des filtres
*/
MenuFiltreVue filtreMenu = null ;
/**
* Le menu de gestion utilisateur
*/
MenuIdVue idMenu = null ;
 
/**
* Constructeur sans argument (ne doit pas être utilisé donc privé)
56,7 → 37,7
/**
* Constructeur avec paramètres
* @param im le médiateur à associer à la vue
* @param im
*/
public BarreOutilsVue(ImageMediateur im) {
65,15 → 46,9
iMediateur = im ;
imageMenu = new MenuImageVue(im) ;
filtreMenu = new MenuFiltreVue(im) ;
idMenu = new MenuIdVue(im) ;
images = new ToolbarMenuButton("Fichiers",imageMenu) ;
filtres = new ToolbarMenuButton("Filtres", filtreMenu) ;
utilisateur = new ToolbarMenuButton("Utilisateur",idMenu) ;
this.addButton(images) ;
this.addButton(filtres) ;
this.addButton(utilisateur) ;
}
 
/trunk/src/org/tela_botanica/client/interfaces/IdVue.java
File deleted
/trunk/src/org/tela_botanica/client/modeles/ImageUploaderAsynchroneDAO.java
1,13 → 1,20
package org.tela_botanica.client.modeles;
 
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.iMediateur;
 
import com.google.gwt.user.client.Timer;
import com.google.gwt.core.client.JavaScriptObject;
import com.gwtext.client.core.UrlParam;
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.Window;
import com.gwtext.client.widgets.event.WindowListener;
import com.gwtext.client.widgets.event.WindowListenerAdapter;
import com.gwtextux.client.widgets.upload.UploadDialog;
import com.gwtextux.client.widgets.upload.UploadDialogListener;
import com.gwtextux.client.widgets.upload.UploadDialogListenerAdapter;
 
 
24,11 → 31,6
*/
private static ImageModele iModele ;
public ImageUploaderAsynchroneDAO(ImageModele im)
{
iModele = im ;
}
/**
* Setteur pour le modele
* @param im le modèle à associer au DAO
50,10 → 52,10
UrlParam id = new UrlParam("identifiant",iModele.getIdentifiant()) ;
UrlParam[] params = {id} ;
up.setBaseParams(params);
up.setModal(true) ;
up.addListener(new UploadDialogListenerAdapter() {
 
 
public void onClose(Panel panel) {
iModele.requeteTerminee() ;
61,7 → 63,8
});
up.show();
}
/**
70,12 → 73,9
*/
private static void appelerUploadMultiple()
{
final Window nPan = new Window("Upload multiple");
nPan.setWidth(640) ;
 
final String warning = "<p class=\"warning_upload\"> A la fin de l'envoi, veuillez fermer la fenêtre pour accéder aux images. </p>" ;
final String applet = "<applet code=\"wjhk.jupload2.JUploadApplet\" archive=\"wjhk.jupload.jar\" alt=\"\" mayscript=\"\" height=\"350\" width=\"625\">";
final String paramPostTarget = "<param name=\"postURL\" value=\"jrest/InventoryImage/\">";
final String paramUploadPolicy = "<param name=\"uploadPolicy\" value=\"PictureUploadPolicy\">";
107,14 → 107,11
+"<input type=\"hidden\" name=\"identifiant\" value=\""+iModele.getIdentifiant()+"\">"
+"</form>" ;
 
nPan.setHtml(warning+appelApplet+htmlForm);
nPan.setHtml(appelApplet+htmlForm);
nPan.setModal(true) ;
nPan.addListener(new WindowListenerAdapter() {
 
 
public void onClose(Panel panel) {
iModele.requeteTerminee() ;
/trunk/src/org/tela_botanica/client/modeles/ImageCarnet.java
50,7 → 50,6
/**
* Surcharge de toString qui affiche toutes les propriétés de l'image
*/
public String toString()
{
String valeur = " ";
243,7 → 242,7
*/
public String[][] getMetadonnesIptc() {
String[][] metaIptc = new String[14][2] ;
String[][] metaIptc = new String[12][2] ;
int elem = 0 ;
for (Iterator it = this.keySet().iterator(); it.hasNext();)
279,7 → 278,7
* @return les métadonnées Exif
*/
public String[][] getMetadonnesExif() {
String[][] metaExif = new String[31][2] ;
int elem = 0 ;
/trunk/src/org/tela_botanica/client/modeles/ImageAsynchroneDAO.java
3,11 → 3,10
import java.util.Iterator;
 
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.image.ImageModele;
 
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
import com.gwtext.client.widgets.Window;
import com.google.gwt.user.client.Window;
 
/**
* DAO d'accès à une image, n'est utilisé que pour l'écriture et pas pour la lecture des images
17,18 → 16,6
*/
public class ImageAsynchroneDAO {
 
ImageModele iModele = null ;
public ImageAsynchroneDAO(ImageModele im)
{
iModele = im ;
}
public void setIModele(ImageModele im)
{
iModele = im ;
}
/**
* Met à jour la base de données avec toutes les données d'une image
* @param ic l'image à mettre à jour
48,17 → 35,10
}
 
// et on envoie une requête asynchrone
HTTPRequest.asyncPost("jrest/inventoryImage/"+iModele.getIdentifiant()+"/", postData, new ResponseTextHandler() {
HTTPRequest.asyncPost("jrest/inventoryImage/0/", postData, new ResponseTextHandler() {
public void onCompletion(String responseText) {
if(responseText.equals("OK"))
{
return ;
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
}
//TODO: ajouter une vérification de la mise à jour
}
79,17 → 59,10
postData += "&ci_id_image="+id+"&ci_meta_mots_cles="+motsCles ;
 
// on envoie une requête asynchrone
HTTPRequest.asyncPost("jrest/inventoryImage/"+iModele.getIdentifiant()+"/", postData, new ResponseTextHandler() {
HTTPRequest.asyncPost("jrest/inventoryImage/0/", postData, new ResponseTextHandler() {
public void onCompletion(String responseText) {
if(responseText.equals("OK"))
{
return ;
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des mots clés") ;
}
//TODO: ajouter une vérification de la mise à jour
}
107,17 → 80,10
postData += "&action=DELETE" ;
// on envoie un post avec l'id de l'image à supprimer
HTTPRequest.asyncPost("jrest/inventoryImage/"+iModele.getIdentifiant()+"/"+ic.getId(), postData, new ResponseTextHandler() {
HTTPRequest.asyncPost("jrest/inventoryImage/0/"+ic.getId(), postData, new ResponseTextHandler() {
public void onCompletion(String responseText) {
if(responseText.equals("OK"))
{
return ;
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la suppression des images ") ;
}
//TODO: ajouter une vérification de la mise à jour
}
}) ;
/trunk/src/org/tela_botanica/client/modeles/ListeImageCarnet.java
1,6 → 1,7
package org.tela_botanica.client.modeles;
 
import java.util.HashMap;
import java.util.Vector;
 
/**
* table de hachage composée d'ImageCarnet, renvoyé par les objets de type DAO
/trunk/src/org/tela_botanica/client/modeles/ListeImageAsynchroneDAO.java
2,6 → 2,7
 
import java.util.Iterator;
 
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.image.ImageModele;
import org.tela_botanica.client.interfaces.Rafraichissable;
 
8,9 → 9,17
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;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
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.RecordDef;
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
25,11 → 34,6
*/
ImageModele iModele = null ;
public ListeImageAsynchroneDAO(ImageModele im)
{
iModele = im ;
}
/**
* Setteur pour le modèle
* @param im le modèle à associer
67,7 → 71,7
}
// on envoie le get asynchrone
HTTPRequest.asyncGet("jrest/InventoryImageList/"+iModele.getIdentifiant()+"/"+requete, new ResponseTextHandler() {
HTTPRequest.asyncGet("jrest/InventoryImageList/0/"+requete, new ResponseTextHandler() {
// si tout se passe bien on reçoit une réponse JSON
public void onCompletion(String responseText) {
144,17 → 148,10
}
// on fait un post asynchrone et on les envoie à jrest
HTTPRequest.asyncPost("jrest/inventoryImage/"+iModele.getIdentifiant()+"/", postData, new ResponseTextHandler() {
HTTPRequest.asyncPost("jrest/inventoryImage/0/", postData, new ResponseTextHandler() {
public void onCompletion(String responseText) {
if(responseText.equals("OK"))
{
return ;
}
else
{
com.google.gwt.user.client.Window.alert("Problème lors de la mise à jour des données") ;
}
//TODO: vérifier mieux le succès del a requête
}
/trunk/src/org/tela_botanica/client/modeles/NombreImageAsynchroneDAO.java
1,13 → 1,18
package org.tela_botanica.client.modeles;
 
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.image.ImageModele;
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;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.Image;
 
/**
* DAO qui renvoie le nombre d'image associées à différents critères donnés (utile pour la pagination)
21,11 → 26,6
*/
private ImageModele iModele = null ;
public NombreImageAsynchroneDAO(ImageModele im)
{
iModele = im ;
}
/**
* Setteur pour le modèle
* @param im le modèlme à associer
77,7 → 77,7
// qui contient une valeur : le nombre d'images correspondant au critères
JSONValue res = responseValue.isArray().get(0) ;
JSONString reponseNombre = res.isString() ;
int maxImages = Integer.parseInt(reponseNombre.stringValue()) ;
int maxImages = (int)Integer.parseInt(reponseNombre.stringValue()) ;
int[] nbImages = {maxImages} ;
// on le met dans un tableau d'entiers qu'on tranmset au demandeur de la mise à jour
r.rafraichir(nbImages, true) ;
/trunk/src/org/tela_botanica/client/modeles/MotsClesAsynchroneDAO.java
1,9 → 1,9
package org.tela_botanica.client.modeles;
 
 
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.image.ImageModele;
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.JSONValue;
23,11 → 23,6
*/
private ImageModele iModele = null ;
public MotsClesAsynchroneDAO(ImageModele im)
{
iModele = im ;
}
/**
* Setteur pour le modèle
* @param im le modèle à associer