Subversion Repositories eFlore/Applications.coel

Rev

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

package org.tela_botanica.client.vues.accueil;

import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.util.Debug;

import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.custom.Portlet;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;

abstract public class Applette extends Portlet {
        
        protected Mediateur mediateur = null;
        
        private ToolButton epingleBouton = null;
        private ToolButton configurationBouton = null;
        private ToolButton fermetureBouton = null;
        
        protected void initialiserApplette(Mediateur mediateurCourrant) {
                initialiserApplette(mediateurCourrant, null);
        }
        
        protected void initialiserApplette(Mediateur mediateurCourrant, String titre) {
                mediateur = mediateurCourrant;
                
                setLayout(new FitLayout());
                setHeight(250);
                setCollapsible(true);
                setAnimCollapse(true);
                setScrollMode(Scroll.AUTO);
                setTitre(titre);                
                
                configurationBouton  = new ToolButton("x-tool-gear");
                getHeader().addTool(configurationBouton);
                
                epingleBouton  = getBoutonEpingle();
                getHeader().addTool(epingleBouton);
                
                fermetureBouton = getBoutonFermeture();
                getHeader().addTool(fermetureBouton);
        }
        
        private ToolButton getBoutonEpingle() {
                ToolButton bouton = new ToolButton("x-tool-pin", new SelectionListener<IconButtonEvent>() {
                        @Override
                        public void componentSelected(IconButtonEvent ce) {
                                setEpingler(!isPinned());
                        }
                });
                return bouton;
        }
        
        private ToolButton getBoutonFermeture() {
                ToolButton bouton = new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() {
                        @Override
                        public void componentSelected(IconButtonEvent ce) {
                                removeFromParent();
                        }
                });
                return bouton;
        }
        
        public void setTitre(String titre) {
                if (titre != null) {
                        setHeadingHtml(titre);
                }
        }
        
        public void setEpingler(boolean epingler) {
                if (epingler) {
                        epingleBouton.setStyleName("x-tool-unpin x-tool");
                        setPinned(true);
                } else {
                        epingleBouton.setStyleName("x-tool-pin x-tool");
                        setPinned(false);
                }
                Debug.log("epingleBouton.getStyleName() = "+epingleBouton.getStyleName());
                layout();
        }
                
        protected void ajouterConfigurationListener(SelectionListener<IconButtonEvent> configurationListener) {
                configurationBouton.addSelectionListener(configurationListener);
        }
}