New file |
0,0 → 1,326 |
/** |
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 |
* |
* |
*/ |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |