Subversion Repositories eFlore/Applications.coel

Rev

Rev 942 | Rev 1012 | Go to most recent revision | 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.RegistreId;
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.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.ButtonEvent;
import com.extjs.gxt.ui.client.event.MenuEvent;
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;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;

public class EnteteVue extends LayoutContainer implements Rafraichissable {

        private Mediateur mediateur = null;
        private Constantes i18nC = null;
        private ButtonBar barreBoutons = null;
        private Button identificationBouton = null;
        private String identificationInfoTpl = null;
        private HtmlContainer identificationConteneurHtml = null;
        
        public EnteteVue(Mediateur mediateurCourant) {
                mediateur = mediateurCourant;
                i18nC = mediateur.i18nC;
                setLayout(new RowLayout(Orientation.HORIZONTAL));
                setId(ComposantId.PANNEAU_ENTETE);
                
                HtmlContainer titreConteneurHtml = new HtmlContainer();
                String titreHtml = "<div id='"+ComposantId.DIV_TITRE+"'>{0}</div>";
                titreConteneurHtml.setHtml(Format.substitute(titreHtml, i18nC.appliNom()));
                
                // Création des écouteurs
                SelectionListener<ButtonEvent> boutonEcouteur = new SelectionListener<ButtonEvent>() {  
                        public void componentSelected(ButtonEvent be) {  
                                Button btn = (Button) be.getComponent();
                                
                                String message = Format.substitute("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();
                                        Utilisateur utilisateurCourant = (Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT);
                                        message = Format.substitute("Déconnexion de l'utilisateur «{0}» en cours...", utilisateurCourant.getNomComplet());
                                } else if (btn.getId().equals(ComposantId.BTN_APPLIS)) {
                                        btn.getMenu().show(btn);
                                        message = "";
                                }
                                
                                if (!message.equals("")) {
                                        Info.display(Mediateur.i18nC.chargement(), message);
                                }
                        }  
                };
                
                barreBoutons = new ButtonBar();
                barreBoutons.setAlignment(Style.HorizontalAlignment.RIGHT);
                
                identificationConteneurHtml = new HtmlContainer();
                identificationInfoTpl = "<div id='"+ComposantId.DIV_IDENTIFICATION+"'>{0}</div>";
                identificationConteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
                barreBoutons.add(identificationConteneurHtml);
                
                identificationBouton = new Button("Identifiez vous...", boutonEcouteur);
                identificationBouton.setId(ComposantId.BTN_CONNEXION);
                barreBoutons.add(identificationBouton);
                
                Button parametresBouton = new Button("À propos", boutonEcouteur);
                parametresBouton.setId(ComposantId.BTN_PARAMETRES);
                parametresBouton.setIcon(Images.ICONES.engrenages());
                barreBoutons.add(parametresBouton);
                
                Button aideBouton = new Button("Aide", boutonEcouteur);
                aideBouton.setId(ComposantId.BTN_AIDE);
                aideBouton.setIcon(Images.ICONES.aide());
                barreBoutons.add(aideBouton);
                
                SplitButton feedbackBouton = new SplitButton("Retour d'experience");
                feedbackBouton.setId(ComposantId.BTN_FEEDBACK);
                feedbackBouton.addSelectionListener(boutonEcouteur);
                
                Menu menuFeedback = new Menu();
                MenuItem menuBogue = new MenuItem("Bogues et fonctionnalités");
                menuBogue.addSelectionListener(new SelectionListener<MenuEvent>() {  
                        @Override
                        public void componentSelected(MenuEvent mEvent) {  
                                Menu me = (Menu) mEvent.getComponent();
                                MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BOGUE);
                                Info.display(Mediateur.i18nC.chargement(), "Ouverture du lien externe «{0}» en cours...", mi.getText());
                                ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_BOGUE);
                        }  
                });
                menuBogue.setId(ComposantId.MENU_BOGUE);
                menuBogue.setIcon(Images.ICONES.bogue());
                menuFeedback.add(menuBogue);
                MenuItem menuCommentaire = new MenuItem("Commentaires");
                menuCommentaire.addSelectionListener(new SelectionListener<MenuEvent>() {  
                        @Override
                        public void componentSelected(MenuEvent mEvent) {  
                                Menu me = (Menu) mEvent.getComponent();
                                MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_COMMENTAIRE);
                                Info.display(Mediateur.i18nC.chargement(), "Ouverture du lien externe «{0}» en cours...", mi.getText());
                                ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_COMMENTAIRE);
                        }  
                });
                menuCommentaire.setId(ComposantId.MENU_COMMENTAIRE);
                menuCommentaire.setIcon(Images.ICONES.commentaire());
                menuFeedback.add(menuCommentaire);
                
                feedbackBouton.setMenu(menuFeedback);
                feedbackBouton.setIcon(Images.ICONES.flecheDedansDehors());
                barreBoutons.add(feedbackBouton);
                
                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");
                menuCel.addSelectionListener(new SelectionListener<MenuEvent>() {  
                        @Override
                        public void componentSelected(MenuEvent mEvent) {  
                                Menu me = (Menu) mEvent.getComponent();
                                MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_CEL);
                                Info.display(Mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
                                ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_CEL);
                        }  
                });
                menuCel.setId(ComposantId.MENU_CEL);
                menuCel.setIcon(Images.ICONES.images());
                menu.add(menuCel);
                MenuItem menuBel = new MenuItem("Biblio en ligne");
                menuBel.addSelectionListener(new SelectionListener<MenuEvent>() {  
                        @Override
                        public void componentSelected(MenuEvent mEvent) {  
                                Menu me = (Menu) mEvent.getComponent();
                                MenuItem mi = (MenuItem) me.getItemByItemId(ComposantId.MENU_BEL);
                                Info.display(Mediateur.i18nC.chargement(), "Ouverture de l'application «{0}» en cours...", mi.getText());
                                ((Mediateur) Registry.get(RegistreId.MEDIATEUR)).ouvrirUrlExterne(ComposantId.MENU_BEL);
                        }  
                });
                menuBel.setId(ComposantId.MENU_BEL);
                menuBel.setIcon(Images.ICONES.livreOuvert());
                menu.add(menuBel);
                
                applisBouton.setMenu(menu);
                applisBouton.setIcon(Images.ICONES.flecheBascule());
                barreBoutons.add(applisBouton);
                
                add(titreConteneurHtml, new RowData(.20, 1));
                add(barreBoutons, new RowData(.8, 1)); 
        }

        public void rafraichir(Object nouvellesDonnees) {
                if (nouvellesDonnees instanceof Information) {
                        Information info = (Information) nouvellesDonnees;
                        if (info.getType().equals("maj_utilisateur")) {
                                Utilisateur utilisateur = ((Utilisateur) Registry.get(RegistreId.UTILISATEUR_COURANT));
                                if (utilisateur.isIdentifie()) {
                                        if (utilisateur.existeDansAnnuaire())   {
                                                utilisateur.majUtilisateurInfoAnnuaire();
                                        }
                                        identificationConteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Bienvenue : "+utilisateur.getNomComplet())));
                                        identificationBouton.setText("Deconnexion");
                                        identificationBouton.setIcon(Images.ICONES.deconnexion());
                                        identificationBouton.setId(ComposantId.BTN_DECONNEXION);
                                } else {
                                        identificationConteneurHtml.setHtml(Format.substitute(identificationInfoTpl, (new Params()).add("Mode anonyme")));
                                        identificationBouton.setText("Identifiez vous...");
                                        identificationBouton.setIcon(Images.ICONES.connexion());
                                        identificationBouton.setId(ComposantId.BTN_CONNEXION);
                                }
                        }
                } else if (nouvellesDonnees instanceof Utilisateur ) {
                        
                }       else    {       
                        GWT.log("Ce type d'objet n'est pas pris en compte par la méthode rafraichir de la classe "+getClass(), null);
                }
                layout();
        }
}