Subversion Repositories eFlore/Archives.cel-v1

Rev

Rev 20 | Rev 23 | 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
    mediator.registerLoginDialog(this);
81
 
82
    VerticalPanel outer = new VerticalPanel();
83
 
21 ddelon 84
/*
85
 *  E-Mail : Zone_saisie_email
86
 *  Mot-de-passe : Zone_saisie_mot_de_passe
87
 *  Message d'information
88
 *  Bouton_Ok   Bouton_Annuler
89
 */
14 ddelon 90
 
91
 
92
 
21 ddelon 93
// Validation bouton
14 ddelon 94
 
95
	HTML okButton=new HTML("Ok");
96
	okButton.setStyleName("html_button");
97
	okButton.addClickListener(
98
	    	new ClickListener() {
99
	    		public void onClick(Widget sender) {
21 ddelon 100
					loginFromService();
14 ddelon 101
	    		}
102
	     	}
103
	);
104
 
105
 
21 ddelon 106
// Annulation
14 ddelon 107
 
108
	HTML cancelButton=new HTML("Annuler");
109
	cancelButton.setStyleName("html_button");
110
	cancelButton.addClickListener(
111
	    	new ClickListener() {
112
	    		public void onClick(Widget sender) {
113
					        hide();
114
	    		}
115
	     	}
116
	);
117
 
21 ddelon 118
//Validation utilisateur sans utilisation des boutons :
119
 
14 ddelon 120
 
21 ddelon 121
  login.addKeyboardListener( new KeyboardListener() {
14 ddelon 122
 
123
		  public void onKeyDown(Widget arg0, char arg1, int arg2) {
124
			  if(arg1 == KEY_ENTER)
125
			    {
21 ddelon 126
				  loginFromService();
14 ddelon 127
			    }
128
		  }
129
 
21 ddelon 130
		  public void onKeyUp(Widget arg0, char arg1, int arg2) { }
131
		  public void onKeyPress(Widget arg0, char arg1, int arg2) { }
14 ddelon 132
 
133
		  }
134
  );
135
 
136
 
21 ddelon 137
// Validation utilisateur sans utilisation des boutons :
138
 
139
  password.addKeyboardListener( new KeyboardListener() {
14 ddelon 140
 
141
		  public void onKeyDown(Widget arg0, char arg1, int arg2) {
142
 
143
			  if(arg1 == KEY_ENTER)
144
			    {
21 ddelon 145
				  loginFromService();
14 ddelon 146
			    }
147
		  }
148
 
21 ddelon 149
		  public void onKeyUp(Widget arg0, char arg1, int arg2) { }
150
		  public void onKeyPress(Widget arg0, char arg1, int arg2) { }
14 ddelon 151
 
152
		  }
153
  );
21 ddelon 154
 
155
 
156
     inner.setHTML(0,0,"E-mail:");
157
	 inner.setWidget(0,1,login);
158
	 inner.setHTML(1,0,"Mot de passe:           ");
159
	 inner.setWidget(1,1,password);
160
	 inner.setWidget(3,0,okButton);
161
	 inner.setWidget(3,1,cancelButton);
14 ddelon 162
 
21 ddelon 163
	 inner.setCellPadding(10);
164
     outer.add(inner);
14 ddelon 165
	 setWidget(outer);
166
 
167
  }
168
 
169
 
170
 
21 ddelon 171
  /**
172
   * Appel du service d'identification et positionnement de l'état de connection en fonction du résultat.
173
   *
174
   * @param login : identifiant saisi
175
   * @param password : mot de passe saisi
176
   *
177
   */
178
 
179
	private void loginFromService() {
180
 
181
		final String login=this.login.getText();
182
		String password=this.password.getText();
14 ddelon 183
 
21 ddelon 184
		HTTPRequest.asyncGet(mediator.getServiceBaseUrl() + "/User/" + login + "/" + password ,
14 ddelon 185
				new ResponseTextHandler() {
186
 
187
					public void onCompletion(String str) {
21 ddelon 188
 
14 ddelon 189
						JSONValue jsonValue = JSONParser.parse(str);
190
						JSONArray jsonArray;
191
						if ((jsonArray = jsonValue.isArray()) != null) {
192
								mediator.setConnected(((JSONBoolean) jsonArray.get(1)).booleanValue());
193
						}
21 ddelon 194
 
14 ddelon 195
						if (mediator.getConnected()) {
21 ddelon 196
							mediator.setUser(login);
197
							hide();
198
							ImportDialog importDialog = new ImportDialog(mediator);
199
 
200
		    				// Position it roughly in the middle of the screen.
201
		    				int left = (Window.getClientWidth() - 512) / 2;
202
		    				int top = (Window.getClientHeight() - 256) / 2;
203
		    				importDialog.setPopupPosition(left, top);
204
		    				importDialog.show();
14 ddelon 205
						}
21 ddelon 206
						else {
207
							inner.setHTML(2,0,"Identification incorrecte !");
208
						}
14 ddelon 209
					}
210
				});
211
 
212
	}
213
 
214
 
21 ddelon 215
 
216
 
217
 
14 ddelon 218
  public boolean onKeyDownPreview(char key, int modifiers) {
219
	    // Use the popup's key preview hooks to close the dialog when either
220
	    //  escape is pressed.
221
	    switch (key) {
222
	      case KeyboardListener.KEY_ESCAPE:
223
	        hide();
224
	        break;
225
	    }
226
 
227
	    return true;
228
  }
229
 
230
 
231
 
232
}
15 ddelon 233
 
234
/* +--Fin du code ---------------------------------------------------------------------------------------+
17 ddelon 235
* $Log$
21 ddelon 236
* Revision 1.7  2007-05-21 11:47:30  ddelon
237
* meta cvs
238
*
20 ddelon 239
* Revision 1.6  2007-05-21 11:39:48  ddelon
240
* meta cvs
241
*
19 ddelon 242
* Revision 1.5  2007-05-21 11:39:12  ddelon
243
* meta cvs
244
*
18 ddelon 245
* Revision 1.4  2007-05-21 11:37:35  ddelon
246
* meta cvs
247
*
17 ddelon 248
* Revision 1.3  2007-05-21 11:36:51  ddelon
249
* meta cvs
250
*
15 ddelon 251
*/