Subversion Repositories eFlore/Archives.cel-v1

Rev

Rev 21 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
15 ddelon 1
/**
21 ddelon 2
 David Delon david.delon@clapas.net 2007
3
 
15 ddelon 4
 Ce logiciel est régi par la licence CeCILL soumise au droit français et
5
 respectant les principes de diffusion des logiciels libres. Vous pouvez
6
 utiliser, modifier et/ou redistribuer ce programme sous les conditions
7
 de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
8
 sur le site "http://www.cecill.info".
9
 En contrepartie de l'accessibilité au code source et des droits de copie,
10
 de modification et de redistribution accordés par cette licence, il n'est
11
 offert aux utilisateurs qu'une garantie limitée.  Pour les mêmes raisons,
12
 seule une responsabilité restreinte pèse sur l'auteur du programme,  le
13
 titulaire des droits patrimoniaux et les concédants successifs.
14
 
15
 A cet égard  l'attention de l'utilisateur est attirée sur les risques
16
 associés au chargement,  à l'utilisation,  à la modification et/ou au
17
 développement et à la reproduction du logiciel par l'utilisateur étant
18
 donné sa spécificité de logiciel libre, qui peut le rendre complexe à
19
 manipuler et qui le réserve donc à des développeurs et des professionnels
20
 avertis possédant  des  connaissances  informatiques approfondies.  Les
21
 utilisateurs sont donc invités à charger  et  tester  l'adéquation  du
22
 logiciel à leurs besoins dans des conditions permettant d'assurer la
23
 sécurité de leurs systèmes et ou de leurs données et, plus généralement,
24
 à l'utiliser et l'exploiter dans les mêmes conditions de sécurité.
25
 
26
 Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
27
 pris connaissance de la licence CeCILL, et que vous en avez accepté les
28
 termes.
29
 
18 ddelon 30
 */
31
 
32
/*
21 ddelon 33
 * LoginDialog.java  (DialogBox)
34
 *
35
 * Cas d'utilisation :
36
 * Dialogue de validation de l'identification utilisateur
37
 *
38
 * 1 : L'utilisateur saisit son identifiant (e-mail) et son mot de passe
39
 * 2 : Le dialogue contrôle auprès du système distant la validité des informations saisies
40
 * 3 : Le dialogue transmet au système local les informations d'identification
41
 * 		3a : Le dialogue informe l'utilisateur que les elements d'identification ne sont pas valide : retour au point 1, ou passe au point 4.
42
 * 4 : Clôture du dialogue
43
 * 5 : Appel du dialogue d'importation
18 ddelon 44
 */
15 ddelon 45
 
14 ddelon 46
package org.tela_botanica.client;
47
 
48
 
49
import com.google.gwt.json.client.JSONArray;
50
import com.google.gwt.json.client.JSONBoolean;
51
import com.google.gwt.json.client.JSONParser;
52
import com.google.gwt.json.client.JSONValue;
53
import com.google.gwt.user.client.HTTPRequest;
54
import com.google.gwt.user.client.ResponseTextHandler;
21 ddelon 55
import com.google.gwt.user.client.Window;
14 ddelon 56
import com.google.gwt.user.client.ui.ClickListener;
57
import com.google.gwt.user.client.ui.DialogBox;
58
import com.google.gwt.user.client.ui.Grid;
59
import com.google.gwt.user.client.ui.HTML;
60
import com.google.gwt.user.client.ui.KeyboardListener;
61
import com.google.gwt.user.client.ui.PasswordTextBox;
62
import com.google.gwt.user.client.ui.TextBox;
63
import com.google.gwt.user.client.ui.VerticalPanel;
64
import com.google.gwt.user.client.ui.Widget;
65
 
66
public class LoginDialog extends DialogBox {
67
 
68
 
21 ddelon 69
  private Mediator mediator=null;
14 ddelon 70
  private TextBox login = new TextBox();
71
  private PasswordTextBox  password = new PasswordTextBox();
21 ddelon 72
  private Grid inner = new Grid(4,2);
14 ddelon 73
 
74
 
75
  public LoginDialog(final Mediator med) {
76
 
77
    setText("Connexion");
78
 
79
    mediator=med;
80
 
81
    VerticalPanel outer = new VerticalPanel();
82
 
21 ddelon 83
/*
84
 *  E-Mail : Zone_saisie_email
85
 *  Mot-de-passe : Zone_saisie_mot_de_passe
86
 *  Message d'information
87
 *  Bouton_Ok   Bouton_Annuler
88
 */
14 ddelon 89
 
90
 
91
 
21 ddelon 92
// Validation bouton
14 ddelon 93
 
94
	HTML okButton=new HTML("Ok");
95
	okButton.setStyleName("html_button");
96
	okButton.addClickListener(
97
	    	new ClickListener() {
98
	    		public void onClick(Widget sender) {
21 ddelon 99
					loginFromService();
14 ddelon 100
	    		}
101
	     	}
102
	);
103
 
104
 
21 ddelon 105
// Annulation
14 ddelon 106
 
107
	HTML cancelButton=new HTML("Annuler");
108
	cancelButton.setStyleName("html_button");
109
	cancelButton.addClickListener(
110
	    	new ClickListener() {
111
	    		public void onClick(Widget sender) {
112
					        hide();
113
	    		}
114
	     	}
115
	);
116
 
21 ddelon 117
//Validation utilisateur sans utilisation des boutons :
118
 
14 ddelon 119
 
21 ddelon 120
  login.addKeyboardListener( new KeyboardListener() {
14 ddelon 121
 
122
		  public void onKeyDown(Widget arg0, char arg1, int arg2) {
123
			  if(arg1 == KEY_ENTER)
124
			    {
21 ddelon 125
				  loginFromService();
14 ddelon 126
			    }
127
		  }
128
 
21 ddelon 129
		  public void onKeyUp(Widget arg0, char arg1, int arg2) { }
130
		  public void onKeyPress(Widget arg0, char arg1, int arg2) { }
14 ddelon 131
 
132
		  }
133
  );
134
 
135
 
21 ddelon 136
// Validation utilisateur sans utilisation des boutons :
137
 
138
  password.addKeyboardListener( new KeyboardListener() {
14 ddelon 139
 
140
		  public void onKeyDown(Widget arg0, char arg1, int arg2) {
141
 
142
			  if(arg1 == KEY_ENTER)
143
			    {
21 ddelon 144
				  loginFromService();
14 ddelon 145
			    }
146
		  }
147
 
21 ddelon 148
		  public void onKeyUp(Widget arg0, char arg1, int arg2) { }
149
		  public void onKeyPress(Widget arg0, char arg1, int arg2) { }
14 ddelon 150
 
151
		  }
152
  );
21 ddelon 153
 
154
 
155
     inner.setHTML(0,0,"E-mail:");
156
	 inner.setWidget(0,1,login);
157
	 inner.setHTML(1,0,"Mot de passe:           ");
158
	 inner.setWidget(1,1,password);
159
	 inner.setWidget(3,0,okButton);
160
	 inner.setWidget(3,1,cancelButton);
14 ddelon 161
 
21 ddelon 162
	 inner.setCellPadding(10);
163
     outer.add(inner);
14 ddelon 164
	 setWidget(outer);
165
 
166
  }
167
 
168
 
169
 
21 ddelon 170
  /**
171
   * Appel du service d'identification et positionnement de l'état de connection en fonction du résultat.
172
   *
173
   * @param login : identifiant saisi
174
   * @param password : mot de passe saisi
175
   *
176
   */
177
 
178
	private void loginFromService() {
179
 
180
		final String login=this.login.getText();
181
		String password=this.password.getText();
14 ddelon 182
 
21 ddelon 183
		HTTPRequest.asyncGet(mediator.getServiceBaseUrl() + "/User/" + login + "/" + password ,
14 ddelon 184
				new ResponseTextHandler() {
185
 
186
					public void onCompletion(String str) {
21 ddelon 187
 
14 ddelon 188
						JSONValue jsonValue = JSONParser.parse(str);
189
						JSONArray jsonArray;
190
						if ((jsonArray = jsonValue.isArray()) != null) {
191
								mediator.setConnected(((JSONBoolean) jsonArray.get(1)).booleanValue());
192
						}
21 ddelon 193
 
14 ddelon 194
						if (mediator.getConnected()) {
21 ddelon 195
							mediator.setUser(login);
196
							hide();
197
							ImportDialog importDialog = new ImportDialog(mediator);
198
 
199
		    				// Position it roughly in the middle of the screen.
200
		    				int left = (Window.getClientWidth() - 512) / 2;
201
		    				int top = (Window.getClientHeight() - 256) / 2;
202
		    				importDialog.setPopupPosition(left, top);
203
		    				importDialog.show();
14 ddelon 204
						}
21 ddelon 205
						else {
206
							inner.setHTML(2,0,"Identification incorrecte !");
207
						}
14 ddelon 208
					}
209
				});
210
 
211
	}
212
 
213
 
21 ddelon 214
 
215
 
216
 
14 ddelon 217
  public boolean onKeyDownPreview(char key, int modifiers) {
218
	    // Use the popup's key preview hooks to close the dialog when either
219
	    //  escape is pressed.
220
	    switch (key) {
221
	      case KeyboardListener.KEY_ESCAPE:
222
	        hide();
223
	        break;
224
	    }
225
 
226
	    return true;
227
  }
228
 
229
 
230
 
231
}
15 ddelon 232
 
233
/* +--Fin du code ---------------------------------------------------------------------------------------+
17 ddelon 234
* $Log$
23 ddelon 235
* Revision 1.8  2007-05-21 18:14:06  ddelon
236
* Gestion importation releve locaux
237
*
21 ddelon 238
* Revision 1.7  2007-05-21 11:47:30  ddelon
239
* meta cvs
240
*
20 ddelon 241
* Revision 1.6  2007-05-21 11:39:48  ddelon
242
* meta cvs
243
*
19 ddelon 244
* Revision 1.5  2007-05-21 11:39:12  ddelon
245
* meta cvs
246
*
18 ddelon 247
* Revision 1.4  2007-05-21 11:37:35  ddelon
248
* meta cvs
249
*
17 ddelon 250
* Revision 1.3  2007-05-21 11:36:51  ddelon
251
* meta cvs
252
*
15 ddelon 253
*/