Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.vues.image;

import org.tela_botanica.client.i18n.Msg;
import org.tela_botanica.client.image.ImageMediateur;
import org.tela_botanica.client.interfaces.Rafraichissable;
import com.google.gwt.user.client.ui.HTML;
import com.gwtext.client.widgets.Panel;

/**
 * Arbre des mots clés, qui est une vue rafraichissable, qui contient des mots
 * clés cochables et réorganisables à volonté
 * 
 * @author aurelien
 * 
 */
public class ImageMotsClesVue extends Panel implements Rafraichissable {

        /**
         * Une string permettant connaitre les mots clés cochés en cours séparés par
         * des virgules
         */
        private String motsClesEnCours = "";
        
        private String[] tableauMotsClesEnCours = new String[0];
        /**
         * Tableau contenant les mots clés qui n'ont pas encore été jaouté à l'arbre
         * (sert au lazy rendering quand on reçoit des mots clés avant que le rendu
         * du conteneur n'ai été effectué)
         */
        private String[] motsClesEnAttente = new String[0];
        
        private HTML motsClesAffiches = new HTML();

        /**
         * Constructeur sans paramètre (privé car interdit d'utilisation)
         */
        @SuppressWarnings("unused")
        private ImageMotsClesVue() {
                super();
        }

        /**
         * Constructeur avec paramètre
         * 
         * @param im
         *            le médiateur à associer
         */
        public ImageMotsClesVue(ImageMediateur im) {
                // on crée le panel
                super(Msg.get("mots-cles"));
                this.setHeight("100%");
                this.add(motsClesAffiches);
                motsClesAffiches.setHeight("100%");
                
                this.setBorder(false);
                this.setBodyBorder(false);
                this.setCollapsible(true);
                this.setTitleCollapse(true);

        }

        /**
         * Méthode héritée de l'interface rafraichissable
         * 
         * @param nouvelleDonnees
         *            les nouvelles données pour l'objet
         * @param repandreRafraichissement
         *            booleen qui dit si on doit répandre l'évenement
         */
        @Override
        public void rafraichir(Object nouvelleDonnees,
                        boolean repandreRafraichissement) {
                
                // Si on reçoit un tableau de String (cas ou l'on séléectionne une
                // nouvelle image)
                if (nouvelleDonnees instanceof String[]) {

                                // le tableau de String contient les id des mots clés associés à
                                // l'image
                                // on affiche les mots clés contenu dans le tableau
                                tableauMotsClesEnCours = (String[]) nouvelleDonnees;
                                afficherMotsCles(tableauMotsClesEnCours);
                }
        }

        private void afficherMotsCles(String[] tableauMotsClesEnCours) {
                motsClesEnCours = "<ul class=\"liste_mots_cles\">"; 
                for (int i = 0; i < tableauMotsClesEnCours.length; i++) {
                        if(!tableauMotsClesEnCours[i].trim().isEmpty()) {
                                motsClesEnCours += "<li>"+tableauMotsClesEnCours[i]+"</li>";
                        }
                }
                motsClesEnCours += "</ul>";
                
                motsClesAffiches.setHTML(motsClesEnCours);
        }
}