diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/ISettingsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/ISettingsModel.java index 8960ba7ad..3e2e37315 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/ISettingsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/ISettingsModel.java @@ -20,7 +20,6 @@ package org.navalplanner.web.users; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.users.entities.Language; -import org.navalplanner.business.users.entities.User; /** * Model for UI operations related to user settings @@ -34,12 +33,8 @@ public interface ISettingsModel { Language getApplicationLanguage(); - User findByLoginUser(String login); - - void initEdit(User user); + void initEditLoggedUser(); void confirmSave() throws ValidationException; - User getUser(); - } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsController.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsController.java index 04aa4a66f..23024bed4 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsController.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsController.java @@ -25,16 +25,13 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.users.entities.Language; -import org.navalplanner.business.users.entities.User; import org.navalplanner.web.common.ConfigurationController; import org.navalplanner.web.common.IMessagesForUser; import org.navalplanner.web.common.Level; import org.navalplanner.web.common.MessagesForUser; -import org.navalplanner.web.security.SecurityUtils; import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.util.GenericForwardComposer; -import org.zkoss.zul.Combobox; -import org.zkoss.zul.Comboitem; +import org.zkoss.zul.ListitemRenderer; /** * Controller for user settings @@ -51,45 +48,33 @@ public class SettingsController extends GenericForwardComposer { private Component messagesContainer; - private Combobox applicationLanguage; - private ISettingsModel settingsModel; + public static ListitemRenderer languagesRenderer = new ListitemRenderer() { + @Override + public void render(org.zkoss.zul.Listitem item, Object data) + throws Exception { + Language language = (Language) data; + item.setLabel(language.getDisplayName()); + } + }; + @Override public void doAfterCompose(Component comp) throws Exception { super.doAfterCompose(comp); comp.setVariable("settingsController", this, true); messages = new MessagesForUser(messagesContainer); - - User user = settingsModel.findByLoginUser(SecurityUtils - .getSessionUserLoginName()); - - settingsModel.initEdit(user); - - appendAllLanguages(applicationLanguage); - - applicationLanguage.setSelectedIndex(settingsModel.getUser() - .getApplicationLanguage().ordinal()); + settingsModel.initEditLoggedUser(); } - private void appendAllLanguages(Combobox combo) { - for (Language language : getLanguageNames()) { - Comboitem item = combo.appendItem(_(language.getDisplayName())); - item.setValue(language); - } - } - - public Language[] getLanguageNames() { + public Language[] getLanguages() { return Language.values(); } public boolean save() { try { - settingsModel.setApplicationLanguage(getSelectedLanguage()); settingsModel.confirmSave(); messages.showMessage(Level.INFO, _("Settings saved")); - applicationLanguage.setSelectedItem(applicationLanguage - .getSelectedItem()); return true; } catch (ValidationException e) { messages.showInvalidValues(e); @@ -97,16 +82,16 @@ public class SettingsController extends GenericForwardComposer { return false; } - private Language getSelectedLanguage() { - Comboitem selectedItem = applicationLanguage.getSelectedItem(); - if (selectedItem != null) { - return (Language) selectedItem.getValue(); - } - return null; + public void setSelectedLanguage(Language language) { + settingsModel.setApplicationLanguage(language); } - private User getUser() - { - return settingsModel.getUser(); + public Language getSelectedLanguage() { + return settingsModel.getApplicationLanguage(); } + + public static ListitemRenderer getLanguagesRenderer() { + return languagesRenderer; + } + } diff --git a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsModel.java b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsModel.java index 5ca8269e4..3cf356be8 100644 --- a/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsModel.java +++ b/navalplanner-webapp/src/main/java/org/navalplanner/web/users/SettingsModel.java @@ -18,7 +18,6 @@ */ package org.navalplanner.web.users; -import org.apache.commons.lang.Validate; import org.navalplanner.business.common.exceptions.InstanceNotFoundException; import org.navalplanner.business.common.exceptions.ValidationException; import org.navalplanner.business.users.daos.IUserDAO; @@ -27,6 +26,7 @@ import org.navalplanner.business.users.entities.Profile; import org.navalplanner.business.users.entities.User; import org.navalplanner.business.users.entities.UserRole; import org.navalplanner.web.common.concurrentdetection.OnConcurrentModification; +import org.navalplanner.web.security.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.config.BeanDefinition; import org.springframework.context.annotation.Scope; @@ -59,9 +59,7 @@ public class SettingsModel implements ISettingsModel { this.user.setApplicationLanguage(applicationLanguage); } - @Override - @Transactional(readOnly = true) - public User findByLoginUser(String login) { + private User findByLoginUser(String login) { try { return user = userDAO.findByLoginName(login); } catch (InstanceNotFoundException e) { @@ -71,8 +69,8 @@ public class SettingsModel implements ISettingsModel { @Override @Transactional(readOnly = true) - public void initEdit(User user) { - Validate.notNull(user); + public void initEditLoggedUser() { + User user = findByLoginUser(SecurityUtils.getSessionUserLoginName()); this.user = getFromDB(user); } @@ -107,9 +105,4 @@ public class SettingsModel implements ISettingsModel { userDAO.save(user); } - @Override - public User getUser() { - return this.user; - } - } diff --git a/navalplanner-webapp/src/main/webapp/users/settings.zul b/navalplanner-webapp/src/main/webapp/users/settings.zul index 7eda003b4..63e5ad766 100644 --- a/navalplanner-webapp/src/main/webapp/users/settings.zul +++ b/navalplanner-webapp/src/main/webapp/users/settings.zul @@ -44,8 +44,11 @@