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")); } } |
Free forum by Nabble | Edit this page |