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"));
     }
 }


Reply via email to