Rev 1503 | Blame | Compare with Previous | Last modification | View Log | RSS feed
package org.tela_botanica.del.client.composants.preferences;
import java.util.HashMap;
import org.tela_botanica.del.client.cache.CacheClient;
import org.tela_botanica.del.client.composants.presenteur.Presenteur;
import org.tela_botanica.del.client.navigation.evenement.BusEvenementiel;
import org.tela_botanica.del.client.navigation.evenement.changementPreferences.EvenementChangementPreferences;
import org.tela_botanica.del.client.services.rest.PreferencesService;
import org.tela_botanica.del.client.services.rest.async.ListePreferencesCallback;
import org.tela_botanica.del.client.services.rest.async.ModificationPreferencesCallback;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.HasWidgets;
import com.google.gwt.user.client.ui.IsWidget;
public class PreferencesPresenteur extends Presenteur {
private Vue vue;
private PreferencesService preferencesService;
private HashMap<String, String> preferences = null;
public interface Vue extends IsWidget {
public void afficherMessageChargement();
public void cacherMessageChargement();
public String getValeurRecevoirMailsMesObs();
public String getValeurRecevoirMailsToutesObs();
public void setValeurRecevoirMailsMesObs(boolean valeur);
public void setValeurRecevoirMailsToutesObs(boolean valeur);
public HasClickHandlers getBoutonSauvegarder();
}
public PreferencesPresenteur(Vue vue, PreferencesService preferencesService) {
this.vue = vue;
this.preferencesService = preferencesService;
gererEvenements();
}
@Override
public void go(HasWidgets composite) {
preferences = CacheClient.getInstance().getUtilisateur().getPreferences();
if (preferences == null) {
preferencesService.chargerPreferences(CacheClient.getInstance().getUtilisateur(), new ListePreferencesCallback() {
@Override
public void surRetour(java.util.HashMap<String, String> objetRetour) {
preferences = objetRetour;
CacheClient.getInstance().getUtilisateur().setPreferences(objetRetour);
affecterValeursChamps(preferences);
vue.cacherMessageChargement();
}
});
} else {
vue.cacherMessageChargement();
affecterValeursChamps(preferences);
}
composite.add(vue.asWidget());
}
private void affecterValeursChamps(HashMap<String, String> preferences) {
vue.setValeurRecevoirMailsMesObs(getPreferenceBool(preferences.get("mail_notification_mes_obs")));
vue.setValeurRecevoirMailsToutesObs(getPreferenceBool(preferences.get("mail_notification_toutes_obs")));
}
private boolean getPreferenceBool(String valeur) {
return (valeur.equals("1")) ? true : false;
}
@Override
protected void gererEvenements() {
vue.getBoutonSauvegarder().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
vue.afficherMessageChargement();
preferences.put("mail_notification_mes_obs", vue.getValeurRecevoirMailsMesObs());
preferences.put("mail_notification_toutes_obs", vue.getValeurRecevoirMailsToutesObs());
preferencesService.modifierPreferences(CacheClient.getInstance().getUtilisateur(), preferences, new ModificationPreferencesCallback() {
@Override
public void surRetour(String objetRetour) {
vue.cacherMessageChargement();
BusEvenementiel.getInstance().fireEvent(new EvenementChangementPreferences());
}
});
}
});
}
}