Subversion Repositories eFlore/Applications.cel

Rev

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

package org.tela_botanica.client.vues;

import org.tela_botanica.client.observation.ObservationMediateur;

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

public class MenuObservationVue extends Menu {

        /**
         * Le médiateur associé à la vue
         */
        private ObservationMediateur oMediateur;

        /**
         * Item pour la suppression d'obs
         */
        private Item supprimerObservation = null;
        
        private Item transmettreObservation = null;
        
        private Item deTransmettreObservation = null;

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

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

                oMediateur = om;
                
                transmettreObservation = new Item("Rendre publiques les observations séléctionnées");
                addItem(transmettreObservation);
                
                deTransmettreObservation = new Item("Rendre privées les observations séléctionnées");
                addItem(deTransmettreObservation);
                
                supprimerObservation = new Item("Supprimer les observations séléctionnées");
                addItem(supprimerObservation);

                // 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(supprimerObservation)) {
                                        // on notifie le médiateur
                                        getOMediateur().supprimerObservations();
                                }
                                
                                // si c'est la transmission
                                if (item.equals(transmettreObservation)) {
                                        // on notifie le médiateur
                                        getOMediateur().transmettreObservations(true);
                                }
                                
                                // si c'est la detransmission
                                if (item.equals(deTransmettreObservation)) {
                                        // on notifie le médiateur
                                        getOMediateur().transmettreObservations(false);
                                }
                                
                                // enfin, on cache le menu
                                hide();

                        }

                });
        }

        /**
         * Accesseur pour le médiateur
         * 
         * @return le médiateur associé à la vue
         */
        public ObservationMediateur getOMediateur() {
                return oMediateur;
        }

}