Rev 28 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/**
David Delon david.delon@clapas.net 2007
*/
/*
* ConnexionView.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;
import net.mygwt.ui.client.widget.WidgetContainer;
import com.google.gwt.json.client.JSONArray;
import com.google.gwt.json.client.JSONBoolean;
import com.google.gwt.json.client.JSONParser;
import com.google.gwt.json.client.JSONString;
import com.google.gwt.json.client.JSONValue;
import com.google.gwt.user.client.HTTPRequest;
import com.google.gwt.user.client.ResponseTextHandler;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.HorizontalPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.Widget;
public class ConnexionView {
private Mediator mediator=null;
private String user =null;
private HTML signLabel = new HTML() ;
private String serviceBaseUrl = null;
public ConnexionView(final Mediator med) {
mediator=med;
user=mediator.getUser();
serviceBaseUrl = mediator.getServiceBaseUrl();
if (!mediator.getConnected()) {
signLabel.setHTML("Utilisez ce carnet en ligne pour saisir vos observations, <u>identifiez-vous</u> pour les transmettre à Tela Botanica ");
}
else {
signLabel.setText(user+ " (deconnexion)");
}
HorizontalPanel outer = new HorizontalPanel();
HorizontalPanel inner = new HorizontalPanel();
outer.setHorizontalAlignment(HorizontalPanel.ALIGN_RIGHT);
inner.add(signLabel);
//inner.add(new HTML("<b>Carnet en ligne</b>"));
inner.setSpacing(3);
outer.add(inner);
signLabel.addClickListener(
new ClickListener() {
public void onClick(Widget sender) {
// Non connecte ? Lien vers boite de connection
if (!mediator.getConnected()) {
LoginDialog loginDialog = new LoginDialog(med);
// Position it roughly in the middle of the screen.
int left = (Window.getClientWidth() - 512) / 2;
int top = (Window.getClientHeight() - 256) / 2;
loginDialog.setPopupPosition(left, top);
loginDialog.show();
}
else {
// Deja Connecte : lancement deconnexion sur selection de l'action
HTTPRequest.asyncGet(serviceBaseUrl + "/User/" + user ,
new ResponseTextHandler() {
public void onCompletion(String str) {
JSONValue jsonValue = JSONParser.parse(str);
JSONArray jsonArray;
if ((jsonArray = jsonValue.isArray()) != null) {
user = Util.toCelString(((JSONString) jsonArray.get(0)).toString()); // Identifiant utilisateur : identifant de session
mediator.setConnected(((JSONBoolean) jsonArray.get(1)).booleanValue());
}
if (!mediator.getConnected()) { // La deconnexion a ete accepte :
mediator.onLogoff(user);
}
}
});
}
}
}
);
WidgetContainer north=mediator.getNorthContainer();
north.add(outer);
}
public Label getSignLabel() {
return signLabel;
}
}
/* +--Fin du code ---------------------------------------------------------------------------------------+
* $Log$
* 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
*
*
*/