You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2007/02/22 23:07:36 UTC

svn commit: r510682 - in /ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen: ModelScreenWidget.java ScreenRenderer.java

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