Rev 2675 | Go to most recent revision | 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 wrap
labelEtatConnexion="";
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() {
@Override
public 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() {
@Override
public void execute(EventObject e) {
String aideUrl = Configuration.getAideBaseUrl() ;
Window.open(aideUrl, "", "") ;
}
});
}
else
{
addListener(new ContainerListenerAdapter() {
@Override
public void onAfterLayout(Container c) {
ExtElement lienAide = Ext.get("lienAide");
if(lienAide != null)
{
lienAide.removeAllListeners();
lienAide.addListener("click", new EventCallback() {
@Override
public 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() {
@Override
public void execute(EventObject e) {
carnetEnLigneMediateur.deconnecterUtilisateur();
}
});
}
else
{
addListener(new ContainerListenerAdapter()
{
@Override
public void onAfterLayout(Container c)
{
ExtElement lienDeco = Ext.get("etatConnexion");
lienDeco.addListener("click", new EventCallback() {
@Override
public 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() {
@Override
public void execute(EventObject e) {
carnetEnLigneMediateur.afficherDialogueConnexion();
}
});
}
else
{
addListener(new ContainerListenerAdapter() {
@Override
public void onAfterLayout(Container c) {
ExtElement lienCo = Ext.get("etatConnexion");
lienCo.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
carnetEnLigneMediateur.afficherDialogueConnexion();
}
});
}
});
}
}
ExtElement lienAide = Ext.get("lienAide");
if(lienAide != null)
{
lienAide.removeAllListeners();
lienAide.addListener("click", new EventCallback() {
@Override
public void execute(EventObject e) {
String aideUrl = Configuration.getAideBaseUrl() ;
Window.open(aideUrl, "", "") ;
}
});
}
else
{
addListener(new ContainerListenerAdapter() {
@Override
public void onAfterLayout(Container c) {
ExtElement lienAide = Ext.get("lienAide");
if(lienAide != null)
{
lienAide.removeAllListeners();
lienAide.addListener("click", new EventCallback() {
@Override
public 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
*
*
*/