Subversion Repositories eFlore/Applications.cel

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
12 david 1
/**
2
 David Delon david.delon@clapas.net 2007
3
 
4
 */
5
 
6
/*
7
 * EtatConnexionVue.java  : affichage information portant sur le statut de la connexion utilisateur
8
 *
9
 *
10
 * 1: Le programme affiche le statut connecte si l'utilisateur s'est connecte precedemment, sinon s'affiche le statut deconnecte
11
 * 2: Le programme arme les actions liees a la connection ou a la deconnection
12
 *    - Connection : affichage de la boite de connexion
13
 *    - Deconnexion : appel du service de deconnexion, et appel de la re-initialisation de l'affichage pour le nouvel identifiant utilisateur obtenu (identifiant  de session)
14
 */
15
 
16
package org.tela_botanica.client.vues;
17
 
2656 aurelien 18
import java.util.Iterator;
19
import java.util.List;
20
 
12 david 21
import org.tela_botanica.client.CarnetEnLigneMediateur;
2615 aurelien 22
import org.tela_botanica.client.i18n.Msg;
989 aurelien 23
import org.tela_botanica.client.modeles.objets.Configuration;
12 david 24
 
2656 aurelien 25
import com.google.gwt.event.dom.client.ChangeEvent;
26
import com.google.gwt.event.dom.client.ChangeHandler;
2081 mathias 27
import com.google.gwt.http.client.URL;
140 aurelien 28
import com.google.gwt.user.client.Window;
2656 aurelien 29
import com.google.gwt.user.client.ui.HTML;
30
import com.google.gwt.user.client.ui.ListBox;
140 aurelien 31
import com.gwtext.client.core.EventCallback;
32
import com.gwtext.client.core.EventObject;
33
import com.gwtext.client.core.Ext;
34
import com.gwtext.client.core.ExtElement;
35
import com.gwtext.client.widgets.Container;
12 david 36
import com.gwtext.client.widgets.Panel;
140 aurelien 37
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
12 david 38
 
39
/**
40
 * Un indicateur d'etat de connexion
41
 *
42
 * @author David Delon
43
 *
44
 */
45
 
46
public class EtatConnexionVue  extends Panel  {
47
 
48
	/**
49
	 * Médiateur associé à la vue
50
	 */
51
	private CarnetEnLigneMediateur carnetEnLigneMediateur = null ;
52
 
53
  /**
54
   * Texte lié à la connexion.
55
   *
56
   */
2656 aurelien 57
  private HTML htmlEtatConnexion = new HTML();
58
  private String labelEtatConnexion = null;
12 david 59
 
2656 aurelien 60
  private ListBox listeLangues = null;
2081 mathias 61
 
62
  /**
63
   * Ouh c'est pas beau, ça ! Mais avec Google Web Toolshit, ça
64
   * marche toujours mieux que quand on fait des trucs beaux :-)
65
   */
66
  private String liens = "<div id=\"liensExt\">"
2615 aurelien 67
		  + "<a id=\"lienRemarques\" title=\""+Msg.get("adresser-remarque-probleme")+"\""
2636 mathias 68
		  + 	" href=\"" + Configuration.getRemarquesBaseUrl() + "?lang=" + Msg.getLangue() + "&service=" + Configuration.getServiceContact()
2081 mathias 69
		  + 	"&pageSource=" + URL.encodeQueryString(Window.Location.getHref()) + "\""
70
		  + " onClick=\"javascript:window.open(this.getAttribute('href'), 'Tela Botanica - Remarques', config='height=700, width=640, scrollbars=yes, resizable=yes'); return false;\""
71
		  + " target=\"_blank\""
2623 aurelien 72
		  + ">"+Msg.get("remarques")+"</a>"
73
		  + "<a href=\"#\" id=\"lienAide\">"+Msg.get("aide")+"</a>"
2081 mathias 74
		  + "</div>" ;
12 david 75
 
76
  /**
2081 mathias 77
   * Booleen indiquant si utilisateur est connecte
12 david 78
   *
79
   */
80
  public EtatConnexionVue(CarnetEnLigneMediateur cm)  {
81
 
82
	carnetEnLigneMediateur=cm;
83
 
84
    this.setBodyBorder(false) ;
85
    this.setBorder(false) ;
226 aurelien 86
    this.setId("panneau_etat_connexion");
12 david 87
 
88
	// Pas de word wrap
140 aurelien 89
	labelEtatConnexion="";
12 david 90
 
2656 aurelien 91
	initialiserListeLangues();
12 david 92
 
2656 aurelien 93
	this.add(listeLangues);
94
	htmlEtatConnexion.setHTML(labelEtatConnexion+liens);
95
	this.add(htmlEtatConnexion);
12 david 96
 
2656 aurelien 97
	ajouterListeners();
98
  }
99
 
100
  private void initialiserListeLangues() {
101
	  listeLangues = new ListBox();
102
	  listeLangues.getElement().setId("liste_selection_langue");
103
	  List<String> languesDispos = Msg.getLanguesDisponibles();
104
	  int indexLangue = 0;
105
	  for (Iterator<String> iterator = languesDispos.iterator(); iterator.hasNext();) {
106
		  String langue = iterator.next();
107
		  listeLangues.addItem(Msg.get("intitule-langue", langue), langue);
108
		  if(langue.equals(Msg.getLangue())) {
109
			  listeLangues.setSelectedIndex(indexLangue);
110
		  }
111
		  indexLangue++;
112
	  }
113
  }
12 david 114
 
2656 aurelien 115
  private void ajouterListeners() {
116
	  listeLangues.addChangeHandler(new ChangeHandler() {
117
		@Override
118
		public void onChange(ChangeEvent event) {
119
			int indexLangue = listeLangues.getSelectedIndex();
120
			String urlCourante = Window.Location.getHref();
121
			String urlBase = urlCourante;
122
			if(urlCourante.contains("?")) {
123
				urlBase = urlCourante.substring(0, urlCourante.indexOf("?"));
124
			}
125
			String urlLangue = urlBase+"?lang="+listeLangues.getValue(indexLangue);
126
			Window.Location.replace(urlLangue);
127
 
128
			return;
140 aurelien 129
		}
2656 aurelien 130
	});
12 david 131
 
2656 aurelien 132
	  ExtElement lienAide = Ext.get("lienAide");
133
	  if(lienAide != null)
134
	  {
135
		  lienAide.removeAllListeners();
136
		  lienAide.addListener("click", new EventCallback() {
2081 mathias 137
 
2656 aurelien 138
			  @Override
139
			  public void execute(EventObject e) {
140
				  String aideUrl = Configuration.getAideBaseUrl() ;
141
				  Window.open(aideUrl, "", "") ;
142
			  }
143
		  });
144
	  }
145
	  else
146
	  {
147
		  addListener(new ContainerListenerAdapter() {
148
			  @Override
149
			  public void onAfterLayout(Container c) {
12 david 150
 
2656 aurelien 151
				  ExtElement lienAide = Ext.get("lienAide");
152
				  if(lienAide != null)
153
				  {
154
					  lienAide.removeAllListeners();
155
					  lienAide.addListener("click", new EventCallback() {
140 aurelien 156
 
2656 aurelien 157
						  @Override
158
						  public void execute(EventObject e) {
159
							  String aideUrl = Configuration.getAideBaseUrl() ;
160
							  Window.open(aideUrl, "", "") ;
161
						  }
162
					  });
163
				  }
164
			  }
165
		  });
166
	  }
167
 
168
 
169
  }
140 aurelien 170
 
2656 aurelien 171
  /**
172
   * Affichage de l'etat de connexion
173
   * @param text
174
   * @param connecte
175
   */
176
  public void setEtat(String identifiant, boolean connecte) {
140 aurelien 177
 
2656 aurelien 178
	  if(connecte) {
179
		  String[] params = {identifiant};
180
		  labelEtatConnexion = "<div id=\"etatConnexion\">"+Msg.get("connecte-en-tant-que", params)+" <a id=\"lienDeconnexion\" href=\"#\">("+Msg.get("deconnexion")+")</a>" ;
181
		  labelEtatConnexion += "</div>" ;
140 aurelien 182
 
12 david 183
 
2656 aurelien 184
		  labelEtatConnexion += liens ;
185
		  htmlEtatConnexion.setHTML(labelEtatConnexion);
12 david 186
 
2656 aurelien 187
		  ExtElement lienDeco = Ext.get("lienDeconnexion");
188
		  if(lienDeco != null)
189
		  {
190
			  lienDeco.addListener("click", new EventCallback() {
12 david 191
 
2656 aurelien 192
				  @Override
193
				  public void execute(EventObject e) {
194
					  carnetEnLigneMediateur.deconnecterUtilisateur();
195
				  }
196
 
197
			  });
198
		  }
199
		  else
200
		  {
201
			  addListener(new ContainerListenerAdapter()
202
			  {
203
				  @Override
204
				  public void onAfterLayout(Container c)
205
				  {
206
					  ExtElement lienDeco = Ext.get("etatConnexion");
207
 
208
					  lienDeco.addListener("click", new EventCallback() {
209
 
210
						  @Override
211
						  public void execute(EventObject e) {
212
							  carnetEnLigneMediateur.deconnecterUtilisateur();
213
							  setEtat(null, false);
214
						  }
215
 
216
					  });
217
				  }
218
			  });
219
		  }
220
	  }
221
	  else
222
	  {
223
		  labelEtatConnexion = "<div id=\"etatConnexion\"> "+Msg.get("cel-utilisation")+", <a id=\"lienConnexion\" href=\"#\">"+Msg.get("identifiez-vous")+"</a> "+Msg.get("pour-transmettre-tela")+"</div>";
224
		  labelEtatConnexion += liens ;
225
		  htmlEtatConnexion.setHTML(labelEtatConnexion);
226
		  ExtElement lienCo = Ext.get("etatConnexion");
227
		  if(lienCo != null) {
228
			  lienCo.addListener("click", new EventCallback() {
229
 
230
				  @Override
231
				  public void execute(EventObject e) {
232
 
233
					  carnetEnLigneMediateur.afficherDialogueConnexion();
234
				  }
235
 
236
			  });
237
		  }
238
		  else
239
		  {
240
			  addListener(new ContainerListenerAdapter() {
241
				  @Override
242
				  public void onAfterLayout(Container c) {
243
 
244
					  ExtElement lienCo = Ext.get("etatConnexion");
245
 
246
					  lienCo.addListener("click", new EventCallback() {
247
 
248
						  @Override
249
						  public void execute(EventObject e) {
250
 
251
							  carnetEnLigneMediateur.afficherDialogueConnexion();
252
						  }
253
 
254
					  });
255
				  }
256
			  });
257
		  }
258
	  }
259
 
260
	  ExtElement lienAide = Ext.get("lienAide");
261
	  if(lienAide != null)
262
	  {
263
		  lienAide.removeAllListeners();
264
		  lienAide.addListener("click", new EventCallback() {
265
 
266
			  @Override
267
			  public void execute(EventObject e) {
268
				  String aideUrl = Configuration.getAideBaseUrl() ;
269
				  Window.open(aideUrl, "", "") ;
270
			  }
271
		  });
272
	  }
273
	  else
274
	  {
275
		  addListener(new ContainerListenerAdapter() {
276
			  @Override
277
			  public void onAfterLayout(Container c) {
278
 
279
				  ExtElement lienAide = Ext.get("lienAide");
280
				  if(lienAide != null)
281
				  {
282
					  lienAide.removeAllListeners();
283
					  lienAide.addListener("click", new EventCallback() {
284
 
285
						  @Override
286
						  public void execute(EventObject e) {
287
							  String aideUrl = Configuration.getAideBaseUrl() ;
288
							  Window.open(aideUrl, "", "") ;
289
						  }
290
					  });
291
				  }
292
			  }
293
		  });
294
	  }
295
 
296
 
297
  }
298
 
12 david 299
}
300
 
301
 
302
/* +--Fin du code ---------------------------------------------------------------------------------------+
303
* $Log$
304
* Revision 1.1  2008-11-13 11:27:05  ddelon
305
* Reecriture gwt-ext
306
*
307
* Revision 1.1  2008-06-09 14:19:37  ddelon
308
* Initialisation observation
309
*
310
* Revision 1.2  2008-04-28 13:10:44  ddelon
311
* Integration MyGwt
312
*
313
* Revision 1.1  2008-01-02 21:26:04  ddelon
314
* mise en place mygwt
315
*
316
* Revision 1.6  2007-12-22 14:48:53  ddelon
317
* Documentation et refactorisation
318
*
319
* Revision 1.5  2007-09-17 19:25:34  ddelon
320
* Documentation
321
*
322
*
323
*/