Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.vues.image;

import org.tela_botanica.client.image.ImageMediateur;

import com.google.gwt.core.client.JavaScriptObject;
import com.gwtext.client.core.EventObject;
import com.gwtext.client.widgets.Button;
import com.gwtext.client.widgets.Component;
import com.gwtext.client.widgets.ToolbarButton;
import com.gwtext.client.widgets.event.ButtonListener;
import com.gwtext.client.widgets.event.ButtonListenerAdapter;
import com.gwtext.client.widgets.menu.BaseItem;
import com.gwtext.client.widgets.menu.Item;
import com.gwtext.client.widgets.menu.Menu;
import com.gwtext.client.widgets.menu.MenuItem;
import com.gwtext.client.widgets.menu.event.BaseItemListener;
import com.gwtext.client.widgets.menu.event.BaseItemListenerAdapter;
import com.gwtext.client.widgets.menu.event.MenuListenerAdapter;

/**
 * Menu de gestion des images
 * 
 * @author aurelien
 * 
 */
public class OptionsImages {

        /**
         * Le médiateur associé à la vue
         */
        private ImageMediateur iMediateur;

        /**
         * Item pour l'upload
         */
        private MenuItem uploaderImage = null;
        /**
         * Item pour la suppression
         */
        private ToolbarButton supprimerImage = null;

        /**
         * Item pour l'ajout d'images à la selection
         */
        private Item ajouterImageSelection = null;

        /**
         * Item pour vider la selection d'images
         */
        private Item viderSelection = null;

        /**
         * Item pour lier la selection d'images
         */
        private Item afficherSelection = null;
        
        private Item uploadMultiple = null ;
        
        private Item uploadSimple = null ;
        
        private Menu mnFichiers = null ;
        
        private Menu mnTampon = null ;

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

        /**
         * Constructeur avec paramètre
         * 
         * @param im
         *            le médiateur à associer
         */
        public OptionsImages(ImageMediateur im) {
                super();

                iMediateur = im;
                
                mnFichiers = new Menu();
                        uploadMultiple = new Item("Plusieurs dossiers ou fichiers à la fois");
                        uploadSimple = new Item("Un fichier à la la fois");
                        
                mnFichiers.addItem(uploadMultiple);
                mnFichiers.addItem(uploadSimple);

                // on construit le menu
                uploaderImage = new MenuItem("Ajouter des images", mnFichiers);
                supprimerImage = new ToolbarButton("Supprimer");
                
                ajouterImageSelection = new Item(
                                "Ajouter les images sélectionnées au tampon");
                viderSelection = new Item("Supprimer le contenu du tampon");
                afficherSelection = new Item("Supprimer le contenu du tampon");
                
                mnTampon = new Menu();
                
                mnTampon.addItem(ajouterImageSelection);
                mnTampon.addItem(viderSelection);
                mnTampon.addItem(afficherSelection);

                // on ajoute les listeners
                ajouterListeners();
        }

        /**
         * Ajoute les listeners pour la gestions des évènements
         */
        private void ajouterListeners() {
                
                mnTampon.addListener(new MenuListenerAdapter() {

                        // gestion du clic sur un item

                        public void onItemClick(BaseItem item, EventObject e) {

                                // si c'est l'ajout à la sélection
                                if (item.equals(ajouterImageSelection)) {
                                        getIMediateur().ajouterImagesSelection();
                                }

                                // si c'est le vidage de la sélection
                                if (item.equals(viderSelection)) {
                                        getIMediateur().viderSelection();
                                }

                                // si c'est l'affichage de la selection
                                if (item.equals(afficherSelection)) {
                                        getIMediateur().afficherIdSelectionImages();
                                }
                                
                                // enfin, on cache le menu
                                mnTampon.hide();

                        }
                        
                        public void onShow(Menu menu) {
                                if(getIMediateur().getCompteSelection() != 0) {
                                        afficherSelection.enable();
                                        viderSelection.enable();
                                }
                                else {
                                        afficherSelection.disable();
                                        viderSelection.disable();
                                }
                        }

                });
                
                mnTampon.setTitle("Permet de sélectionner et d'afficher des images présentes sur plusieurs pages");
                
                
                // si c'est la suppression
                supprimerImage.addListener(new ButtonListenerAdapter() {

                        public void onClick(Button b, EventObject e) {
                                // on notifie le médiateur
                                getIMediateur().supprimerImages();      
                        }                       
                });
                supprimerImage.setTitle("Supprimer les images sélectionnées");
                
                mnFichiers.addListener(new MenuListenerAdapter() {
                        
                        public void onItemClick(BaseItem item, EventObject e) {
                                
                                // si c'est l'upload
                                if (item.equals(uploadMultiple)) {
                                        // on notifie le médiateur
                                        getIMediateur().uploaderImages(true);
                                }
                                
                                // si c'est l'upload
                                if (item.equals(uploadSimple)) {
                                        // on notifie le médiateur
                                        getIMediateur().uploaderImages(false);
                                }
                        }
                        
                });
                
                
                mnFichiers.setTitle("Ajouter des images en les selectionnant une par une ou bien un dossier à la fois");
        
        }
        
        public Menu getMenuImage() {
                return mnFichiers;
        }
        
        public Menu getMenuTampon() {
                return mnTampon;
        }
        
        public ToolbarButton getBoutonSuppression() {
                return supprimerImage;
        }

        /**
         * Accesseur pour le médiateur
         * 
         * @return le médiateur associé à la vue
         */
        public ImageMediateur getIMediateur() {
                return iMediateur;
        }

}