/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 |