Subversion Repositories eFlore/Applications.coel

Rev

Rev 65 | Go to most recent revision | Blame | 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.RegistreId;
import org.tela_botanica.client.interfaces.Rafraichissable;
import org.tela_botanica.client.modeles.Utilisateur;

import com.extjs.gxt.ui.client.Registry;
import com.extjs.gxt.ui.client.Style;
import com.extjs.gxt.ui.client.Style.Orientation;
import com.extjs.gxt.ui.client.event.ComponentEvent;
import com.extjs.gxt.ui.client.event.SelectionListener;
import com.extjs.gxt.ui.client.util.Format;
import com.extjs.gxt.ui.client.util.Params;
import com.extjs.gxt.ui.client.widget.HtmlContainer;
import com.extjs.gxt.ui.client.widget.Info;
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.ButtonBar;
import com.extjs.gxt.ui.client.widget.button.SplitButton;
import com.extjs.gxt.ui.client.widget.layout.RowData;
import com.extjs.gxt.ui.client.widget.layout.RowLayout;
import com.extjs.gxt.ui.client.widget.menu.Menu;
import com.extjs.gxt.ui.client.widget.menu.MenuItem;

public class EntetePanneauVue extends LayoutContainer implements Rafraichissable {
        
        private ButtonBar barreBoutons = null;
        private Button identificationBouton = null;
        private String identificationInfoTpl = "<div id='coel-identification'>{0}</div>";
        private HtmlContainer identificationInfoHtml = null;
        
        public EntetePanneauVue() {
                setLayout(new RowLayout(Orientation.HORIZONTAL));
                setId("coel-entete");
                
                // TODO : ajouter la gestion de l'identification
                HtmlContainer html = new HtmlContainer();
                StringBuffer sb = new StringBuffer();
                sb.append("     <div id='coel-titre'>Collections en Ligne Demo</div>");
                html.setHtml(sb.toString());
                html.setEnableState(false);
                
                identificationInfoHtml = new HtmlContainer();
                identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
                identificationInfoHtml.setEnableState(false);
                
                // Création des écouteurs
                SelectionListener<ComponentEvent> boutonEcouteur = new SelectionListener<ComponentEvent>() {  
                        public void componentSelected(ComponentEvent ce) {  
                                Button btn = (Button) ce.component;
                                Info.display(btn.getText()+" - "+btn.getId(), "Chargement de la fenêtre '{0}' en cours...", btn.getText());
                                if (btn.getId().equals(ComposantId.BTN_AIDE)) {
                                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirAide();
                                } else if (btn.getId().equals(ComposantId.BTN_PARAMETRES)) {
                                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirParametres();
                                } else if (btn.getId().equals(ComposantId.BTN_CONNEXION)) {
                                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirIdentification();
                                } else if (btn.getId().equals(ComposantId.BTN_DECONNEXION)) {
                                        ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).deconnecterUtilisateur();
                                } else if (btn.getId().equals(ComposantId.BTN_APPLIS)) {
                                        btn.getMenu().show(btn);
                                }
                        }  
                };
                
                barreBoutons = new ButtonBar();
                barreBoutons.setButtonAlign(Style.HorizontalAlignment.RIGHT);
                Button parametresBouton = new Button("Paramêtres", boutonEcouteur);
                parametresBouton.setId(ComposantId.BTN_PARAMETRES);
                barreBoutons.add(parametresBouton);
                Button aideBouton = new Button("Aide", boutonEcouteur);
                aideBouton.setId(ComposantId.BTN_AIDE);
                barreBoutons.add(aideBouton);
                identificationBouton = new Button("Identifiez vous...", boutonEcouteur);
                identificationBouton.setId(ComposantId.BTN_CONNEXION);
                barreBoutons.add(identificationBouton);
                
                SplitButton applisBouton = new SplitButton("Changez d'application...");
                applisBouton.setId(ComposantId.BTN_APPLIS);
                applisBouton.addSelectionListener(boutonEcouteur);
                
                Menu menu = new Menu();
                MenuItem menuCel = new MenuItem("Carnet en ligne", new SelectionListener<ComponentEvent>() {  
                        @Override
                        public void componentSelected(ComponentEvent ce) {  
                                Menu me = (Menu) ce.component;
                                MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL);
                                Info.display(mi.getId()+" - "+mi.getText(), "Chargement du menu '{0}' en cours...", mi.getId());
                                ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_CEL);
                        }  
                });
                menuCel.setId(ComposantId.MENU_CEL);
                menu.add(menuCel);
                MenuItem menuBel = new MenuItem("Biblio en ligne",  new SelectionListener<ComponentEvent>() {  
                        @Override
                        public void componentSelected(ComponentEvent ce) {  
                                Menu me = (Menu) ce.component;
                                MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL);
                                Info.display(mi.getId()+" - "+mi.getText(), "Chargement du menu '{0}' en cours...", mi.getId());
                                ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirApplis(ComposantId.MENU_BEL);
                        }  
                });
                menuBel.setId(ComposantId.MENU_BEL);
                menu.add(menuBel);
                
                applisBouton.setMenu(menu);  
                barreBoutons.add(applisBouton);
                
                add(html, new RowData(.3, 1));
                add(identificationInfoHtml, new RowData(.3, 50));
                add(barreBoutons, new RowData(.4, 50)); 
        }

        public void rafraichir(Object nouvelleDonnees) {
                if (nouvelleDonnees instanceof Utilisateur) {
                        Utilisateur utilisateur = (Utilisateur) nouvelleDonnees;
                        if (utilisateur.isIdentifie() == true) {
                                identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Bienvenue : "+utilisateur.getLogin())));
                                identificationBouton.setText("Deconnexion");
                                identificationBouton.setId(ComposantId.BTN_DECONNEXION);
                        } else {
                                identificationInfoHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
                                identificationBouton.setText("Identifiez vous...");
                                identificationBouton.setId(ComposantId.BTN_CONNEXION);
                        }
                }
                
        }
}