Subversion Repositories eFlore/Applications.coel

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

package org.tela_botanica.client.vues;

import org.tela_botanica.client.Mediateur;
import org.tela_botanica.client.RegistreId;
import org.tela_botanica.client.configuration.Configuration;
import org.tela_botanica.client.i18n.Constantes;
import org.tela_botanica.client.images.Images;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Information;
import org.tela_botanica.client.modeles.InterneValeur;
import org.tela_botanica.client.util.Debug;

import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style.Scroll;
import com.extjs.gxt.ui.client.event.ButtonEvent;
import com.extjs.gxt.ui.client.event.IconButtonEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.event.WindowEvent;
import com.extjs.gxt.ui.client.event.WindowListener;
import com.extjs.gxt.ui.client.store.ListStore;
import com.extjs.gxt.ui.client.widget.ContentPanel;
import com.extjs.gxt.ui.client.widget.Dialog;
import com.extjs.gxt.ui.client.widget.HtmlContainer;
import com.extjs.gxt.ui.client.widget.LayoutContainer;
import com.extjs.gxt.ui.client.widget.button.Button;
import com.extjs.gxt.ui.client.widget.button.ToolButton;
import com.extjs.gxt.ui.client.widget.custom.Portal;
import com.extjs.gxt.ui.client.widget.custom.Portlet;
import com.extjs.gxt.ui.client.widget.form.ComboBox;
import com.extjs.gxt.ui.client.widget.form.ComboBox.TriggerAction;
import com.extjs.gxt.ui.client.widget.form.FormPanel.LabelAlign;
import com.extjs.gxt.ui.client.widget.layout.FitLayout;
import com.extjs.gxt.ui.client.widget.toolbar.ToolBar;

public class AccueilVue  extends LayoutContainer implements Rafraichissable {
        
        private Mediateur mediateur = null;
        private Constantes i18nC = null;
        private Portal portail = null;
        
        public AccueilVue(Mediateur mediateurCourant) {
                mediateur = mediateurCourant;
                i18nC = Mediateur.i18nC;
                setLayout(new FitLayout());
                
                ContentPanel panneauPrincipal = new ContentPanel();
                panneauPrincipal.setLayout(new FitLayout());
                panneauPrincipal.setHeading("Accueil");
                panneauPrincipal.setBorders(false);
                
                ToolBar barreOutils = new ToolBar();
                Button ajouter = new Button(i18nC.ajouter());
                ajouter.setIcon(Images.ICONES.ajouter());
                ajouter.addSelectionListener(new SelectionListener<ButtonEvent>() {  
                        public void componentSelected(ButtonEvent be) {  
                                ajouterPortlet(0);
                        }  
                });
                barreOutils.add(ajouter);
                
                panneauPrincipal.setTopComponent(barreOutils);
                
                portail  = new Portal(3);
                portail.setBorders(true);
                portail.setStyleAttribute("backgroundColor", "white");
                portail.setShadow(true);
                portail.setColumnWidth(0, .33);
                portail.setColumnWidth(1, .33);
                portail.setColumnWidth(2, .33);
                panneauPrincipal.add(portail);
                ajouterPortlet(0);

                add(panneauPrincipal);
                mediateur.desactiverChargement();
        }
        
        private void ajouterPortlet(int index) {
                Portlet portlet = new Portlet();
                portlet.setHeading("Statistiques des collections");
                configPanel(portlet);
                portlet.setLayout(new FitLayout());
                HtmlContainer conteneurHtml = new HtmlContainer();
                conteneurHtml.setUrl("http://localhost/jrest/CoelStatistique/NombreDonnees");
                portlet.add(conteneurHtml);
                portlet.setHeight(250);
                portail.add(portlet, index);
        }
        
        private void configPanel(final ContentPanel panel) {
                panel.setLayout(new FitLayout());
                panel.setCollapsible(true);
                panel.setAnimCollapse(false);
                panel.setScrollMode(Scroll.AUTO);
                panel.getHeader().addTool(new ToolButton("x-tool-gear", new SelectionListener<IconButtonEvent>() {
                        @Override
                        public void componentSelected(IconButtonEvent ce) {
                                ContentPanel panneau = new ContentPanel();
                                panneau.setHeaderVisible(false);
                                panneau.setLayout(Formulaire.creerFormLayout(350, LabelAlign.TOP));
                                
                                String baseUrl = ((Configuration) Registry.get(RegistreId.CONFIG)).getServiceBaseUrl();
                                baseUrl += "CoelStatistique/";
                                
                                ListStore<InterneValeur> appletteStore = new ListStore<InterneValeur>();
                                appletteStore.add(new InterneValeur(baseUrl+"NombreDonnees", "Nombre de données"));
                                appletteStore.add(new InterneValeur(baseUrl+"Accueil", "Bienvenue"));
                                appletteStore.add(new InterneValeur(baseUrl+"TypeDepot", "Types de dépôt des collections"));
                                appletteStore.add(new InterneValeur(baseUrl+"NombreCollectionParStructure", "Nombre de collections par institution"));
                                
                                final ComboBox<InterneValeur> applettesCombo = new ComboBox<InterneValeur>();
                                applettesCombo.setFieldLabel("Veuillez sélectionner le type d'applette");
                                applettesCombo.setForceSelection(true);
                                applettesCombo.setTriggerAction(TriggerAction.ALL);
                                applettesCombo.setDisplayField("nom");
                                applettesCombo.setStore(appletteStore);
                                applettesCombo.setEditable(false);
                                applettesCombo.setWidth(300);
                                
                                panneau.add(applettesCombo);
                                
                                final Dialog configurationFenetre = new Dialog();  
                                configurationFenetre.setHeading("Configuration de l'applette");
                                configurationFenetre.setButtons(Dialog.OK);
                                configurationFenetre.setSize(350, 150);  
                                configurationFenetre.setPlain(true);  
                                configurationFenetre.setModal(true);
                                configurationFenetre.setBlinkModal(true);  
                                configurationFenetre.setLayout(new FitLayout());
                                configurationFenetre.setHideOnButtonClick(true);
                                configurationFenetre.addWindowListener(new WindowListener(){
                                        public void windowHide(WindowEvent we) {
                                                String url = applettesCombo.getValue().getAbr();
                                                HtmlContainer conteneurHtml = new HtmlContainer();
                                                conteneurHtml.setUrl(url);
                                                conteneurHtml.recalculate();
                                                panel.removeAll();
                                                panel.add(conteneurHtml);
                                                Debug.log(url);
                                                panel.layout();
                                        }
                                });
                                configurationFenetre.add(panneau);
                                configurationFenetre.show();
                        }
                }));
                panel.getHeader().addTool(new ToolButton("x-tool-close", new SelectionListener<IconButtonEvent>() {
                        @Override
                        public void componentSelected(IconButtonEvent ce) {
                                panel.removeFromParent();
                        }
                }));
        }
        
        public void rafraichir(Object nouvellesDonnees) {
                if (nouvellesDonnees instanceof Information) {
                        Information info = (Information) nouvellesDonnees;
                        String type = info.getType(); 
                        if (type.equals("")) {
                                
                        }
                } else {
                        Debug.log(Mediateur.i18nM.erreurRafraichir(nouvellesDonnees.getClass(), this.getClass()));
                }
        }
}