Author: adrianc
Date: Wed Sep 11 19:31:14 2013
New Revision: 1522002

URL: http://svn.apache.org/r1522002
Log:
Refactored MacroScreenViewHandler.java so it doesn't require empty "do nothing" 
templates.

https://issues.apache.org/jira/browse/OFBIZ-5310

Modified:
    ofbiz/trunk/framework/widget/config/widget.properties
    
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
    
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java

Modified: ofbiz/trunk/framework/widget/config/widget.properties
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/config/widget.properties?rev=1522002&r1=1522001&r2=1522002&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/config/widget.properties (original)
+++ ofbiz/trunk/framework/widget/config/widget.properties Wed Sep 11 19:31:14 
2013
@@ -73,7 +73,6 @@ screen.default.encoding=none
 screentext.name=text
 
screentext.screenrenderer=component://widget/templates/textScreenMacroLibrary.ftl
 screentext.formrenderer=component://widget/templates/textFormMacroLibrary.ftl
-screentext.menurenderer=component://widget/templates/textMenuMacroLibrary.ftl
 screentext.treerenderer=component://widget/templates/textTreeMacroLibrary.ftl
 screentext.default.contenttype=UTF-8
 screentext.default.encoding=none
@@ -81,7 +80,6 @@ screentext.default.encoding=none
 screenxml.name=xml
 screenxml.screenrenderer=component://widget/templates/xmlScreenMacroLibrary.ftl
 screenxml.formrenderer=component://widget/templates/xmlFormMacroLibrary.ftl
-screenxml.menurenderer=component://widget/templates/xmlMenuMacroLibrary.ftl
 screenxml.treerenderer=component://widget/templates/xmlTreeMacroLibrary.ftl
 screenxml.encoder=xml
 screenxml.default.contenttype=UTF-8
@@ -90,7 +88,6 @@ screenxml.default.encoding=none
 screenfop.name=xsl-fo
 screenfop.screenrenderer=component://widget/templates/foScreenMacroLibrary.ftl
 screenfop.formrenderer=component://widget/templates/foFormMacroLibrary.ftl
-screenfop.menurenderer=component://widget/templates/foMenuMacroLibrary.ftl
 screenfop.treerenderer=component://widget/templates/foTreeMacroLibrary.ftl
 screenfop.default.contenttype=application/pdf
 screenfop.default.encoding=none
@@ -98,7 +95,6 @@ screenfop.default.encoding=none
 screencsv.name=csv
 screencsv.screenrenderer=component://widget/templates/csvScreenMacroLibrary.ftl
 screencsv.formrenderer=component://widget/templates/csvFormMacroLibrary.ftl
-screencsv.menurenderer=component://widget/templates/csvMenuMacroLibrary.ftl
 screencsv.treerenderer=component://widget/templates/csvTreeMacroLibrary.ftl
 screencsv.default.contenttype=UTF-8
 screencsv.default.encoding=none

Modified: 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java?rev=1522002&r1=1522001&r2=1522002&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
 (original)
+++ 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenViewHandler.java
 Wed Sep 11 19:31:14 2013
@@ -88,17 +88,24 @@ public class MacroScreenViewHandler exte
                 // to speed up output.
                 writer = new StandardCompress().getWriter(writer, null);
             }
-
             ScreenStringRenderer screenStringRenderer = new 
MacroScreenRenderer(UtilProperties.getPropertyValue("widget", getName() + 
".name"), UtilProperties.getPropertyValue("widget", getName() + 
".screenrenderer"));
-            FormStringRenderer formStringRenderer = new 
MacroFormRenderer(UtilProperties.getPropertyValue("widget", getName() + 
".formrenderer"), request, response);
-            TreeStringRenderer treeStringRenderer = new 
MacroTreeRenderer(UtilProperties.getPropertyValue("widget", getName() + 
".treerenderer"), writer);
-            MenuStringRenderer menuStringRenderer = new 
MacroMenuRenderer(UtilProperties.getPropertyValue("widget", getName() + 
".menurenderer"), request, response);
-
             ScreenRenderer screens = new ScreenRenderer(writer, null, 
screenStringRenderer);
             screens.populateContextForRequest(request, response, 
servletContext);
-            screens.getContext().put("formStringRenderer", formStringRenderer);
-            screens.getContext().put("treeStringRenderer", treeStringRenderer);
-            screens.getContext().put("menuStringRenderer", menuStringRenderer);
+            String macroLibraryPath = 
UtilProperties.getPropertyValue("widget", getName() + ".formrenderer");
+            if (UtilValidate.isNotEmpty(macroLibraryPath)) {
+                FormStringRenderer formStringRenderer = new 
MacroFormRenderer(macroLibraryPath, request, response);
+                screens.getContext().put("formStringRenderer", 
formStringRenderer);
+            }
+            macroLibraryPath = UtilProperties.getPropertyValue("widget", 
getName() + ".treerenderer");
+            if (UtilValidate.isNotEmpty(macroLibraryPath)) {
+                TreeStringRenderer treeStringRenderer = new 
MacroTreeRenderer(macroLibraryPath, writer);
+                screens.getContext().put("treeStringRenderer", 
treeStringRenderer);
+            }
+            macroLibraryPath = UtilProperties.getPropertyValue("widget", 
getName() + ".menurenderer");
+            if (UtilValidate.isNotEmpty(macroLibraryPath)) {
+                MenuStringRenderer menuStringRenderer = new 
MacroMenuRenderer(macroLibraryPath, request, response);
+                screens.getContext().put("menuStringRenderer", 
menuStringRenderer);
+            }
             screens.getContext().put("simpleEncoder", 
StringUtil.getEncoder(UtilProperties.getPropertyValue("widget", getName() + 
".encoder")));
             screenStringRenderer.renderScreenBegin(writer, 
screens.getContext());
             screens.render(page);

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?rev=1522002&r1=1522001&r2=1522002&view=diff
==============================================================================
--- 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java 
(original)
+++ 
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenWidget.java 
Wed Sep 11 19:31:14 2013
@@ -19,16 +19,14 @@
 package org.ofbiz.widget.screen;
 
 import java.io.IOException;
+import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
 import java.util.ListIterator;
+import java.util.Map;
 
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
 import javax.xml.parsers.ParserConfigurationException;
 
 import javolution.util.FastList;
@@ -47,16 +45,15 @@ import org.ofbiz.base.util.string.Flexib
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
+import org.ofbiz.entity.condition.EntityCondition;
 import org.ofbiz.widget.ModelWidget;
 import org.ofbiz.widget.ModelWidgetAction;
+import org.ofbiz.widget.PortalPageWorker;
 import org.ofbiz.widget.WidgetFactory;
 import org.ofbiz.widget.WidgetWorker;
-import org.ofbiz.widget.PortalPageWorker;
 import org.ofbiz.widget.form.FormFactory;
 import org.ofbiz.widget.form.FormStringRenderer;
 import org.ofbiz.widget.form.ModelForm;
-import org.ofbiz.widget.html.HtmlFormRenderer;
-import org.ofbiz.widget.html.HtmlMenuRenderer;
 import org.ofbiz.widget.menu.MenuFactory;
 import org.ofbiz.widget.menu.MenuStringRenderer;
 import org.ofbiz.widget.menu.ModelMenu;
@@ -65,7 +62,6 @@ import org.ofbiz.widget.tree.TreeFactory
 import org.ofbiz.widget.tree.TreeStringRenderer;
 import org.w3c.dom.Element;
 import org.xml.sax.SAXException;
-import org.ofbiz.entity.condition.*;
 
 
 /**
@@ -811,6 +807,12 @@ public abstract class ModelScreenWidget 
 
         @Override
         public void renderWidgetString(Appendable writer, Map<String, Object> 
context, ScreenStringRenderer screenStringRenderer) {
+            // Output format might not support forms, so make form rendering 
optional.
+            FormStringRenderer formStringRenderer = (FormStringRenderer) 
context.get("formStringRenderer");
+            if (formStringRenderer == null) {
+                Debug.logVerbose("FormStringRenderer instance not found in 
rendering context, form not rendered.", module);
+                return;
+            }
             boolean protectScope = !shareScope(context);
             if (protectScope) {
                 if (!(context instanceof MapStack<?>)) {
@@ -818,22 +820,6 @@ public abstract class ModelScreenWidget 
                 }
                 UtilGenerics.<MapStack<String>>cast(context).push();
             }
-
-            // try finding the formStringRenderer by name in the context in 
case one was prepared and put there
-            FormStringRenderer formStringRenderer = (FormStringRenderer) 
context.get("formStringRenderer");
-            // if there was no formStringRenderer put in place, now try 
finding the request/response in the context and creating a new one
-            if (formStringRenderer == null) {
-                HttpServletRequest request = (HttpServletRequest) 
context.get("request");
-                HttpServletResponse response = (HttpServletResponse) 
context.get("response");
-                if (request != null && response != null) {
-                    formStringRenderer = new HtmlFormRenderer(request, 
response);
-                }
-            }
-            // still null, throw an error
-            if (formStringRenderer == null) {
-                throw new IllegalArgumentException("Could not find a 
formStringRenderer in the context, and could not find HTTP request/response 
objects need to create one.");
-            }
-
             ModelForm modelForm = getModelForm(context);
             //Debug.logInfo("before renderFormString, context:" + context, 
module);
             try {
@@ -899,6 +885,12 @@ public abstract class ModelScreenWidget 
 
         @Override
         public void renderWidgetString(Appendable writer, Map<String, Object> 
context, ScreenStringRenderer screenStringRenderer) throws GeneralException, 
IOException {
+            // Output format might not support trees, so make tree rendering 
optional.
+            TreeStringRenderer treeStringRenderer = (TreeStringRenderer) 
context.get("treeStringRenderer");
+            if (treeStringRenderer == null) {
+                Debug.logVerbose("TreeStringRenderer instance not found in 
rendering context, tree not rendered.", module);
+                return;
+            }
             boolean protectScope = !shareScope(context);
             if (protectScope) {
                 if (!(context instanceof MapStack<?>)) {
@@ -925,12 +917,6 @@ public abstract class ModelScreenWidget 
                 Debug.logError(e, errMsg, module);
                 throw new RuntimeException(errMsg);
             }
-
-            TreeStringRenderer treeStringRenderer = (TreeStringRenderer) 
context.get("treeStringRenderer");
-            if (treeStringRenderer == null) {
-                throw new IllegalArgumentException("Could not find a 
treeStringRenderer in the context");
-            }
-
             StringBuffer renderBuffer = new StringBuffer();
             modelTree.renderTreeString(renderBuffer, context, 
treeStringRenderer);
             try {
@@ -1322,21 +1308,12 @@ public abstract class ModelScreenWidget 
 
         @Override
         public void renderWidgetString(Appendable writer, Map<String, Object> 
context, ScreenStringRenderer screenStringRenderer) throws IOException {
-            // try finding the menuStringRenderer by name in the context in 
case one was prepared and put there
+            // Output format might not support menus, so make menu rendering 
optional.
             MenuStringRenderer menuStringRenderer = (MenuStringRenderer) 
context.get("menuStringRenderer");
-            // if there was no menuStringRenderer put in place, now try 
finding the request/response in the context and creating a new one
-            if (menuStringRenderer == null) {
-                HttpServletRequest request = (HttpServletRequest) 
context.get("request");
-                HttpServletResponse response = (HttpServletResponse) 
context.get("response");
-                if (request != null && response != null) {
-                    menuStringRenderer = new HtmlMenuRenderer(request, 
response);
-                }
-            }
-            // still null, throw an error
             if (menuStringRenderer == null) {
-                throw new IllegalArgumentException("Could not find a 
menuStringRenderer in the context, and could not find HTTP request/response 
objects need to create one.");
+                Debug.logVerbose("MenuStringRenderer instance not found in 
rendering context, menu not rendered.", module);
+                return;
             }
-
             ModelMenu modelMenu = getModelMenu(context);
             modelMenu.renderMenuString(writer, context, menuStringRenderer);
         }


Reply via email to