Subversion Repositories eFlore/Archives.cel-v1

Rev

Rev 20 | Rev 23 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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