Subversion Repositories eFlore/Applications.cel

Rev

Rev 235 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues.observation.indicateurs;

import org.tela_botanica.client.interfaces.Filtrable;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.observation.ObservationMediateur;

import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.ui.HTML;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.Container;
import com.gwtext.client.widgets.Window;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;

public class NuageMotsClesVue extends Window implements Filtrable, Rafraichissable {

        private ObservationMediateur oMediateur = null ;
        
        private Object[][] listeMotsPesee = null;
        
        private String motsAChercher = "" ;
        
        private int nbMotsClesMax = 1 ;
        
        private boolean nuageCharge = false ;
        
        public NuageMotsClesVue(ObservationMediateur om) {
                super("Nuage de mots clés");
                setCls("fenmotcles");
                oMediateur = om ;
                setWidth(200);
                this.setCloseAction(CLOSE);
                //oMediateur.obtenirNuageMotsCles(this);
                
                this.addListener(new ContainerListenerAdapter() {

                        @Override
                        public void onAfterLayout(Container self) {
                                if(!nuageCharge) {
                                        masquerChargement();
                                }
                                
                        }

                        @Override
                        public void onRender(Component component) {
                                
                        }

                        @Override
                        public void onShow(Component component) {
                                // TODO Auto-generated method stub
                                
                        }
                        
                });
        }
        

        public boolean renvoyerEtatFiltre() {
                // TODO Auto-generated method stub
                return false;
        }


        public String renvoyerNomFiltre() {
                // TODO Auto-generated method stub
                return null;
        }


        public String[] renvoyerValeursAFiltrer() {
                // TODO Auto-generated method stub
                return null;
        }


        public void valider() {
                // TODO Auto-generated method stub
                
        }


        public void rafraichir(Object nouvelleDonnees,
                        boolean repandreRaffraichissement) {
                
                if(nouvelleDonnees instanceof Integer) {
                        nbMotsClesMax = (Integer)nouvelleDonnees;
                }
                
                if(nouvelleDonnees instanceof Object[][]) {
                        
                        listeMotsPesee = (Object[][])nouvelleDonnees ;
                        construireNuage();
                }
        }
        
        private void construireNuage() {
                
                String contenu = "<ul class=\"nuagetag\">" ;
                
                for(int i = 0; i<listeMotsPesee.length; i++) {
                        
                        String classeMotCle = "motcletaille"+calculerPoids((Integer)listeMotsPesee[i][1]) ;
                        contenu += "<li class=\""+classeMotCle+"\">";
                        contenu += (String)listeMotsPesee[i][0];
                        contenu += "</li>";
                }
                
                contenu += "</ul>" ;
                
                HTML contenuHTML = new HTML(contenu) {
                        public void onBrowserEvent(Event e) {
                                
                                //oMediateur.ajouterMotCleRecherche(e.getTarget().getInnerHTML());
                        }
                };
                
                contenuHTML.sinkEvents(Event.ONCLICK);
                
                this.clear();
                this.add(contenuHTML);
                
                doLayout();
                nuageCharge = true;
                demasquerChargement();
        }
        
        private int calculerPoids(int poidMot) {
                
                int poids = (poidMot*10)/nbMotsClesMax;
                if(poids < 1) {
                        return 1;
                }
                
                return poids;
        }
        
        /**
         * Recherche l'élement actuellement affiché et affiche son message de chargement
         */
        public void masquerChargement()
        {
                        ExtElement masked = Ext.get(getId()) ;


                        if (masked!=null) {
                                masked.mask("Chargement") ;
                        }

        }
        
        /**
         * Recherche l'élement actuellement affiché et retire son message de chargement si l'était affiché
         */
        public void demasquerChargement()
        {
                        ExtElement masked = Ext.get(getId()) ;
                        
                        if (masked!=null) {
                                        masked.unmask() ;
                        }
        }

}