/*
*
* Copyright (C) 2007-2015 Licensed to the Comunes Association (CA) under
* one or more contributor license agreements (see COPYRIGHT for details).
* The CA licenses this file to you under the GNU Affero General Public
* License version 3, (the "License"); you may not use this file except in
* compliance with the License. This file is part of kune.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
package cc.kune.gspace.client.options.general;
import org.gwtbootstrap3.client.ui.base.button.CustomButton;
import cc.kune.common.client.ui.MaskWidgetView;
import cc.kune.common.shared.i18n.I18nTranslationService;
import cc.kune.core.client.auth.UserFieldFactory;
import cc.kune.core.client.resources.iconic.IconicResources;
import cc.kune.core.client.ui.DefaultFormUtils;
import cc.kune.core.shared.dto.EmailNotificationFrequency;
import cc.kune.core.shared.dto.I18nLanguageSimpleDTO;
import cc.kune.gspace.client.i18n.LanguageSelectorPanel;
import com.extjs.gxt.ui.client.widget.form.AdapterField;
import com.extjs.gxt.ui.client.widget.form.FieldSet;
import com.extjs.gxt.ui.client.widget.form.Radio;
import com.extjs.gxt.ui.client.widget.form.TextField;
import com.google.gwt.event.dom.client.HasClickHandlers;
import com.google.gwt.user.client.ui.Label;
import com.google.inject.Inject;
// TODO: Auto-generated Javadoc
/**
* The Class UserOptGeneralPanel.
*
* @author vjrj@ourproject.org (Vicente J. Ruiz Jurado)
*/
public class UserOptGeneralPanel extends EntityOptGeneralPanel implements UserOptGeneralView {
/** The Constant DAILY_TYPE_ID. */
public static final String DAILY_TYPE_ID = "k-ngp-type_daily";
/** The Constant EMAIL_FIELD. */
public static final String EMAIL_FIELD = "k-ngp-emial";
/** The Constant HOURLY_TYPE_ID. */
public static final String HOURLY_TYPE_ID = "k-ngp-type_hourly";
/** The Constant IMMEDIATE_TYPE_ID. */
public static final String IMMEDIATE_TYPE_ID = "k-ngp-type_immedi";
/** The Constant LONG_NAME_FIELD. */
public static final String LONG_NAME_FIELD = "k-uogp-lname";
/** The Constant NO_TYPE_ID. */
public static final String NO_TYPE_ID = "k-ngp-type_no";
/** The Constant TYPEOFEMAILNOTIF_FIELD. */
public static final String TYPEOFEMAILNOTIF_FIELD = "k-ngp-type_of_email_notif";
/** The daily radio. */
private final Radio dailyRadio;
/** The email. */
private final TextField<String> email;
/** The email notif type field set. */
private final FieldSet emailNotifTypeFieldSet;
/** The hourly radio. */
private final Radio hourlyRadio;
/** The immediate radio. */
private final Radio immediateRadio;
/** The lang selector. */
private final LanguageSelectorPanel langSelector;
/** The long name. */
private final TextField<String> longName;
/** The no radio. */
private final Radio noRadio;
/** The not verif label adapter. */
private final AdapterField notVerifLabelAdapter;
/** The resend email verif adapter. */
private final AdapterField resendEmailVerifAdapter;
/** The resend email verif btn. */
private final CustomButton resendEmailVerifBtn;
/**
* Instantiates a new user opt general panel.
*
* @param i18n
* the i18n
* @param res
* the res
* @param maskWidget
* the mask widget
* @param langSelector
* the lang selector
*/
@Inject
public UserOptGeneralPanel(final I18nTranslationService i18n, final IconicResources res,
final MaskWidgetView maskWidget, final LanguageSelectorPanel langSelector) {
super(maskWidget, res.equalizerWhite(), i18n.t("General"), i18n.t("You can change these values:"));
this.langSelector = langSelector;
longName = UserFieldFactory.createUserLongName(LONG_NAME_FIELD);
add(longName);
langSelector.setLangTitle(i18n.t("Your language"));
langSelector.setLangSeparator(" ");
langSelector.setTitleWidth("100px");
email = UserFieldFactory.createUserEmail(EMAIL_FIELD);
add(email);
emailNotifTypeFieldSet = DefaultFormUtils.createFieldSet(i18n.t("How often do you want to receive email notifications?"));
immediateRadio = DefaultFormUtils.createRadio(emailNotifTypeFieldSet, i18n.t("almost immediately"),
TYPEOFEMAILNOTIF_FIELD, i18n.t(
"you will receive an email with any new messages in your inbox at [%s] almost immediately",
i18n.getSiteCommonName()), IMMEDIATE_TYPE_ID);
immediateRadio.setTabIndex(3);
immediateRadio.setValue(true);
hourlyRadio = DefaultFormUtils.createRadio(emailNotifTypeFieldSet, i18n.t("at most hourly"),
TYPEOFEMAILNOTIF_FIELD, i18n.t(
"you will receive an email with any new messages in your inbox at [%s] at most hourly",
i18n.getSiteCommonName()), HOURLY_TYPE_ID);
hourlyRadio.setTabIndex(4);
hourlyRadio.setValue(false);
dailyRadio = DefaultFormUtils.createRadio(emailNotifTypeFieldSet, i18n.t("at most daily"),
TYPEOFEMAILNOTIF_FIELD, i18n.t(
"you will receive an email with any new messages in your inbox at [%s] at most daily",
i18n.getSiteCommonName()), DAILY_TYPE_ID);
dailyRadio.setTabIndex(5);
dailyRadio.setValue(false);
noRadio = DefaultFormUtils.createRadio(
emailNotifTypeFieldSet,
i18n.t("I don't need email notifications"),
TYPEOFEMAILNOTIF_FIELD,
i18n.t("you will no receive an email with any new messages in your inbox at [%s]",
i18n.getSiteCommonName()), NO_TYPE_ID);
noRadio.setTabIndex(6);
noRadio.setValue(false);
add(emailNotifTypeFieldSet);
final Label notVerified = new Label(
i18n.t("Your email is not verified, so you will not receive email notifications"));
notVerified.setStyleName("oc-user-msg");
notVerified.addStyleName("k-3corners");
notVerifLabelAdapter = new AdapterField(notVerified);
notVerifLabelAdapter.setLabelSeparator("");
notVerifLabelAdapter.setWidth(DefaultFormUtils.BIG_FIELD_SIZE);
super.add(notVerifLabelAdapter);
resendEmailVerifBtn = new CustomButton(i18n.t("Resend verification email"));
resendEmailVerifBtn.addStyleName("k-button");
resendEmailVerifAdapter = new AdapterField(resendEmailVerifBtn);
resendEmailVerifAdapter.setValidateOnBlur(false);
resendEmailVerifAdapter.setLabelSeparator("");
resendEmailVerifAdapter.setWidth(DefaultFormUtils.BIG_FIELD_SIZE);
// resendEmailVerifAdapter.setFieldLabel(i18n.t("Maybe you want receive again our verification email"));
add(resendEmailVerifAdapter);
add(langSelector);
}
/*
* (non-Javadoc)
*
* @see cc.kune.gspace.client.options.general.UserOptGeneralView#getEmail()
*/
@Override
public String getEmail() {
return email.getValue();
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.options.general.UserOptGeneralView#getEmailNotif()
*/
@Override
public EmailNotificationFrequency getEmailNotif() {
if (immediateRadio.getValue()) {
return EmailNotificationFrequency.immediately;
}
if (hourlyRadio.getValue()) {
return EmailNotificationFrequency.hourly;
}
if (dailyRadio.getValue()) {
return EmailNotificationFrequency.daily;
}
// if (noRadio.getValue())
return EmailNotificationFrequency.no;
}
/*
* (non-Javadoc)
*
* @see cc.kune.gspace.client.options.general.UserOptGeneralView#getLanguage()
*/
@Override
public I18nLanguageSimpleDTO getLanguage() {
return langSelector.getLanguage();
}
/*
* (non-Javadoc)
*
* @see cc.kune.gspace.client.options.general.UserOptGeneralView#getLongName()
*/
@Override
public String getLongName() {
return longName.getValue();
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.options.general.UserOptGeneralView#getResendEmailVerif
* ()
*/
@Override
public HasClickHandlers getResendEmailVerif() {
return resendEmailVerifBtn;
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.options.general.UserOptGeneralView#setEmail(java.
* lang.String)
*/
@Override
public void setEmail(final String email) {
this.email.setValue(email);
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.options.general.UserOptGeneralView#setEmailNotifChecked
* (cc.kune.core.shared.dto.EmailNotificationFrequency)
*/
@Override
public void setEmailNotifChecked(final EmailNotificationFrequency freq) {
switch (freq) {
case no:
noRadio.setValue(true);
break;
case hourly:
hourlyRadio.setValue(true);
break;
case daily:
dailyRadio.setValue(true);
break;
case immediately:
immediateRadio.setValue(true);
break;
default:
throw new RuntimeException("Unexpected email frequency");
}
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.options.general.UserOptGeneralView#setEmailVerified
* (boolean)
*/
@Override
public void setEmailVerified(final boolean verified) {
resendEmailVerifAdapter.setVisible(!verified);
notVerifLabelAdapter.setVisible(!verified);
emailNotifTypeFieldSet.setVisible(verified);
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.options.general.UserOptGeneralView#setLanguage(cc
* .kune.core.shared.dto.I18nLanguageSimpleDTO)
*/
@Override
public void setLanguage(final I18nLanguageSimpleDTO language) {
langSelector.setLanguage(language);
}
/*
* (non-Javadoc)
*
* @see
* cc.kune.gspace.client.options.general.UserOptGeneralView#setLongName(java
* .lang.String)
*/
@Override
public void setLongName(final String longName) {
this.longName.setValue(longName);
}
/*
* (non-Javadoc)
*
* @see cc.kune.gspace.client.options.general.UserOptGeneralView#
* setResendEmailVerifEnabled(boolean)
*/
@Override
public void setResendEmailVerifEnabled(final boolean enabled) {
resendEmailVerifBtn.setEnabled(enabled);
}
}