You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2008/07/07 05:21:18 UTC
svn commit: r674387 - in /ofbiz/trunk/framework:
base/src/base/org/ofbiz/base/util/UtilProperties.java
base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java
widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
Author: adrianc
Date: Sun Jul 6 20:21:18 2008
New Revision: 674387
URL: http://svn.apache.org/viewvc?rev=674387&view=rev
Log:
Improved screen widget UI label rendering - now expands expressions contained in UI labels (${...}).
Modified:
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilProperties.java
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilProperties.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilProperties.java?rev=674387&r1=674386&r2=674387&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilProperties.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilProperties.java Sun Jul 6 20:21:18 2008
@@ -503,6 +503,17 @@
return new ResourceBundleMapWrapper(getResourceBundle(resource, locale));
}
+ /** Returns the specified resource/properties file as a Map with the original
+ * ResourceBundle in the Map under the key _RESOURCE_BUNDLE_
+ * @param resource The name of the resource - can be a file, class, or URL
+ * @param locale The locale that the given resource will correspond to
+ * @param context The screen rendering context
+ * @return Map containing all entries in The ResourceBundle
+ */
+ public static Map<String, Object> getResourceBundleMap(String resource, Locale locale, Map<String, Object> context) {
+ return new ResourceBundleMapWrapper(getResourceBundle(resource, locale), context);
+ }
+
/** Returns the specified resource/properties file.<p>Note that this method
* will return a Properties instance for the specified locale <em>only</em> -
* if you need <a href="http://www.w3.org/International/">I18n</a> properties, then use
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java?rev=674387&r1=674386&r2=674387&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/collections/ResourceBundleMapWrapper.java Sun Jul 6 20:21:18 2008
@@ -28,7 +28,7 @@
import java.util.Set;
import org.ofbiz.base.util.UtilProperties;
-
+import org.ofbiz.base.util.string.FlexibleStringExpander;
/**
* Generic ResourceBundle Map Wrapper, given ResourceBundle allows it to be used as a Map
@@ -38,6 +38,7 @@
protected MapStack<String> rbmwStack;
protected ResourceBundle initialResourceBundle;
+ protected Map<String, Object> context;
protected ResourceBundleMapWrapper() {
rbmwStack = MapStack.create();
@@ -51,8 +52,7 @@
this.rbmwStack = MapStack.create(initialInternalRbmWrapper);
}
- /**
- * When creating new from a ResourceBundle the one passed to the constructor should be the most specific or local ResourceBundle, with more common ones pushed onto the stack progressively.
+ /** When creating new from a ResourceBundle the one passed to the constructor should be the most specific or local ResourceBundle, with more common ones pushed onto the stack progressively.
*/
public ResourceBundleMapWrapper(ResourceBundle initialResourceBundle) {
if (initialResourceBundle == null) {
@@ -62,6 +62,17 @@
this.rbmwStack = MapStack.create(new InternalRbmWrapper(initialResourceBundle));
}
+ /** When creating new from a ResourceBundle the one passed to the constructor should be the most specific or local ResourceBundle, with more common ones pushed onto the stack progressively.
+ */
+ public ResourceBundleMapWrapper(ResourceBundle initialResourceBundle, Map<String, Object> context) {
+ if (initialResourceBundle == null) {
+ throw new IllegalArgumentException("Cannot create ResourceBundleMapWrapper with a null initial ResourceBundle.");
+ }
+ this.initialResourceBundle = initialResourceBundle;
+ this.rbmwStack = MapStack.create(new InternalRbmWrapper(initialResourceBundle));
+ this.context = context;
+ }
+
/** Puts ResourceBundle on the BOTTOM of the stack (bottom meaning will be overriden by higher layers on the stack, ie everything else already there) */
public void addBottomResourceBundle(ResourceBundle topResourceBundle) {
this.rbmwStack.addToBottom(new InternalRbmWrapper(topResourceBundle));
@@ -107,6 +118,11 @@
Object value = this.rbmwStack.get(arg0);
if (value == null) {
value = arg0;
+ } else {
+ String str = (String) value;
+ if (str.contains("${") && context != null) {
+ return FlexibleStringExpander.expandString(str, context);
+ }
}
return value;
}
@@ -114,7 +130,7 @@
return this.rbmwStack.isEmpty();
}
public Set<String> keySet() {
- return this.keySet();
+ return this.rbmwStack.keySet();
}
public Object put(String key, Object value) {
return this.rbmwStack.put(key, value);
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java?rev=674387&r1=674386&r2=674387&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java Sun Jul 6 20:21:18 2008
@@ -25,8 +25,8 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.regex.PatternSyntaxException;
import java.util.TimeZone;
+import java.util.regex.PatternSyntaxException;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpSession;
@@ -47,8 +47,8 @@
import org.ofbiz.base.util.collections.FlexibleMapAccessor;
import org.ofbiz.base.util.collections.ResourceBundleMapWrapper;
import org.ofbiz.base.util.string.FlexibleStringExpander;
-import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.GenericEntityException;
+import org.ofbiz.entity.GenericValue;
import org.ofbiz.entity.finder.ByAndFinder;
import org.ofbiz.entity.finder.ByConditionFinder;
import org.ofbiz.entity.finder.EntityFinderUtil;
@@ -300,7 +300,7 @@
ResourceBundleMapWrapper existingPropMap = (ResourceBundleMapWrapper) this.mapNameAcsr.get(context);
if (existingPropMap == null) {
- this.mapNameAcsr.put(context, UtilProperties.getResourceBundleMap(resource, locale));
+ this.mapNameAcsr.put(context, UtilProperties.getResourceBundleMap(resource, locale, context));
} else {
existingPropMap.addBottomResourceBundle(resource);
}
@@ -310,7 +310,7 @@
if (globalCtx != null) {
ResourceBundleMapWrapper globalExistingPropMap = (ResourceBundleMapWrapper) this.mapNameAcsr.get(globalCtx);
if (globalExistingPropMap == null) {
- this.mapNameAcsr.put(globalCtx, UtilProperties.getResourceBundleMap(resource, locale));
+ this.mapNameAcsr.put(globalCtx, UtilProperties.getResourceBundleMap(resource, locale, context));
} else {
// is it the same object? if not add it in here too...
if (existingPropMap != globalExistingPropMap) {