Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 47 → Rev 48

/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_notee.jpg\">" ;
htmlImage += "<img src=\"etoile_petite.png\">" ;
}
htmlImage += "</div>" ;
}
/trunk/src/org/tela_botanica/client/vues/ArbreMotsClesVue.java
109,6 → 109,8
String[] usObject = {"Mots clés" , "racine" } ;
root.setUserObject(usObject) ;
arbreMotsCles.setAutoScroll(true) ;
arbreMotsCles.setRootNode(root) ;
arbreMotsCles.setRootVisible(false) ;
arbreMotsCles.getRootNode().setIcon("tela.png") ;
230,29 → 232,8
{
// 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
330,27 → 311,30
*/
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 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 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);
 
}
/**
420,6 → 404,11
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() ;
434,7 → 423,6
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,20 → 9,52
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 ;
44,24 → 76,27
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.jpg") ;
etoiles[i].setUrl("etoile_curseur.png") ;
nEnCours = i ;
}
enCours.setUrl("etoile_curseur.jpg") ;
enCours.setUrl("etoile_curseur.png") ;
}
 
// si la souris sort de la barre
public void onMouseLeave(Widget sender) {
// on affiche la véritable note
afficherNote() ;
}
 
69,16 → 104,17
}) ;
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) ;
}
89,24 → 125,33
}
/**
* 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[])
{
estNote = false ;
{
// on récupère le premier élément (un entier, qui contient la note)
String[] note = (String[])nouvelleDonnees ;
int noteInt = Integer.parseInt(note[0]) ;
if(noteInt != -1)
// si l'entier est une note valide
if(noteInt != -1 && noteInt >= 0)
{
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() ;
}
114,18 → 159,32
}
/**
* 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") ;
133,25 → 192,32
}
}
/**
* 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.jpg") ;
etoiles[i].setUrl("etoile_notee.png") ;
}
// 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.jpg") ;
etoiles[j].setUrl("etoile_vide.png") ;
}
}
// sinon
else
{
// on remplit toute la barre avec des étoiles vides
for(int i = 0 ; i < noteMax ; i++)
{
etoiles[i].setUrl("etoile_vide.jpg") ;
etoiles[i].setUrl("etoile_vide.png") ;
}
}
158,6 → 224,10
}
/**
* 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,18 → 28,8
* 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()
60,13 → 50,8
// 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() ;
97,20 → 82,6
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,7 → 19,6
 
/**
* 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/MenuFiltreVue.java
New file
0,0 → 1,98
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.image.ImageMediateur;
 
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.MenuListenerAdapter;
 
public class MenuFiltreVue extends Menu {
 
/**
* Le médiateur associé à la vue
*/
private ImageMediateur iMediateur ;
/**
* 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 MenuFiltreVue()
{
super();
}
/**
* Constructeur avec paramètre
* @param im le médiateur à associer
*/
public MenuFiltreVue(ImageMediateur im)
{
super() ;
iMediateur = im ;
// on construit le menu
chercherImage = new Item("Filtrer par les mots clés") ;
chercherCommentaire = new Item("Filtrer par les commentaires") ;
addItem(chercherImage) ;
addItem(chercherCommentaire) ;
// on ajoute les listeners
ajouterListeners() ;
}
/**
* Ajoute les listeners pour la gestions des évènements
*/
private void ajouterListeners()
{
this.addListener(new MenuListenerAdapter() {
 
// gestion du clic sur un item
public void onItemClick(BaseItem item, EventObject e) {
// 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() ;
}
}) ;
}
/**
* Accesseur pour le médiateur
* @return le médiateur associé à la vue
*/
public ImageMediateur getIMediateur()
{
return iMediateur ;
}
}
/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.setAutoWidth(true) ;
commentaireGeneral.setWidth("90%") ;
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)
if(i < exif.length && !exif[i][0].equals("null"))
{
exifSource[i] = new NameValuePair(exif[i][0],exif[i][1]) ;
}
if(i < iptc.length)
if(i < iptc.length && !iptc[i][0].equals("null"))
{
iptcSource[i] = new NameValuePair(iptc[i][0],iptc[i][1]) ;
}
/trunk/src/org/tela_botanica/client/vues/BarreOutilsVue.java
19,6 → 19,15
*/
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 ;
26,6 → 35,16
* 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é)
37,7 → 56,7
/**
* Constructeur avec paramètres
* @param im
* @param im le médiateur à associer à la vue
*/
public BarreOutilsVue(ImageMediateur im) {
46,9 → 65,15
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/vues/MenuIdVue.java
New file
0,0 → 1,85
package org.tela_botanica.client.vues;
 
import org.tela_botanica.client.image.ImageMediateur;
 
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.MenuListenerAdapter;
 
public class MenuIdVue extends Menu {
/**
* Le médiateur associé à la vue
*/
private ImageMediateur iMediateur ;
/**
* Item pour le changement d'utilisateur
*/
private Item changerId = null ;
/**
* Constructeur sans argument (privé car ne doit être utilisé)
*/
private MenuIdVue()
{
super();
}
/**
* Constructeur avec paramètre
* @param im le médiateur à associer
*/
public MenuIdVue(ImageMediateur im)
{
super() ;
iMediateur = im ;
// on construit le menu
changerId = new Item("Changer d'utilisateur") ;
addItem(changerId) ;
// on ajoute les listeners
ajouterListeners() ;
}
/**
* Ajoute les listeners pour la gestions des évènements
*/
private void ajouterListeners()
{
this.addListener(new MenuListenerAdapter() {
 
// gestion du clic sur un item
public void onItemClick(BaseItem item, EventObject e) {
// si c'est la recherche par commentaires
if(item.equals(changerId))
{
// on notifie le médiateur
getIMediateur().afficherMenuId() ;
}
// enfin, on cache le menu
hide() ;
}
}) ;
}
/**
* Accesseur pour le médiateur
* @return le médiateur associé à la vue
*/
public ImageMediateur getIMediateur()
{
return iMediateur ;
}
 
}