New file |
0,0 → 1,141 |
/** |
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 Label signLabel = new Label() ; |
|
private String serviceBaseUrl = null; |
|
public ConnexionView(final Mediator med) { |
|
mediator=med; |
user=mediator.getUser(); |
|
serviceBaseUrl = mediator.getServiceBaseUrl(); |
|
if (!mediator.getConnected()) { |
signLabel.setText("Connexion"); |
} |
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.6 2007-12-22 14:48:53 ddelon |
* Documentation et refactorisation |
* |
* Revision 1.5 2007-09-17 19:25:34 ddelon |
* Documentation |
* |
* |
*/ |