BF[2723605] date fields shown only in English format ("mm/dd/yyyy")

This commit is contained in:
Heng Sin Low 2009-04-24 09:46:07 +00:00
parent 648979a759
commit c020c9808c
6 changed files with 199 additions and 126 deletions

View File

@ -23,6 +23,7 @@ import java.util.Properties;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.desktop.DefaultDesktop; import org.adempiere.webui.desktop.DefaultDesktop;
import org.adempiere.webui.desktop.IDesktop; import org.adempiere.webui.desktop.IDesktop;
import org.adempiere.webui.session.SessionManager; import org.adempiere.webui.session.SessionManager;
@ -121,13 +122,28 @@ public class AdempiereWebUI extends Window implements EventListener, IWebClient
Properties ctx = Env.getCtx(); Properties ctx = Env.getCtx();
String langLogin = Env.getContext(ctx, Env.LANGUAGE); String langLogin = Env.getContext(ctx, Env.LANGUAGE);
if (langLogin == null || langLogin.length() <= 0) { if (langLogin == null || langLogin.length() <= 0)
{
langLogin = langSession; langLogin = langSession;
Env.setContext(ctx, Env.LANGUAGE, langSession); Env.setContext(ctx, Env.LANGUAGE, langSession);
} }
// Validate language // Validate language
Language language = Language.getLanguage(langLogin); Language language = Language.getLanguage(langLogin);
String locale = Env.getContext(ctx, AEnv.LOCALE);
if (locale != null && locale.length() > 0 && !language.getLocale().toString().equals(locale))
{
String adLanguage = language.getAD_Language();
Language tmp = Language.getLanguage(locale);
language = new Language(tmp.getName(), adLanguage, tmp.getLocale(), tmp.isDecimalPoint(),
tmp.getDateFormat().toPattern(), tmp.getMediaSize());
}
else
{
Language tmp = language;
language = new Language(tmp.getName(), tmp.getAD_Language(), tmp.getLocale(), tmp.isDecimalPoint(),
tmp.getDateFormat().toPattern(), tmp.getMediaSize());
}
Env.verifyLanguage(ctx, language); Env.verifyLanguage(ctx, language);
Env.setContext(ctx, Env.LANGUAGE, language.getAD_Language()); //Bug Env.setContext(ctx, Env.LANGUAGE, language.getAD_Language()); //Bug

View File

@ -29,6 +29,7 @@ import java.sql.SQLException;
import java.util.Enumeration; import java.util.Enumeration;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Locale;
import java.util.Map; import java.util.Map;
import java.util.Properties; import java.util.Properties;
import java.util.logging.Level; import java.util.logging.Level;
@ -49,6 +50,7 @@ import org.compiere.util.CLogger;
import org.compiere.util.DB; import org.compiere.util.DB;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.Ini; import org.compiere.util.Ini;
import org.compiere.util.Language;
import org.zkoss.web.servlet.Servlets; import org.zkoss.web.servlet.Servlets;
import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.Execution; import org.zkoss.zk.ui.Execution;
@ -62,7 +64,7 @@ import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfWriter; import com.lowagie.text.pdf.PdfWriter;
/** /**
* Windows Application Environment and utilities * ZK Application Environment and utilities
* *
* @author Jorg Janke * @author Jorg Janke
* @version $Id: AEnv.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $ * @version $Id: AEnv.java,v 1.2 2006/07/30 00:51:27 jjanke Exp $
@ -71,6 +73,8 @@ import com.lowagie.text.pdf.PdfWriter;
*/ */
public final class AEnv public final class AEnv
{ {
public static final String LOCALE = "#Locale";
/** /**
* Show in the center of the screen. * Show in the center of the screen.
* (pack, set location and set visibility) * (pack, set location and set visibility)
@ -680,4 +684,42 @@ public final class AEnv
} }
return sb.toString(); return sb.toString();
} // getHeader } // getHeader
/**
* @param ctx
* @return Language
*/
public static Language getLanguage(Properties ctx) {
Locale locale = getLocale(ctx);
Language language = Env.getLanguage(ctx);
if (!language.getLocale().equals(locale)) {
Language tmp = Language.getLanguage(locale.toString());
String adLanguage = language.getAD_Language();
language = new Language(tmp.getName(), adLanguage, tmp.getLocale(), tmp.isDecimalPoint(),
tmp.getDateFormat().toPattern(), tmp.getMediaSize());
}
return language;
}
/**
* @param ctx
* @return Locale
*/
public static Locale getLocale(Properties ctx) {
String value = Env.getContext(ctx, AEnv.LOCALE);
Locale locale = null;
if (value != null && value.length() > 0)
{
String[] components = value.split("\\_");
String language = components.length > 0 ? components[0] : "";
String country = components.length > 1 ? components[1] : "";
locale = new Locale(language, country);
}
else
{
locale = Env.getLanguage(ctx).getLocale();
}
return locale;
}
} // AEnv } // AEnv

View File

@ -20,11 +20,13 @@ package org.adempiere.webui.editor;
import java.sql.Timestamp; import java.sql.Timestamp;
import java.util.Date; import java.util.Date;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.Datebox; import org.adempiere.webui.component.Datebox;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
import org.compiere.model.GridField; import org.compiere.model.GridField;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DisplayType; import org.compiere.util.DisplayType;
import org.compiere.util.Env;
import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.event.Event;
import org.zkoss.zk.ui.event.Events; import org.zkoss.zk.ui.event.Events;
@ -100,7 +102,7 @@ public class WDateEditor extends WEditor
private void init() private void init()
{ {
getComponent().setFormat(DisplayType.getDateFormat().toPattern()); getComponent().setFormat(DisplayType.getDateFormat(AEnv.getLanguage(Env.getCtx())).toPattern());
} }
public void onEvent(Event event) public void onEvent(Event event)

View File

@ -21,6 +21,7 @@ import java.math.BigDecimal;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import org.adempiere.webui.ValuePreference; import org.adempiere.webui.ValuePreference;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.NumberBox; import org.adempiere.webui.component.NumberBox;
import org.adempiere.webui.event.ContextMenuEvent; import org.adempiere.webui.event.ContextMenuEvent;
import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeEvent;
@ -107,7 +108,7 @@ public class WNumberEditor extends WEditor
if (!DisplayType.isNumeric(displayType)) if (!DisplayType.isNumeric(displayType))
displayType = DisplayType.Number; displayType = DisplayType.Number;
DecimalFormat format = DisplayType.getNumberFormat(displayType, Env.getLanguage(Env.getCtx())); DecimalFormat format = DisplayType.getNumberFormat(displayType, AEnv.getLanguage(Env.getCtx()));
getComponent().getDecimalbox().setFormat(format.toPattern()); getComponent().getDecimalbox().setFormat(format.toPattern());
} }

View File

@ -20,6 +20,7 @@ package org.adempiere.webui.panel;
import java.util.Properties; import java.util.Properties;
import java.util.ResourceBundle; import java.util.ResourceBundle;
import org.adempiere.webui.apps.AEnv;
import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.ConfirmPanel;
import org.adempiere.webui.component.Grid; import org.adempiere.webui.component.Grid;
import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Label;
@ -35,6 +36,7 @@ import org.compiere.util.Env;
import org.compiere.util.KeyNamePair; import org.compiere.util.KeyNamePair;
import org.compiere.util.Language; import org.compiere.util.Language;
import org.compiere.util.Login; import org.compiere.util.Login;
import org.zkoss.util.Locales;
import org.zkoss.zk.au.out.AuFocus; import org.zkoss.zk.au.out.AuFocus;
import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.WrongValueException; import org.zkoss.zk.ui.WrongValueException;
@ -218,15 +220,23 @@ public class LoginPanel extends Window implements EventListener
private void languageChanged(String langName) private void languageChanged(String langName)
{ {
Language language = Language.getLanguage(langName); Language language = findLanguage(langName);
Env.verifyLanguage(ctx, language);
Env.setContext(ctx, Env.LANGUAGE, language.getAD_Language());
res = ResourceBundle.getBundle(RESOURCE, language.getLocale()); res = ResourceBundle.getBundle(RESOURCE, language.getLocale());
lblUserId.setValue(res.getString("User")); lblUserId.setValue(res.getString("User"));
lblPassword.setValue(res.getString("Password")); lblPassword.setValue(res.getString("Password"));
lblLanguage.setValue(res.getString("Language")); lblLanguage.setValue(res.getString("Language"));
} }
private Language findLanguage(String langName) {
Language tmp = Language.getLanguage(langName);
Language language = new Language(tmp.getName(), tmp.getAD_Language(), tmp.getLocale(), tmp.isDecimalPoint(),
tmp.getDateFormat().toPattern(), tmp.getMediaSize());
Env.verifyLanguage(ctx, language);
Env.setContext(ctx, Env.LANGUAGE, language.getAD_Language());
Env.setContext(ctx, AEnv.LOCALE, language.getLocale().toString());
return language;
}
/** /**
* validates user name and password when logging in * validates user name and password when logging in
* *
@ -247,11 +257,12 @@ public class LoginPanel extends Window implements EventListener
langName = (String) lstLanguage.getSelectedItem().getLabel(); langName = (String) lstLanguage.getSelectedItem().getLabel();
else else
langName = Language.getBaseLanguage().getName(); langName = Language.getBaseLanguage().getName();
Language language = Language.getLanguage(langName); Language language = findLanguage(langName);
Env.verifyLanguage(ctx, language);
wndLogin.loginOk(userId, userPassword); wndLogin.loginOk(userId, userPassword);
Env.setContext(ctx, UserPreference.LANGUAGE_NAME, language.getName()); // Elaine 2009/02/06 Env.setContext(ctx, UserPreference.LANGUAGE_NAME, language.getName()); // Elaine 2009/02/06
Locales.setThreadLocal(language.getLocale());
} }
} }
} }

View File

@ -19,6 +19,7 @@ package org.adempiere.webui.session;
import java.util.List; import java.util.List;
import org.adempiere.webui.apps.AEnv;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.zkoss.util.Locales; import org.zkoss.util.Locales;
import org.zkoss.zk.ui.Component; import org.zkoss.zk.ui.Component;
@ -104,7 +105,7 @@ public class SessionContextListener implements ExecutionInit,
ServerContext.setCurrentInstance(ctx); ServerContext.setCurrentInstance(ctx);
// set locale // set locale
Locales.setThreadLocal(Env.getLanguage(ctx).getLocale()); Locales.setThreadLocal(AEnv.getLocale(ctx));
return true; return true;
} }