Subversion Repositories eFlore/Applications.cel

Rev

Rev 720 | Rev 965 | 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.image.ImageMediateur;
import org.tela_botanica.client.util.Util;
import org.tela_botanica.client.vues.MenuAideVue;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.dev.util.collect.HashMap;
import com.google.gwt.user.client.Window;
import com.gwtext.client.core.EventCallback;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.core.Ext;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.SplitButton;
import com.gwtext.client.widgets.Toolbar;
import com.gwtext.client.widgets.ToolbarButton;
import com.gwtext.client.widgets.ToolbarItem;
import com.gwtext.client.widgets.ToolbarMenuButton;
import com.gwtext.client.widgets.ToolbarTextItem;
import com.gwtext.client.widgets.event.SplitButtonListener;
import com.gwtext.client.widgets.event.SplitButtonListenerAdapter;
import com.gwtext.client.widgets.menu.Menu;

/**
 * Barre d'outils contenant le menu de gestion des images (accessible aussi par
 * un clic droit dans la galerie) et d'autres menus et boutons utiles
 * 
 * @author aurelien
 * 
 */
public class BarreOutilsVue extends Toolbar {

        /**
         * Un bouton qui sert à déployer le menu
         */
        ToolbarMenuButton images = null;
        /**
         * Un bouton qui sert à déployer le menu
         */
        ToolbarMenuButton utilisateur = null;
        
        /**
         * Bouton pour déployer le menu d'aide
         */
        ToolbarMenuButton aide = null ;

        /**
         * Le médiateur associé à la toolbar
         */
        ImageMediateur iMediateur = null;
        /**
         * Le menu de gestion des images
         */
        MenuImageVue imageMenu = null;

        /**
         * Le menu de gestion des filtres
         */
        OptionsImages imageMenuEtendu = null;
        
        /**
         * L'item affichant les filtres en cours
         */
        ToolbarTextItem texteFiltres;

        /**
         * Le menu de gestion utilisateur
         */
        MenuIdVue idMenu = null;
        
        /**
         * Menu de gestion d'aide
         */
        MenuAideVue aideMenu = null ;

        /**
         * Constructeur sans argument (ne doit pas être utilisé donc privé)
         */
        @SuppressWarnings("unused")
        private BarreOutilsVue() {
                super();
        }

        /**
         * Constructeur avec paramètres
         * 
         * @param im
         *            le médiateur à associer à la vue
         */
        public BarreOutilsVue(ImageMediateur im) {

                super();

                iMediateur = im;

                imageMenu = new MenuImageVue(im);
                imageMenuEtendu = new OptionsImages(im);
                //aideMenu = new MenuAideVue(im);
                //images = new ToolbarMenuButton("Fichiers", imageMenu);
                //aide = new ToolbarMenuButton("Aide", aideMenu);
                
                texteFiltres = new ToolbarTextItem("");
                
                final ToolbarMenuButton menuImage = new ToolbarMenuButton("Ajouter des images", imageMenuEtendu.getMenuImage());
                menuImage.addListener(new SplitButtonListenerAdapter() {

                        @Override
                        public void onArrowClick(SplitButton menuButton, EventObject e) {
                                menuImage.showMenu();
                        }

                        @Override
                        public void onClick(Button button, EventObject e) {
                                menuImage.showMenu();
                        }
                });
                
                ToolbarButton menuSuppression = imageMenuEtendu.getBoutonSuppression();
                final ToolbarMenuButton menuTampon = new ToolbarMenuButton("Tampon", imageMenuEtendu.getMenuTampon());
                menuTampon.addListener(new SplitButtonListenerAdapter() {

                        @Override
                        public void onArrowClick(SplitButton menuButton, EventObject e) {
                                menuTampon.showMenu();
                        }

                        @Override
                        public void onClick(Button button, EventObject e) {
                                menuTampon.showMenu();
                        }
                });
                
                this.addButton(menuImage);
                this.addButton(menuSuppression);
                this.addButton(menuTampon);
                
                this.addItem(texteFiltres);
                //this.addButton(aide);
        }

        /**
         * @return the images
         */
        public ToolbarMenuButton getImages() {
                return images;
        }

        /**
         * @return the iMediateur
         */
        public ImageMediateur getIMediateur() {
                return iMediateur;
        }
        
        public void setFiltresEnCours(String[][] filtresEnCours) {
                
                String texteFiltresEnCours = "";
                
                for(int i = 0; i < filtresEnCours.length; i++) {
                        if(Util.filtreValide(filtresEnCours[i])) {
                                
                                if(!texteFiltresEnCours.equals("")) {
                                        texteFiltresEnCours += " - ";
                                }
                                
                                texteFiltresEnCours += "<span class=\"affichage_filtre\">"+
                                                                                        transformerNomFiltre(filtresEnCours[i][0])+": "+transformerValeurFiltre(filtresEnCours[i][0], filtresEnCours[i][1])+
                                                                           " <input value=\"X\" type=\"button\" rel=\""+filtresEnCours[i][0]+"\" id=\"bouton_raz_filtres_img"+filtresEnCours[i][0]+"\" />"+
                                                                                "</span>";
                        }
                }
                
                if(!texteFiltresEnCours.equals("")) {
                        texteFiltresEnCours = "- <span class=\"indicateur_filtres\"> Filtres - "+texteFiltresEnCours+"</span>";
                }
                
                texteFiltres.setText(texteFiltresEnCours);
                
                for(int i = 0; i < filtresEnCours.length; i++) {
                        
                        if(Util.filtreValide(filtresEnCours[i])) {
                                if(Ext.get("bouton_raz_filtres_img"+filtresEnCours[i][0]) != null) {
                                        
                                        Ext.get("bouton_raz_filtres_img"+filtresEnCours[i][0]).addListener("click", new EventCallback() {
                                                
                                                public void execute(EventObject e) {
                                                        e.stopEvent();
                                                        iMediateur.viderFiltre(e.getTarget().getAttribute("rel"));
                                                }
                                                
                                        });
                                }
                        }
                }
        }
        
        private String transformerNomFiltre(String nomFiltre) {
                                
                //TODO: si le nombre de filtre s'agrandit faire une hashmap
                // (pas la peine pour le moment, un seul nom à changer)
                if(nomFiltre.equals("ci_recherche_generale")) {
                        nomFiltre = "recherche";
                }
                
                //TODO: si le nombre de filtre s'agrandit faire une hashmap
                // (pas la peine pour le moment, un seul nom à changer)
                if(nomFiltre.equals("ci_meta_mots_cles")) {
                        nomFiltre = "mots clés";
                }
                
                return nomFiltre;
                
        }
        
        private String transformerValeurFiltre(String nomFiltre, String valeurFiltre) {
                
                String valeurFiltreTransformee = valeurFiltre;
                
                if(nomFiltre.equals("ci_meta_mots_cles")) {
                        
                        String[] tabMotsCles = valeurFiltre.split(";");
                        String[] tabMotsClesTexte = iMediateur.obtenirTexteMotsCles(tabMotsCles);
                        
                        if(tabMotsClesTexte.length > 1) {
                                valeurFiltreTransformee = Util.implode(",", tabMotsClesTexte);
                        } else {
                                valeurFiltreTransformee = tabMotsClesTexte[0];
                        }
                }
                
                if(nomFiltre.equals("mois")) {
                        valeurFiltreTransformee = Util.renvoyerMois(Integer.parseInt(valeurFiltre));
                }

                return valeurFiltreTransformee;
                
        }
 
}