Subversion Repositories eFlore/Archives.cel-v2

Rev

Rev 45 | Rev 47 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues;

import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;

import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.MouseListener;
import com.google.gwt.user.client.ui.MouseListenerAdapter;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Panel;

public class BarreNotationVue extends Panel implements Rafraichissable {

        private ImageMediateur iMediateur = null ;
        private int noteEnCours = 0 ;
        private int noteMax = 0 ;
        private int noteCurseur = 0 ;
        private boolean estNote = false ;
        private Image[] etoiles = null ;
        
        private BarreNotationVue()
        {
                super() ;
        }
        
        public BarreNotationVue(ImageMediateur im, int noteMax)
        {
                iMediateur = im ;
                setNoteMax(noteMax) ;
                this.setSize(200, 100) ;
                this.setBodyBorder(false) ;
                this.setBorder(false) ;
                
                ajouterListeners() ;
                
        }
        
        public void ajouterListeners()
        {
                for (int i = 0; i < etoiles.length; i++) {
                        
                        noteCurseur = i ;
                        
                        etoiles[i].addMouseListener(new MouseListenerAdapter() {


                                public void onMouseEnter(Widget sender) {
                                        
                                        Image enCours = (Image)sender ;
                                        int nEnCours = 0 ;
                                        
                                        for(int i = 0 ; etoiles[i] != enCours ; i++)
                                        {
                                                etoiles[i].setUrl("etoile_curseur.jpg") ;
                                                nEnCours = i ;
                                        }
                                                enCours.setUrl("etoile_curseur.jpg") ;
                                        
                                }

                                public void onMouseLeave(Widget sender) {
                                
                                        afficherNote() ;
                                }

                                
                        }) ;
                        
                        etoiles[i].addClickListener(new ClickListener() {

                                public void onClick(Widget sender) {
                                        
                                        int i = 0 ;
                                        
                                        while(etoiles[i] != (Image)sender)
                                        {
                                                i++ ;
                                        }                       
                                        
                                        noter(i) ;
                                        System.out.println("Nouvelle note : "+noteEnCours);
                                        
                                }
                                
                                
                        }) ;
                }
                
        }
        
        
        public void rafraichir(Object nouvelleDonnees,
                        boolean repandreRaffraichissement) {
                
                if(nouvelleDonnees instanceof String[])
                {
                        estNote = false ;
                        
                        String[] note = (String[])nouvelleDonnees ;
                        int noteInt = Integer.parseInt(note[0]) ;
                        
                        System.out.println("Note reçue : "+noteInt);
                        if(noteInt != -1)
                        {
                                noter(noteInt) ;
                        }
                        else
                        {
                                noteEnCours = 0 ;
                                afficherNote() ;
                        }
                        
                }
                
        }
        
        public void noter(int note)
        {
                noteEnCours = note ;
                estNote = true ;
                afficherNote() ;
        }
        
        public void setNoteMax(int nMax)
        {
                noteMax = nMax ;
                etoiles = new Image[noteMax] ;
                
                for(int i = 0 ; i < noteMax ; i++)
                {
                        etoiles[i] = new Image("etoile_vide.jpg") ;
                        this.add(etoiles[i]) ;
                }
        }
        
        public void afficherNote()
        {
                if(estNote)
                {
                        for(int i = 0 ; i <= noteEnCours ; i++)
                        {
                                etoiles[i].setUrl("etoile_notee.jpg") ;
                        }
                        
                        for (int j = noteEnCours + 1 ; j < noteMax ; j++) 
                        {                                               
                                etoiles[j].setUrl("etoile_vide.jpg") ;                                          
                        }
                }
                else
                {
                        for(int i = 0 ; i < noteMax ; i++)
                        {
                                etoiles[i].setUrl("etoile_vide.jpg") ;
                        }
                }
                
                
        }
        
        public String getNote()
        {
                return ""+noteEnCours ;
        }

}