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