1,4 → 1,6 |
/** |
David Delon david.delon@clapas.net 2007 |
|
Ce logiciel est régi par la licence CeCILL soumise au droit français et |
respectant les principes de diffusion des logiciels libres. Vous pouvez |
utiliser, modifier et/ou redistribuer ce programme sous les conditions |
28,12 → 30,19 |
*/ |
|
/* |
$Id$ |
|
* LoginDialog.java (DialogBox) |
* |
* Cas d'utilisation : |
* Dialogue de validation de l'identification utilisateur |
* |
* 1 : L'utilisateur saisit son identifiant (e-mail) et son mot de passe |
* 2 : Le dialogue contrôle auprès du système distant la validité des informations saisies |
* 3 : Le dialogue transmet au système local les informations d'identification |
* 3a : Le dialogue informe l'utilisateur que les elements d'identification ne sont pas valide : retour au point 1, ou passe au point 4. |
* 4 : Clôture du dialogue |
* 5 : Appel du dialogue d'importation |
*/ |
|
|
|
package org.tela_botanica.client; |
|
|
40,10 → 49,10 |
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.DialogBox; |
import com.google.gwt.user.client.ui.Grid; |
57,14 → 66,11 |
public class LoginDialog extends DialogBox { |
|
|
Mediator mediator=null; |
|
private String serviceBaseUrl = null; |
private Mediator mediator=null; |
private TextBox login = new TextBox(); |
private PasswordTextBox password = new PasswordTextBox(); |
private String user=null; |
private Grid inner = new Grid(4,2); |
|
|
|
public LoginDialog(final Mediator med) { |
|
71,38 → 77,33 |
setText("Connexion"); |
|
mediator=med; |
|
mediator.registerLoginDialog(this); |
|
user=mediator.getUser(); |
|
serviceBaseUrl = mediator.getServiceBaseUrl(); |
|
|
VerticalPanel outer = new VerticalPanel(); |
|
Grid inner = new Grid(3,2); |
/* |
* E-Mail : Zone_saisie_email |
* Mot-de-passe : Zone_saisie_mot_de_passe |
* Message d'information |
* Bouton_Ok Bouton_Annuler |
*/ |
|
|
|
HTML textLogin = new HTML("E-mail:"); |
|
// Validation bouton |
|
HTML textPassword = new HTML("Mot de passe:"); |
|
|
HTML okButton=new HTML("Ok"); |
okButton.setStyleName("html_button"); |
okButton.addClickListener( |
new ClickListener() { |
public void onClick(Widget sender) { |
loginFromService(login.getText(),password.getText()); |
hide(); |
loginFromService(); |
} |
} |
); |
|
|
// Annulation |
|
HTML cancelButton=new HTML("Annuler"); |
cancelButton.setStyleName("html_button"); |
114,91 → 115,97 |
} |
); |
|
//Validation utilisateur sans utilisation des boutons : |
|
|
login.addKeyboardListener( new KeyboardListener() { |
login.addKeyboardListener( new KeyboardListener() { |
|
public void onKeyDown(Widget arg0, char arg1, int arg2) { |
|
|
if(arg1 == KEY_ENTER) |
{ |
loginFromService(login.getText(),password.getText()); |
hide(); |
loginFromService(); |
} |
|
} |
|
public void onKeyUp(Widget arg0, char arg1, int arg2) { |
} |
|
public void onKeyPress(Widget arg0, char arg1, int arg2) { |
} |
public void onKeyUp(Widget arg0, char arg1, int arg2) { } |
public void onKeyPress(Widget arg0, char arg1, int arg2) { } |
|
} |
); |
|
|
|
password.addKeyboardListener( new KeyboardListener() { |
// Validation utilisateur sans utilisation des boutons : |
|
password.addKeyboardListener( new KeyboardListener() { |
|
public void onKeyDown(Widget arg0, char arg1, int arg2) { |
|
|
if(arg1 == KEY_ENTER) |
{ |
loginFromService(login.getText(),password.getText()); |
hide(); |
loginFromService(); |
} |
|
} |
|
public void onKeyUp(Widget arg0, char arg1, int arg2) { |
} |
|
public void onKeyPress(Widget arg0, char arg1, int arg2) { |
} |
public void onKeyUp(Widget arg0, char arg1, int arg2) { } |
public void onKeyPress(Widget arg0, char arg1, int arg2) { } |
|
} |
); |
|
inner.setWidget(0,0,textLogin); |
inner.setWidget(0,1,login); |
inner.setWidget(1,0,textPassword); |
inner.setWidget(1,1,password); |
inner.setWidget(2,0,okButton); |
inner.setWidget(2,1,cancelButton); |
|
|
inner.setHTML(0,0,"E-mail:"); |
inner.setWidget(0,1,login); |
inner.setHTML(1,0,"Mot de passe: "); |
inner.setWidget(1,1,password); |
inner.setWidget(3,0,okButton); |
inner.setWidget(3,1,cancelButton); |
|
inner.setCellPadding(10); |
outer.add(inner); |
|
inner.setCellPadding(10); |
outer.add(inner); |
setWidget(outer); |
|
} |
|
|
/** |
* |
*/ |
|
private void loginFromService(String login, String password) { |
|
/** |
* Appel du service d'identification et positionnement de l'état de connection en fonction du résultat. |
* |
* @param login : identifiant saisi |
* @param password : mot de passe saisi |
* |
*/ |
|
private void loginFromService() { |
|
final String login=this.login.getText(); |
String password=this.password.getText(); |
|
HTTPRequest.asyncGet(serviceBaseUrl + "/User/" + login + "/" + password , |
HTTPRequest.asyncGet(mediator.getServiceBaseUrl() + "/User/" + login + "/" + password , |
new ResponseTextHandler() { |
|
public void onCompletion(String str) { |
|
|
|
JSONValue jsonValue = JSONParser.parse(str); |
JSONArray jsonArray; |
if ((jsonArray = jsonValue.isArray()) != null) { |
user = ((JSONString) jsonArray.get(0)).stringValue(); |
mediator.setConnected(((JSONBoolean) jsonArray.get(1)).booleanValue()); |
} |
|
|
if (mediator.getConnected()) { |
mediator.onLogin(user); |
mediator.setUser(login); |
hide(); |
ImportDialog importDialog = new ImportDialog(mediator); |
|
// Position it roughly in the middle of the screen. |
int left = (Window.getClientWidth() - 512) / 2; |
int top = (Window.getClientHeight() - 256) / 2; |
importDialog.setPopupPosition(left, top); |
importDialog.show(); |
} |
else { |
inner.setHTML(2,0,"Identification incorrecte !"); |
} |
} |
}); |
|
205,6 → 212,9 |
} |
|
|
|
|
|
public boolean onKeyDownPreview(char key, int modifiers) { |
// Use the popup's key preview hooks to close the dialog when either |
// escape is pressed. |
223,6 → 233,9 |
|
/* +--Fin du code ---------------------------------------------------------------------------------------+ |
* $Log$ |
* Revision 1.7 2007-05-21 11:47:30 ddelon |
* meta cvs |
* |
* Revision 1.6 2007-05-21 11:39:48 ddelon |
* meta cvs |
* |