Subversion Repositories eFlore/Archives.cel-v1

Compare Revisions

Ignore whitespace Rev 13 → Rev 14

/trunk/src/org/tela_botanica/client/LoginDialog.java
New file
0,0 → 1,201
/*
* Copyright 2006 Google Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*/
package org.tela_botanica.client;
 
 
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.ui.ClickListener;
import com.google.gwt.user.client.ui.DialogBox;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.KeyboardListener;
import com.google.gwt.user.client.ui.PasswordTextBox;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
 
public class LoginDialog extends DialogBox {
 
 
Mediator mediator=null;
 
private String serviceBaseUrl = null;
private TextBox login = new TextBox();
private PasswordTextBox password = new PasswordTextBox();
private String user=null;
public LoginDialog(final Mediator med) {
setText("Connexion");
 
mediator=med;
 
mediator.registerLoginDialog(this);
 
user=mediator.getUser();
serviceBaseUrl = mediator.getServiceBaseUrl();
 
VerticalPanel outer = new VerticalPanel();
 
Grid inner = new Grid(3,2);
HTML textLogin = new HTML("E-mail:");
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();
}
}
);
 
HTML cancelButton=new HTML("Annuler");
cancelButton.setStyleName("html_button");
cancelButton.addClickListener(
new ClickListener() {
public void onClick(Widget sender) {
hide();
}
}
);
 
login.addKeyboardListener( new KeyboardListener() {
 
public void onKeyDown(Widget arg0, char arg1, int arg2) {
if(arg1 == KEY_ENTER)
{
loginFromService(login.getText(),password.getText());
hide();
}
 
}
public void onKeyUp(Widget arg0, char arg1, int arg2) {
}
 
public void onKeyPress(Widget arg0, char arg1, int arg2) {
}
}
);
 
password.addKeyboardListener( new KeyboardListener() {
 
public void onKeyDown(Widget arg0, char arg1, int arg2) {
if(arg1 == KEY_ENTER)
{
loginFromService(login.getText(),password.getText());
hide();
}
 
}
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.setCellPadding(10);
outer.add(inner);
setWidget(outer);
}
/**
*
*/
private void loginFromService(String login, String password) {
 
 
HTTPRequest.asyncGet(serviceBaseUrl + "/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);
}
}
});
 
}
public boolean onKeyDownPreview(char key, int modifiers) {
// Use the popup's key preview hooks to close the dialog when either
// escape is pressed.
switch (key) {
case KeyboardListener.KEY_ESCAPE:
hide();
break;
}
 
return true;
}
 
 
}