Author: jaz
Date: Thu Feb 22 14:07:35 2007
New Revision: 510682
URL: http://svn.apache.org/viewvc?view=rev&rev=510682
Log:
added some ways to plug into the screen widget from outside
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java?view=diff&rev=510682&r1=510681&r2=510682
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java
Thu Feb 22 14:07:35 2007
@@ -536,12 +536,23 @@
}
public void renderWidgetString(Writer writer, Map context,
ScreenStringRenderer screenStringRenderer) throws GeneralException {
- SectionsRenderer sections = (SectionsRenderer)
context.get("sections");
- // for now if sections is null, just log a warning; may be
permissible to make the screen for flexible
- if (sections == null) {
- Debug.logWarning("In decorator-section-include could not find
sections object in the context, not rendering section with name [" + this.name
+ "]", module);
+ Map preRenderedContent = (Map) context.get("preRenderedContent");
+ if (preRenderedContent != null &&
preRenderedContent.containsKey(this.name)) {
+ try {
+ writer.write((String) preRenderedContent.get(this.name));
+ } catch (IOException e) {
+ String errMsg = "Error rendering pre-rendered content in
screen named [" + this.modelScreen.getName() + "]: " + e.toString();
+ Debug.logError(e, errMsg, module);
+ throw new RuntimeException(errMsg);
+ }
} else {
- sections.render(this.name);
+ SectionsRenderer sections = (SectionsRenderer)
context.get("sections");
+ // for now if sections is null, just log a warning; may be
permissible to make the screen for flexible
+ if (sections == null) {
+ Debug.logWarning("In decorator-section-include could not
find sections object in the context, not rendering section with name [" +
this.name + "]", module);
+ } else {
+ sections.render(this.name);
+ }
}
}
Modified:
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java?view=diff&rev=510682&r1=510681&r2=510682
==============================================================================
---
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
(original)
+++
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
Thu Feb 22 14:07:35 2007
@@ -111,9 +111,13 @@
}
public void populateBasicContext(Map parameters, GenericDelegator
delegator, LocalDispatcher dispatcher, Security security, Locale locale,
GenericValue userLogin) {
+ populateBasicContext(context, this, parameters, delegator, dispatcher,
security, locale, userLogin);
+ }
+
+ public static void populateBasicContext(MapStack context, ScreenRenderer
screens, Map parameters, GenericDelegator delegator, LocalDispatcher
dispatcher, Security security, Locale locale, GenericValue userLogin) {
// ========== setup values that should always be in a screen context
// include an object to more easily render screens
- context.put("screens", this);
+ context.put("screens", screens);
// make a reference for high level variables, a global context
context.put("globalContext", context.standAloneStack());
@@ -141,6 +145,10 @@
* @param servletContext
*/
public void populateContextForRequest(HttpServletRequest request,
HttpServletResponse response, ServletContext servletContext) {
+ populateContextForRequest(context, this, request, response,
servletContext);
+ }
+
+ public static void populateContextForRequest(MapStack context,
ScreenRenderer screens, HttpServletRequest request, HttpServletResponse
response, ServletContext servletContext) {
HttpSession session = request.getSession();
// attribute names to skip for session and application attributes;
these are all handled as special cases, duplicating results and causing
undesired messages
@@ -215,7 +223,7 @@
GenericValue userLogin = (GenericValue)
session.getAttribute("userLogin");
- this.populateBasicContext(parameterMap, (GenericDelegator)
request.getAttribute("delegator"),
+ populateBasicContext(context, screens, parameterMap,
(GenericDelegator) request.getAttribute("delegator"),
(LocalDispatcher) request.getAttribute("dispatcher"),
(Security) request.getAttribute("security"),
UtilHttp.getLocale(request), userLogin);
@@ -324,9 +332,9 @@
public Map getContext() {
return context;
}
-
+
public void populateContextForService(DispatchContext dctx, Map
serviceContext) {
- this.populateBasicContext(serviceContext, dctx.getDelegator(),
dctx.getDispatcher(), dctx.getSecurity(),
+ this.populateBasicContext(serviceContext, dctx.getDelegator(),
dctx.getDispatcher(), dctx.getSecurity(),
(Locale) serviceContext.get("locale"), (GenericValue)
serviceContext.get("userLogin"));
}
}