Subversion Repositories eFlore/Archives.cel-v1

Rev

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

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