Subversion Repositories eFlore/Applications.del

Rev

Rev 1175 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1175 aurelien 1
package org.tela_botanica.del.client.composants.preferences;
2
 
3
import java.util.HashMap;
4
 
5
import org.tela_botanica.del.client.cache.CacheClient;
6
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
7
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
8
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.EvenementChangementPreferences;
9
import org.tela_botanica.del.client.services.rest.PreferencesService;
10
import org.tela_botanica.del.client.services.rest.async.ListePreferencesCallback;
11
import org.tela_botanica.del.client.services.rest.async.ModificationPreferencesCallback;
12
 
13
import com.google.gwt.event.dom.client.ClickEvent;
14
import com.google.gwt.event.dom.client.ClickHandler;
15
import com.google.gwt.event.dom.client.HasClickHandlers;
16
import com.google.gwt.user.client.Window;
17
import com.google.gwt.user.client.ui.HasWidgets;
18
import com.google.gwt.user.client.ui.IsWidget;
19
 
20
public class PreferencesPresenteur extends Presenteur {
21
 
22
	private Vue vue;
23
	private PreferencesService preferencesService;
24
	private HashMap<String, String> preferences = null;
25
 
26
	public interface Vue extends IsWidget {
27
		public void afficherMessageChargement();
28
		public void cacherMessageChargement();
29
		public String getValeurRecevoirMailsMesObs();
30
		public String getValeurRecevoirMailsToutesObs();
31
		public void setValeurRecevoirMailsMesObs(boolean valeur);
32
		public void setValeurRecevoirMailsToutesObs(boolean valeur);
33
		public HasClickHandlers getBoutonSauvegarder();
34
	}
35
 
36
	public PreferencesPresenteur(Vue vue, PreferencesService preferencesService) {
37
		this.vue = vue;
38
		this.preferencesService = preferencesService;
39
		gererEvenements();
40
	}
41
 
42
	@Override
43
	public void go(HasWidgets composite) {
44
		preferences = CacheClient.getInstance().getUtilisateur().getPreferences();
45
		if (preferences == null) {
46
			preferencesService.chargerPreferences(CacheClient.getInstance().getUtilisateur(), new ListePreferencesCallback() {
47
				@Override
48
				public void surRetour(java.util.HashMap<String, String> objetRetour) {
49
					preferences = objetRetour;
50
					CacheClient.getInstance().getUtilisateur().setPreferences(objetRetour);
51
					affecterValeursChamps(preferences);
52
					vue.cacherMessageChargement();
53
				}
54
			});
55
		} else {
56
			vue.cacherMessageChargement();
57
			affecterValeursChamps(preferences);
58
		}
59
		composite.add(vue.asWidget());
60
	}
61
 
62
	private void affecterValeursChamps(HashMap<String, String> preferences) {
63
		vue.setValeurRecevoirMailsMesObs(getPreferenceBool(preferences.get("mail_notification_mes_obs")));
64
		vue.setValeurRecevoirMailsToutesObs(getPreferenceBool(preferences.get("mail_notification_toutes_obs")));
65
	}
66
 
67
	private boolean getPreferenceBool(String valeur) {
68
		return (valeur.equals("1")) ? true : false;
69
	}
70
 
71
	@Override
72
	protected void gererEvenements() {
73
		vue.getBoutonSauvegarder().addClickHandler(new ClickHandler() {
74
			@Override
75
			public void onClick(ClickEvent event) {
76
				vue.afficherMessageChargement();
77
				preferences.put("mail_notification_mes_obs", vue.getValeurRecevoirMailsMesObs());
78
				preferences.put("mail_notification_toutes_obs", vue.getValeurRecevoirMailsToutesObs());
79
				preferencesService.modifierPreferences(CacheClient.getInstance().getUtilisateur(), preferences, new ModificationPreferencesCallback() {
80
					@Override
81
					public void surRetour(String objetRetour) {
82
						vue.cacherMessageChargement();
83
						BusEvenementiel.getInstance().fireEvent(new EvenementChangementPreferences());
84
					}
85
				});
86
			}
87
		});
88
	}
89
}