Subversion Repositories eFlore/Archives.cel-v2

Compare Revisions

Ignore whitespace Rev 47 → Rev 48

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