Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.vues;

import org.tela_botanica.client.image.ImageMediateur;

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.event.MenuListenerAdapter;
import com.gwtext.client.core.EventObject;;

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

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

        /**
         * Item pour lier la selection d'images aux observations selectionnées
         */
        private Item lierSelection = null ;

        /**
         * Item pour afficher la selection d'images
         */
        private Item afficherSelection = null;
        
        /**
         * Item pour supprimer la liaison entre une observation et une image
         */
        private Item supprimerLiaison = null ;

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

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

                iMediateur = im;

                // on construit le menu
                lierSelection = new Item("Lier le tampon à la sélection d'observation");
                afficherSelection = new Item("Afficher le tampon");

                addItem(lierSelection);
                addItem(afficherSelection);

                // on ajoute les listeners
                ajouterListeners();
        }

        public MenuLiaisonVue(ImageMediateur mediateur, boolean liaison) {
                
                
                iMediateur = mediateur;
                
                lierSelection = new Item("Lier le tampon à la sélection d'observation");
                afficherSelection = new Item("Afficher le tampon");
                
                addItem(lierSelection);
                addItem(afficherSelection);
                
                iMediateur = mediateur;
                
                if(liaison) {
                
                        supprimerLiaison = new Item("Supprimer la liaison") ;
                        addItem(supprimerLiaison);
                        
                }
                        // on ajoute les listeners
                        ajouterListeners();
        }

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

                        // gestion du clic sur un item

                        public void onItemClick(BaseItem item, EventObject e) {

                                // si c'est la suppression
                                if (item.equals(lierSelection)) {
                                        // on notifie le médiateur
                                        getIMediateur().LierTamponObservations();
                                }

                                // si c'est la liaison
                                if (item.equals(afficherSelection)) {
                                        getIMediateur().afficherIdSelectionImages();
                                }
                                
                                if(item.equals(supprimerLiaison)) {
                                        getIMediateur().supprimerLiaisonObsImage() ;
                                }

                                // enfin, on cache le menu
                                hide();

                        }

                });
        }

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

}