Subversion Repositories eFlore/Applications.del

Rev

Rev 2046 | 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();
2046 mathias 30
		public String getValeurRecevoirMailsMesCom();
1175 aurelien 31
		public String getValeurRecevoirMailsToutesObs();
32
		public void setValeurRecevoirMailsMesObs(boolean valeur);
2046 mathias 33
		public void setValeurRecevoirMailsMesCom(boolean valeur);
1175 aurelien 34
		public void setValeurRecevoirMailsToutesObs(boolean valeur);
35
		public HasClickHandlers getBoutonSauvegarder();
36
	}
37
 
38
	public PreferencesPresenteur(Vue vue, PreferencesService preferencesService) {
39
		this.vue = vue;
40
		this.preferencesService = preferencesService;
41
		gererEvenements();
42
	}
43
 
44
	@Override
45
	public void go(HasWidgets composite) {
46
		preferences = CacheClient.getInstance().getUtilisateur().getPreferences();
47
		if (preferences == null) {
48
			preferencesService.chargerPreferences(CacheClient.getInstance().getUtilisateur(), new ListePreferencesCallback() {
49
				@Override
50
				public void surRetour(java.util.HashMap<String, String> objetRetour) {
51
					preferences = objetRetour;
52
					CacheClient.getInstance().getUtilisateur().setPreferences(objetRetour);
53
					affecterValeursChamps(preferences);
54
					vue.cacherMessageChargement();
55
				}
56
			});
57
		} else {
58
			vue.cacherMessageChargement();
59
			affecterValeursChamps(preferences);
60
		}
61
		composite.add(vue.asWidget());
62
	}
63
 
64
	private void affecterValeursChamps(HashMap<String, String> preferences) {
65
		vue.setValeurRecevoirMailsMesObs(getPreferenceBool(preferences.get("mail_notification_mes_obs")));
2046 mathias 66
		vue.setValeurRecevoirMailsMesCom(getPreferenceBool(preferences.get("mail_notification_mes_com")));
1175 aurelien 67
		vue.setValeurRecevoirMailsToutesObs(getPreferenceBool(preferences.get("mail_notification_toutes_obs")));
68
	}
69
 
70
	private boolean getPreferenceBool(String valeur) {
71
		return (valeur.equals("1")) ? true : false;
72
	}
73
 
74
	@Override
75
	protected void gererEvenements() {
76
		vue.getBoutonSauvegarder().addClickHandler(new ClickHandler() {
77
			@Override
78
			public void onClick(ClickEvent event) {
79
				vue.afficherMessageChargement();
80
				preferences.put("mail_notification_mes_obs", vue.getValeurRecevoirMailsMesObs());
2046 mathias 81
				preferences.put("mail_notification_mes_com", vue.getValeurRecevoirMailsMesCom());
1175 aurelien 82
				preferences.put("mail_notification_toutes_obs", vue.getValeurRecevoirMailsToutesObs());
83
				preferencesService.modifierPreferences(CacheClient.getInstance().getUtilisateur(), preferences, new ModificationPreferencesCallback() {
84
					@Override
85
					public void surRetour(String objetRetour) {
86
						vue.cacherMessageChargement();
87
						BusEvenementiel.getInstance().fireEvent(new EvenementChangementPreferences());
88
					}
89
				});
90
			}
91
		});
92
	}
93
}