Changed language como for listbox with mold select.

FEA: ItEr75S07UserSettings
This commit is contained in:
Manuel Rego Casasnovas 2011-06-28 17:49:17 +02:00
parent cbf91d069d
commit 4257197149
4 changed files with 31 additions and 55 deletions

View file

@ -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();
}

View file

@ -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;
}
}

View file

@ -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;
}
}

View file

@ -44,8 +44,11 @@
<groupbox style="margin-top: 5px" closable="false">
<hbox>
<label value="${i18n:_('Select language:')}" />
<combobox id="applicationLanguage">
</combobox>
<listbox id="applicationLanguage"
model="@{settingsController.languages}"
itemRenderer="@{settingsController.languagesRenderer}"
selectedItem="@{settingsController.selectedLanguage}"
mold="select" />
</hbox>
<hbox>