Rev 2670 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/**David Delon david.delon@clapas.net 2007*//** EtatConnexionVue.java : affichage information portant sur le statut de la connexion utilisateur*** 1: Le programme affiche le statut connecte si l'utilisateur s'est connecte precedemment, sinon s'affiche le statut deconnecte* 2: Le programme arme les actions liees a la connection ou a la deconnection* - Connection : affichage de la boite de connexion* - Deconnexion : appel du service de deconnexion, et appel de la re-initialisation de l'affichage pour le nouvel identifiant utilisateur obtenu (identifiant de session)*/package org.tela_botanica.client.vues;import java.util.Iterator;import java.util.List;import org.tela_botanica.client.CarnetEnLigneMediateur;import org.tela_botanica.client.i18n.Msg;import org.tela_botanica.client.modeles.objets.Configuration;import com.google.gwt.event.dom.client.ChangeEvent;import com.google.gwt.event.dom.client.ChangeHandler;import com.google.gwt.http.client.URL;import com.google.gwt.user.client.Window;import com.google.gwt.user.client.ui.HTML;import com.google.gwt.user.client.ui.ListBox;import com.gwtext.client.core.EventCallback;import com.gwtext.client.core.EventObject;import com.gwtext.client.core.Ext;import com.gwtext.client.core.ExtElement;import com.gwtext.client.widgets.Container;import com.gwtext.client.widgets.Panel;import com.gwtext.client.widgets.event.ContainerListenerAdapter;/*** Un indicateur d'etat de connexion** @author David Delon**/public class EtatConnexionVue extends Panel {/*** Médiateur associé à la vue*/private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;/*** Texte lié à la connexion.**/private HTML htmlEtatConnexion = new HTML();private String labelEtatConnexion = null;private ListBox listeLangues = null;/*** Ouh c'est pas beau, ça ! Mais avec Google Web Toolshit, ça* marche toujours mieux que quand on fait des trucs beaux :-)*/private String liens = "<div id=\"liensExt\">"+ "<a id=\"lienRemarques\" title=\""+Msg.get("adresser-remarque-probleme")+"\""+ " href=\"" + Configuration.getRemarquesBaseUrl() + "?lang=" + Msg.getLangue() + "&service=" + Configuration.getServiceContact()+ "&pageSource=" + URL.encodeQueryString(Window.Location.getHref()) + "\""+ " onClick=\"javascript:window.open(this.getAttribute('href'), 'Tela Botanica - Remarques', config='height=700, width=640, scrollbars=yes, resizable=yes'); return false;\""+ " target=\"_blank\""+ ">"+Msg.get("remarques")+"</a>"+ "<a href=\"#\" id=\"lienAide\">"+Msg.get("aide")+"</a>"+ "</div>" ;/*** Booleen indiquant si utilisateur est connecte**/public EtatConnexionVue(CarnetEnLigneMediateur cm) {carnetEnLigneMediateur=cm;this.setBodyBorder(false) ;this.setBorder(false) ;this.setId("panneau_etat_connexion");// Pas de word wraplabelEtatConnexion="";initialiserListeLangues();this.add(listeLangues);htmlEtatConnexion.setHTML(labelEtatConnexion+liens);this.add(htmlEtatConnexion);ajouterListeners();}private void initialiserListeLangues() {listeLangues = new ListBox();listeLangues.getElement().setId("liste_selection_langue");List<String> languesDispos = Msg.getLanguesDisponibles();int indexLangue = 0;for (Iterator<String> iterator = languesDispos.iterator(); iterator.hasNext();) {String langue = iterator.next();listeLangues.addItem(Msg.get("intitule-langue", langue), langue);if(langue.equals(Msg.getLangue())) {listeLangues.setSelectedIndex(indexLangue);}indexLangue++;}}private void ajouterListeners() {listeLangues.addChangeHandler(new ChangeHandler() {@Overridepublic void onChange(ChangeEvent event) {int indexLangue = listeLangues.getSelectedIndex();String urlCourante = Window.Location.getHref();String urlBase = urlCourante;if(urlBase.contains("?")) {urlBase = urlBase.substring(0, urlCourante.indexOf("?"));}if(urlBase.contains("#")) {urlBase = urlBase.replace("#", "");}String urlLangue = urlBase+"?lang="+listeLangues.getValue(indexLangue);Window.Location.replace(urlLangue);return;}});ExtElement lienAide = Ext.get("lienAide");if(lienAide != null){lienAide.removeAllListeners();lienAide.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {String aideUrl = Configuration.getAideBaseUrl() ;Window.open(aideUrl, "", "") ;}});}else{addListener(new ContainerListenerAdapter() {@Overridepublic void onAfterLayout(Container c) {ExtElement lienAide = Ext.get("lienAide");if(lienAide != null){lienAide.removeAllListeners();lienAide.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {String aideUrl = Configuration.getAideBaseUrl() ;Window.open(aideUrl, "", "") ;}});}}});}}/*** Affichage de l'etat de connexion* @param text* @param connecte*/public void setEtat(String identifiant, boolean connecte) {if(connecte) {String[] params = {identifiant};labelEtatConnexion = "<div id=\"etatConnexion\">"+Msg.get("connecte-en-tant-que", params)+" <a id=\"lienDeconnexion\" href=\"#\">("+Msg.get("deconnexion")+")</a>" ;labelEtatConnexion += "</div>" ;labelEtatConnexion += liens ;htmlEtatConnexion.setHTML(labelEtatConnexion);ExtElement lienDeco = Ext.get("lienDeconnexion");if(lienDeco != null){lienDeco.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {carnetEnLigneMediateur.deconnecterUtilisateur();}});}else{addListener(new ContainerListenerAdapter(){@Overridepublic void onAfterLayout(Container c){ExtElement lienDeco = Ext.get("etatConnexion");lienDeco.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {carnetEnLigneMediateur.deconnecterUtilisateur();setEtat(null, false);}});}});}}else{labelEtatConnexion = "<div id=\"etatConnexion\"> "+Msg.get("cel-utilisation")+", <a id=\"lienConnexion\" href=\"#\">"+Msg.get("identifiez-vous")+"</a> "+Msg.get("pour-transmettre-tela")+"</div>";labelEtatConnexion += liens ;htmlEtatConnexion.setHTML(labelEtatConnexion);ExtElement lienCo = Ext.get("etatConnexion");if(lienCo != null) {lienCo.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {carnetEnLigneMediateur.afficherDialogueConnexion();}});}else{addListener(new ContainerListenerAdapter() {@Overridepublic void onAfterLayout(Container c) {ExtElement lienCo = Ext.get("etatConnexion");lienCo.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {carnetEnLigneMediateur.afficherDialogueConnexion();}});}});}}ExtElement lienAide = Ext.get("lienAide");if(lienAide != null){lienAide.removeAllListeners();lienAide.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {String aideUrl = Configuration.getAideBaseUrl() ;Window.open(aideUrl, "", "") ;}});}else{addListener(new ContainerListenerAdapter() {@Overridepublic void onAfterLayout(Container c) {ExtElement lienAide = Ext.get("lienAide");if(lienAide != null){lienAide.removeAllListeners();lienAide.addListener("click", new EventCallback() {@Overridepublic void execute(EventObject e) {String aideUrl = Configuration.getAideBaseUrl() ;Window.open(aideUrl, "", "") ;}});}}});}}}/* +--Fin du code ---------------------------------------------------------------------------------------+* $Log$* Revision 1.1 2008-11-13 11:27:05 ddelon* Reecriture gwt-ext** Revision 1.1 2008-06-09 14:19:37 ddelon* Initialisation observation** Revision 1.2 2008-04-28 13:10:44 ddelon* Integration MyGwt** Revision 1.1 2008-01-02 21:26:04 ddelon* mise en place mygwt** Revision 1.6 2007-12-22 14:48:53 ddelon* Documentation et refactorisation** Revision 1.5 2007-09-17 19:25:34 ddelon* Documentation***/