Subversion Repositories eFlore/Applications.cel

Rev

Rev 201 | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues.observation;

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.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.ExtElement;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Panel;
import com.gwtext.client.widgets.Window;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.form.TextArea;

public class SaisieMotsClesVue extends Window implements Rafraichissable {
private ObservationMediateur oMediateur = null ;
        
        private Object[][] listeMotsPesee = null;
        
        private String motsAAjouter = "" ;
        
        private int nbMotsClesMax = 1 ;
        
        private TextArea motsClesAjout = null;
        
        private Button validerAjout = null ;
        
        private Button voirCacherNuage = null;
        
        private boolean nuageVisible = false ;
        
        private Panel contenuNuage = null ;
        
        public SaisieMotsClesVue(ObservationMediateur om) {
                super("Entrez vos mots clés");
                setCls("fenmotcles");
                oMediateur = om ;
                //setWidth(300);
                motsClesAjout = new TextArea();
                //motsClesAjout.setWidth(300);
                validerAjout = new Button("Valider");
                voirCacherNuage= new Button("Afficher les mots clés");
                final Rafraichissable r = this ;
                
                this.setCloseAction(CLOSE);
                
                validerAjout.addListener(new ButtonListenerAdapter() {
                        public void onClick(Button button, EventObject e) {
                                
                                motsAAjouter = motsClesAjout.getText();
                                //oMediateur.AjouterMotsClesEnMasse(motsAAjouter);
                        }
                        
                });
                
                voirCacherNuage.addListener(new ButtonListenerAdapter() {
                        public void onClick(Button button, EventObject e) {
                                
                                if(nuageVisible) {
                                        
                                        if(contenuNuage != null) {
                                                contenuNuage.clear();
                                        }
                                        voirCacherNuage.setText("Afficher les mots clés");
                                        nuageVisible = false;
                                }
                                else {
                                //      oMediateur.obtenirNuageMotsCles(r);
                                        voirCacherNuage.setText("Cacher les mots clés");
                                        nuageVisible = true;
                                }
                        }
                        
                });
                
                add(motsClesAjout);
                add(validerAjout);
                add(voirCacherNuage);
                
                contenuNuage = new Panel();
                contenuNuage.setBorder(false);
                
                add(contenuNuage);
        }
        

        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;
                        demasquerChargement();
                }
                
                if(nouvelleDonnees instanceof Object[][]) {
                        
                        listeMotsPesee = (Object[][])nouvelleDonnees ;
                        construireNuage();
                        demasquerChargement();
                }
                
                if(nouvelleDonnees instanceof String) {
                        
                        String res = (String)nouvelleDonnees;
                        if(res.equals("OK")) {
                                masquerChargement();
                                oMediateur.obtenirListeObservation();
                                //oMediateur.obtenirNuageMotsCles(this);
                        }
                }
        }
        
        private void construireNuage() {
                
                contenuNuage.clear();
                
                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) {
                                
                                motsAAjouter += " "+e.getTarget().getInnerHTML();
                                motsClesAjout.setValue(motsAAjouter);
                        }
                };
                
                contenuHTML.sinkEvents(Event.ONCLICK);
                contenuNuage.add(contenuHTML);
                
                contenuNuage.doLayout();
                doLayout();
        }
        
        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() ;
                        }
        }


}