Subversion Repositories eFlore/Applications.coel

Rev

Rev 1790 | Blame | Compare with Previous | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues;

import org.tela_botanica.client.ComposantId;
import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.modeles.Menu;
import org.tela_botanica.client.modeles.MenuApplicationId;

import com.extjs.gxt.ui.client.Style.HideMode;
import com.extjs.gxt.ui.client.event.Events;
import com.extjs.gxt.ui.client.event.Listener;
import com.extjs.gxt.ui.client.event.TabPanelEvent;
import com.extjs.gxt.ui.client.event.TreePanelEvent;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Document;
import com.extjs.gxt.ui.client.widget.TabItem;
import com.extjs.gxt.ui.client.widget.TabPanel;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.google.gwt.dom.client.NativeEvent;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Event;
import com.google.gwt.user.client.Window;


public class MenuHorizontalVue extends ContentPanel  {
        
        private Mediateur mediateur = null;
        private Constantes i18nC = null;
        
        private TabPanel tbp = null;
        
        public MenuHorizontalVue(Mediateur mediateurCourant) {
                
                setId(ComposantId.PANNEAU_NAVIGATION);
                
                mediateur = mediateurCourant;
                i18nC = Mediateur.i18nC;
                
                setHeaderVisible(false);
                
                // Ce tab Panel est un peu spécial car chaque onglet ne contient rien du tout
                // ils ne servent qu'a être cliqués afin de déclencher une action de la part du médiateur
                // ceci afin de pouvoir facilement changer d'avis si jamais on prend une autre forme de navigation
                tbp = new TabPanel();
                tbp.setId("ListeOngletsNavigation");
                tbp.setWidth("100%");
                
                TabItem tbAcc = new TabItem(i18nC.menuAccueil());
                tbAcc.setBorders(false);
                tbAcc.setId(MenuApplicationId.ACCUEIL);
                tbAcc.setHeight(0);
                
                TabItem tbIns = new TabItem(i18nC.menuStructure());
                tbIns.setBorders(false);
                tbIns.setId(MenuApplicationId.STRUCTURE);
                tbIns.setHeight(0);
                
                TabItem tbCol = new TabItem(i18nC.menuCollection());
                tbCol.setBorders(false);
                tbCol.setId(MenuApplicationId.COLLECTION);
                tbCol.setHeight(0);
                
                TabItem tbPer = new TabItem(i18nC.menuPersonne());
                tbPer.setBorders(false);
                tbPer.setId(MenuApplicationId.PERSONNE);
                tbPer.setHeight(0);
                
                TabItem tbPub = new TabItem(i18nC.menuPublication());
                tbPub.setBorders(false);
                tbPub.setId(MenuApplicationId.PUBLICATION);
                tbPub.setHeight(0);
                
                TabItem tbCom = new TabItem(i18nC.menuCommentaire());
                tbCom.setBorders(false);
                tbCom.setId(MenuApplicationId.COMMENTAIRE);
                tbCom.setHeight(0);
                
                TabItem tbStats = new TabItem(i18nC.menuStats());
                tbStats.setBorders(false);
                tbStats.setId(MenuApplicationId.STATS);
                tbStats.setStyleAttribute("float", "right");
                tbStats.setHeight(0);
                
                tbp.add(tbAcc);
                tbp.add(tbIns);
                tbp.add(tbCol);
                tbp.add(tbPer);
                tbp.add(tbPub);
                tbp.add(tbCom);
                tbp.add(tbStats);
                
                // Supression du conteneur vide de l'onglet (pour éviter un décalage de l'interface)
                tbp.addListener(Events.BeforeSelect, new Listener<TabPanelEvent>() {
                        public void handleEvent(TabPanelEvent be) {
                                be.getItem().getElement().removeFromParent();
                        }
            });
                
                // interception de la selection afin de prévenir le médiateur pour qu'il charge 
                // le panneau central correspondant
                tbp.addListener(Events.Select, new Listener<TabPanelEvent>() {
                        public void handleEvent(TabPanelEvent be) {
                                mediateur.clicMenu(be.getItem().getId());
                        }
            });
                
                // interception de la selection afin de prévenir le médiateur pour qu'il charge 
                // le panneau central correspondant
                tbp.addListener(Events.Resize, new Listener<TabPanelEvent>() {
                        public void handleEvent(TabPanelEvent be) {
                                tbp.setWidth("100%");
                        }
            });
                
                this.add(tbp);
        }

        public void selectionMenu(String codeMenuClique) {
                int nbTab = tbp.getItemCount();
                for(int i = 0; i < nbTab; i++) {
                        if(tbp.getItem(i).getId().equals(codeMenuClique)) {
                                tbp.setSelection(tbp.getItem(i));
                        }
                }
        }
}