You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2015/01/17 17:47:24 UTC

svn commit: r1652638 [5/6] - in /ofbiz/trunk/framework/widget: dtd/ src/org/ofbiz/widget/ src/org/ofbiz/widget/artifact/ src/org/ofbiz/widget/fo/ src/org/ofbiz/widget/form/ src/org/ofbiz/widget/html/ src/org/ofbiz/widget/menu/ src/org/ofbiz/widget/scre...

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuItem.java Sat Jan 17 16:47:23 2015
@@ -26,25 +26,22 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 
-import javax.xml.parsers.ParserConfigurationException;
-
 import org.ofbiz.base.util.Debug;
-import org.ofbiz.base.util.UtilCodec;
-import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.UtilXml;
-import org.ofbiz.base.util.collections.FlexibleMapAccessor;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.entity.GenericValue;
+import org.ofbiz.widget.AbstractModelAction;
+import org.ofbiz.widget.CommonWidgetModels.AutoEntityParameters;
+import org.ofbiz.widget.CommonWidgetModels.AutoServiceParameters;
+import org.ofbiz.widget.CommonWidgetModels.Image;
+import org.ofbiz.widget.CommonWidgetModels.Link;
+import org.ofbiz.widget.CommonWidgetModels.Parameter;
+import org.ofbiz.widget.ModelAction;
 import org.ofbiz.widget.ModelWidget;
-import org.ofbiz.widget.ModelWidgetAction;
 import org.ofbiz.widget.ModelWidgetVisitor;
 import org.ofbiz.widget.PortalPageWorker;
-import org.ofbiz.widget.WidgetWorker.AutoEntityParameters;
-import org.ofbiz.widget.WidgetWorker.AutoServiceParameters;
-import org.ofbiz.widget.WidgetWorker.Parameter;
 import org.w3c.dom.Element;
-import org.xml.sax.SAXException;
 
 /**
  * Models the <menu-item> element.
@@ -70,7 +67,7 @@ public class ModelMenuItem extends Model
 
     public static final String module = ModelMenuItem.class.getName();
 
-    private final List<ModelWidgetAction> actions;
+    private final List<ModelAction> actions;
     private final String align;
     private final String alignStyle;
     private final FlexibleStringExpander associatedContentId;
@@ -80,7 +77,7 @@ public class ModelMenuItem extends Model
     private final String disableIfEmpty;
     private final String entityName;
     private final Boolean hideIfSelected;
-    private final Link link;
+    private final MenuLink link;
     private final List<ModelMenuItem> menuItemList;
     private final ModelMenu modelMenu;
     private final String overrideName;
@@ -88,7 +85,7 @@ public class ModelMenuItem extends Model
     private final FlexibleStringExpander parentPortalPageId;
     private final Integer position;
     private final String selectedStyle;
-    private final ModelMenu subMenu;
+    private final String subMenu;
     private final FlexibleStringExpander title;
     private final String titleStyle;
     private final FlexibleStringExpander tooltip;
@@ -139,31 +136,10 @@ public class ModelMenuItem extends Model
         this.position = position;
         this.associatedContentId = FlexibleStringExpander.getInstance(menuItemElement.getAttribute("associated-content-id"));
         this.cellWidth = menuItemElement.getAttribute("cell-width");
-        Element subMenuElement = UtilXml.firstChildElement(menuItemElement, "sub-menu");
-        if (subMenuElement != null) {
-            String subMenuLocation = subMenuElement.getAttribute("location");
-            String subMenuName = subMenuElement.getAttribute("name");
-            try {
-                this.subMenu = MenuFactory.getMenuFromLocation(subMenuLocation, subMenuName);
-            } catch (IOException e) {
-                String errMsg = "Error getting subMenu in menu named [" + this.modelMenu.getName() + "]: " + e.toString();
-                Debug.logError(e, errMsg, module);
-                throw new RuntimeException(errMsg);
-            } catch (SAXException e2) {
-                String errMsg = "Error getting subMenu in menu named [" + this.modelMenu.getName() + "]: " + e2.toString();
-                Debug.logError(e2, errMsg, module);
-                throw new RuntimeException(errMsg);
-            } catch (ParserConfigurationException e3) {
-                String errMsg = "Error getting subMenu in menu named [" + this.modelMenu.getName() + "]: " + e3.toString();
-                Debug.logError(e3, errMsg, module);
-                throw new RuntimeException(errMsg);
-            }
-        } else {
-            this.subMenu = null;
-        }
+        this.subMenu = menuItemElement.getAttribute("sub-menu");
         Element linkElement = UtilXml.firstChildElement(menuItemElement, "link");
         if (linkElement != null) {
-            this.link = new Link(linkElement, this);
+            this.link = new MenuLink(linkElement, this);
         } else {
             this.link = null;
         }
@@ -184,6 +160,7 @@ public class ModelMenuItem extends Model
         // read condition under the "condition" element
         Element conditionElement = UtilXml.firstChildElement(menuItemElement, "condition");
         if (conditionElement != null) {
+            conditionElement = UtilXml.firstChildElement(conditionElement);
             this.condition = new ModelMenuCondition(this, conditionElement);
         } else {
             this.condition = null;
@@ -191,7 +168,7 @@ public class ModelMenuItem extends Model
         // read all actions under the "actions" element
         Element actionsElement = UtilXml.firstChildElement(conditionElement, "actions");
         if (actionsElement != null) {
-            this.actions = ModelWidgetAction.readSubActions(this, actionsElement);
+            this.actions = AbstractModelAction.readSubActions(this, actionsElement);
         } else {
             this.actions = Collections.emptyList();
         }
@@ -217,13 +194,13 @@ public class ModelMenuItem extends Model
         this.parentPortalPageId = FlexibleStringExpander.getInstance(portalPage.getString("parentPortalPageId"));
         this.position = null;
         this.selectedStyle = "";
-        this.subMenu = null;
+        this.subMenu = "";
         this.title = FlexibleStringExpander.getInstance((String) portalPage.get("portalPageName", locale));
         this.titleStyle = "";
         this.tooltip = FlexibleStringExpander.getInstance("");
         this.tooltipStyle = "";
         this.widgetStyle = "";
-        this.link = new Link(portalPage, parentMenuItem, locale);
+        this.link = new MenuLink(portalPage, parentMenuItem, locale);
         this.modelMenu = parentMenuItem.modelMenu;
     }
 
@@ -313,7 +290,7 @@ public class ModelMenuItem extends Model
         }
     }
 
-    public List<ModelWidgetAction> getActions() {
+    public List<ModelAction> getActions() {
         return actions;
     }
 
@@ -396,7 +373,7 @@ public class ModelMenuItem extends Model
         }
     }
 
-    public Link getLink() {
+    public MenuLink getLink() {
         return this.link;
     }
 
@@ -450,7 +427,7 @@ public class ModelMenuItem extends Model
         }
     }
 
-    public ModelMenu getSubMenu() {
+    public String getSubMenu() {
         return subMenu;
     }
 
@@ -515,7 +492,7 @@ public class ModelMenuItem extends Model
     public void renderMenuItemString(Appendable writer, Map<String, Object> context, MenuStringRenderer menuStringRenderer)
             throws IOException {
         if (shouldBeRendered(context)) {
-            ModelWidgetAction.runSubActions(actions, context);
+            AbstractModelAction.runSubActions(actions, context);
             String parentPortalPageId = getParentPortalPageId(context);
             if (UtilValidate.isNotEmpty(parentPortalPageId)) {
                 List<GenericValue> portalPages = PortalPageWorker.getPortalPages(parentPortalPageId, context);
@@ -536,286 +513,149 @@ public class ModelMenuItem extends Model
 
     public boolean shouldBeRendered(Map<String, Object> context) {
         if (this.condition != null) {
-            return this.condition.eval(context);
+            return this.condition.getCondition().eval(context);
         }
         return true;
     }
 
-    public static class Image {
+    public static class MenuLink {
+        private final ModelMenuItem linkMenuItem;
+        private final Link link;
 
-        private final FlexibleStringExpander borderExdr;
-        private final FlexibleStringExpander heightExdr;
-        private final FlexibleStringExpander idExdr;
-        private final FlexibleStringExpander srcExdr;
-        private final FlexibleStringExpander styleExdr;
-        private final String urlMode;
-        private final FlexibleStringExpander widthExdr;
-
-        public Image(Element imageElement) {
-            this.borderExdr = FlexibleStringExpander.getInstance(UtilXml.checkEmpty(imageElement.getAttribute("border"), "0"));
-            this.heightExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("height"));
-            this.idExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("id"));
-            this.srcExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("src"));
-            this.styleExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("style"));
-            this.urlMode = UtilXml.checkEmpty(imageElement.getAttribute("url-mode"), "content");
-            this.widthExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("width"));
+        public AutoEntityParameters getAutoEntityParameters() {
+            return link.getAutoEntityParameters();
         }
 
-        public String getBorder(Map<String, Object> context) {
-            return this.borderExdr.expandString(context);
+        public AutoServiceParameters getAutoServiceParameters() {
+            return link.getAutoServiceParameters();
         }
 
-        public String getHeight(Map<String, Object> context) {
-            return this.heightExdr.expandString(context);
+        public boolean getEncode() {
+            return link.getEncode();
         }
 
-        public String getId(Map<String, Object> context) {
-            return this.idExdr.expandString(context);
+        public boolean getFullPath() {
+            return link.getFullPath();
         }
 
-        public String getSrc(Map<String, Object> context) {
-            return this.srcExdr.expandString(context);
+        public String getHeight() {
+            return link.getHeight();
         }
 
-        public String getStyle(Map<String, Object> context) {
-            return this.styleExdr.expandString(context);
+        public String getId(Map<String, Object> context) {
+            return link.getId(context);
         }
 
-        public String getUrlMode() {
-            return this.urlMode;
+        public FlexibleStringExpander getIdExdr() {
+            return link.getIdExdr();
         }
 
-        public String getWidth(Map<String, Object> context) {
-            return this.widthExdr.expandString(context);
+        public Image getImage() {
+            return link.getImage();
         }
 
-        public void renderImageString(Appendable writer, Map<String, Object> context, MenuStringRenderer menuStringRenderer)
-                throws IOException {
-            menuStringRenderer.renderImage(writer, context, this);
+        public String getLinkType() {
+            return link.getLinkType();
         }
-    }
 
-    public static class Link {
-        private final AutoEntityParameters autoEntityParameters;
-        private final AutoServiceParameters autoServiceParameters;
-        private final FlexibleStringExpander confirmationMsgExdr;
-        private final boolean encode;
-        private final boolean fullPath;
-        private final FlexibleStringExpander idExdr;
-        private final Image image;
-        private final ModelMenuItem linkMenuItem;
-        private final String linkType;
-        private final FlexibleStringExpander nameExdr;
-        private final List<Parameter> parameterList;
-        private final FlexibleMapAccessor<Map<String, String>> parametersMapAcsr;
-        private final FlexibleStringExpander prefixExdr;
-        private final boolean requestConfirmation;
-        private final boolean secure;
-        private final FlexibleStringExpander styleExdr;
-        private final FlexibleStringExpander targetExdr;
-        private final FlexibleStringExpander targetWindowExdr;
-        private final FlexibleStringExpander textExdr;
-        private final String urlMode;
-
-        public Link(Element linkElement, ModelMenuItem parentMenuItem) {
-            Element autoEntityParamsElement = UtilXml.firstChildElement(linkElement, "auto-parameters-entity");
-            if (autoEntityParamsElement != null) {
-                this.autoEntityParameters = new AutoEntityParameters(autoEntityParamsElement);
-            } else {
-                this.autoEntityParameters = null;
-            }
-            Element autoServiceParamsElement = UtilXml.firstChildElement(linkElement, "auto-parameters-service");
-            if (autoServiceParamsElement != null) {
-                this.autoServiceParameters = new AutoServiceParameters(autoServiceParamsElement);
-            } else {
-                this.autoServiceParameters = null;
-            }
-            this.confirmationMsgExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("confirmation-message"));
-            this.encode = "true".equals(linkElement.getAttribute("encode"));
-            this.fullPath = "true".equals(linkElement.getAttribute("full-path"));
-            this.idExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("id"));
-            Element imageElement = UtilXml.firstChildElement(linkElement, "image");
-            if (imageElement != null) {
-                this.image = new Image(imageElement);
-            } else {
-                this.image = null;
-            }
-            this.linkMenuItem = parentMenuItem;
-            this.linkType = linkElement.getAttribute("link-type");
-            this.nameExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("name"));
-            List<? extends Element> parameterElementList = UtilXml.childElementList(linkElement, "parameter");
-            if (!parameterElementList.isEmpty()) {
-                List<Parameter> parameterList = new ArrayList<Parameter>(parameterElementList.size());
-                for (Element parameterElement : parameterElementList) {
-                    parameterList.add(new Parameter(parameterElement));
-                }
-                this.parameterList = Collections.unmodifiableList(parameterList);
-            } else {
-                this.parameterList = Collections.emptyList();
-            }
-            this.parametersMapAcsr = FlexibleMapAccessor.getInstance(linkElement.getAttribute("parameters-map"));
-            this.prefixExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("prefix"));
-            this.requestConfirmation = "true".equals(linkElement.getAttribute("request-confirmation"));
-            this.secure = "true".equals(linkElement.getAttribute("secure"));
-            this.styleExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("style"));
-            this.targetExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("target"));
-            this.targetWindowExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("target-window"));
-            this.textExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("text"));
-            this.urlMode = UtilXml.checkEmpty(linkElement.getAttribute("url-mode"), "intra-app");
-        }
-
-        public Link(GenericValue portalPage, ModelMenuItem parentMenuItem, Locale locale) {
-            this.autoEntityParameters = null;
-            this.autoServiceParameters = null;
-            this.confirmationMsgExdr = FlexibleStringExpander.getInstance("");
-            this.encode = false;
-            this.fullPath = false;
-            this.idExdr = FlexibleStringExpander.getInstance("");
-            this.image = null;
-            this.linkMenuItem = parentMenuItem;
-            this.linkType = "";
-            this.nameExdr = FlexibleStringExpander.getInstance("");
-            ArrayList<Parameter> parameterList = new ArrayList<Parameter>();
-            if (parentMenuItem.link != null) {
-                parameterList.addAll(parentMenuItem.link.parameterList);
-            }
-            parameterList.add(new Parameter("portalPageId", portalPage.getString("portalPageId"), false));
-            parameterList.add(new Parameter("parentPortalPageId", portalPage.getString("parentPortalPageId"), false));
-            parameterList.trimToSize();
-            this.parameterList = Collections.unmodifiableList(parameterList);
-            this.parametersMapAcsr = FlexibleMapAccessor.getInstance("");
-            this.prefixExdr = FlexibleStringExpander.getInstance("");
-            this.requestConfirmation = false;
-            this.secure = false;
-            this.styleExdr = FlexibleStringExpander.getInstance("");
-            if (parentMenuItem.link != null) {
-                this.targetExdr = FlexibleStringExpander.getInstance("");
-            } else {
-                this.targetExdr = FlexibleStringExpander.getInstance("showPortalPage");
-            }
-            this.targetWindowExdr = FlexibleStringExpander.getInstance("");
-            this.textExdr = FlexibleStringExpander.getInstance((String) portalPage.get("portalPageName", locale));
-            this.urlMode = "intra-app";
+        public String getName() {
+            return link.getName();
         }
 
-        public String getConfirmation(Map<String, Object> context) {
-            String message = getConfirmationMsg(context);
-            if (UtilValidate.isNotEmpty(message)) {
-                return message;
-            } else if (getRequestConfirmation()) {
-                FlexibleStringExpander defaultMessage = FlexibleStringExpander.getInstance(UtilProperties.getPropertyValue(
-                        "general", "default.confirmation.message", "${uiLabelMap.CommonConfirm}"));
-                return defaultMessage.expandString(context);
-            }
-            return "";
+        public String getName(Map<String, Object> context) {
+            return link.getName(context);
         }
 
-        public String getConfirmationMsg(Map<String, Object> context) {
-            return this.confirmationMsgExdr.expandString(context);
+        public FlexibleStringExpander getNameExdr() {
+            return link.getNameExdr();
         }
 
-        public boolean getEncode() {
-            return this.encode;
+        public List<Parameter> getParameterList() {
+            return link.getParameterList();
         }
 
-        public boolean getFullPath() {
-            return this.fullPath;
+        public Map<String, String> getParameterMap(Map<String, Object> context) {
+            return link.getParameterMap(context);
         }
 
-        public String getId(Map<String, Object> context) {
-            return this.idExdr.expandString(context);
+        public String getPrefix(Map<String, Object> context) {
+            return link.getPrefix(context);
         }
 
-        public Image getImage() {
-            return this.image;
+        public FlexibleStringExpander getPrefixExdr() {
+            return link.getPrefixExdr();
         }
 
-        public ModelMenuItem getLinkMenuItem() {
-            return linkMenuItem;
+        public boolean getSecure() {
+            return link.getSecure();
         }
 
-        public String getLinkType() {
-            return this.linkType;
+        public String getStyle(Map<String, Object> context) {
+            return link.getStyle(context);
         }
 
-        public String getName(Map<String, Object> context) {
-            return this.nameExdr.expandString(context);
+        public FlexibleStringExpander getStyleExdr() {
+            return link.getStyleExdr();
         }
 
-        public List<Parameter> getParameterList() {
-            return this.parameterList;
+        public String getTarget(Map<String, Object> context) {
+            return link.getTarget(context);
         }
 
-        public Map<String, String> getParameterMap(Map<String, Object> context) {
-            Map<String, String> fullParameterMap = new HashMap<String, String>();
-            if (this.parametersMapAcsr != null) {
-                Map<String, String> addlParamMap = this.parametersMapAcsr.get(context);
-                if (addlParamMap != null) {
-                    fullParameterMap.putAll(addlParamMap);
-                }
-            }
-            for (Parameter parameter : this.parameterList) {
-                fullParameterMap.put(parameter.getName(), parameter.getValue(context));
-            }
-            if (autoServiceParameters != null) {
-                fullParameterMap.putAll(autoServiceParameters.getParametersMap(context, null));
-            }
-            if (autoEntityParameters != null) {
-                fullParameterMap.putAll(autoEntityParameters.getParametersMap(context, linkMenuItem.getModelMenu()
-                        .getDefaultEntityName()));
-            }
-            return fullParameterMap;
+        public FlexibleStringExpander getTargetExdr() {
+            return link.getTargetExdr();
         }
 
-        public String getPrefix(Map<String, Object> context) {
-            return this.prefixExdr.expandString(context);
+        public String getTargetWindow(Map<String, Object> context) {
+            return link.getTargetWindow(context);
         }
 
-        public boolean getRequestConfirmation() {
-            return this.requestConfirmation;
+        public FlexibleStringExpander getTargetWindowExdr() {
+            return link.getTargetWindowExdr();
         }
 
-        public boolean getSecure() {
-            return this.secure;
+        public String getText(Map<String, Object> context) {
+            return link.getText(context);
         }
 
-        public String getStyle(Map<String, Object> context) {
-            String style = this.styleExdr.expandString(context);
-            if (UtilValidate.isEmpty(style)) {
-                style = this.linkMenuItem.getWidgetStyle();
-            }
-            return style;
+        public FlexibleStringExpander getTextExdr() {
+            return link.getTextExdr();
         }
 
-        public String getTarget(Map<String, Object> context) {
-            UtilCodec.SimpleEncoder simpleEncoder = (UtilCodec.SimpleEncoder) context.get("simpleEncoder");
-            if (simpleEncoder != null) {
-                return this.targetExdr.expandString(UtilCodec.HtmlEncodingMapWrapper.getHtmlEncodingMapWrapper(context,
-                        simpleEncoder));
-            } else {
-                return this.targetExdr.expandString(context);
-            }
+        public String getUrlMode() {
+            return link.getUrlMode();
         }
 
-        public String getTargetWindow(Map<String, Object> context) {
-            return this.targetWindowExdr.expandString(context);
+        public String getWidth() {
+            return link.getWidth();
         }
 
-        public String getText(Map<String, Object> context) {
-            String txt = this.textExdr.expandString(context);
-            if (UtilValidate.isEmpty(txt)) {
-                txt = linkMenuItem.getTitle(context);
+        public MenuLink(Element linkElement, ModelMenuItem parentMenuItem) {
+            this.linkMenuItem = parentMenuItem;
+            this.link = new Link(linkElement);
+        }
+
+        public MenuLink(GenericValue portalPage, ModelMenuItem parentMenuItem, Locale locale) {
+            this.linkMenuItem = parentMenuItem;
+            ArrayList<Parameter> parameterList = new ArrayList<Parameter>();
+            if (parentMenuItem.link != null) {
+                parameterList.addAll(parentMenuItem.link.getParameterList());
             }
-            // FIXME: Encoding should be done by the renderer, not by the model.
-            UtilCodec.SimpleEncoder simpleEncoder = (UtilCodec.SimpleEncoder) context.get("simpleEncoder");
-            if (simpleEncoder != null) {
-                txt = simpleEncoder.encode(txt);
+            parameterList.add(new Parameter("portalPageId", portalPage.getString("portalPageId"), false));
+            parameterList.add(new Parameter("parentPortalPageId", portalPage.getString("parentPortalPageId"), false));
+            String target = "showPortalPage";
+            if (parentMenuItem.link != null) {
+                target= "";
             }
-            return txt;
+            this.link = new Link(portalPage, parameterList, target, locale);
         }
 
-        public String getUrlMode() {
-            return this.urlMode;
+        public ModelMenuItem getLinkMenuItem() {
+            return linkMenuItem;
+        }
+
+        public Link getLink() {
+            return link;
         }
 
         public void renderLinkString(Appendable writer, Map<String, Object> context, MenuStringRenderer menuStringRenderer)

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/HtmlWidget.java Sat Jan 17 16:47:23 2015
@@ -221,6 +221,10 @@ public class HtmlWidget extends ModelScr
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getLocationExdr() {
+            return locationExdr;
+        }
     }
 
     public static class HtmlTemplateDecorator extends ModelScreenWidget {
@@ -266,16 +270,21 @@ public class HtmlWidget extends ModelScr
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getLocationExdr() {
+            return locationExdr;
+        }
+
+        public Map<String, ModelScreenWidget> getSectionMap() {
+            return sectionMap;
+        }
     }
 
     public static class HtmlTemplateDecoratorSection extends ModelScreenWidget {
-        protected String name;
         protected List<ModelScreenWidget> subWidgets;
 
         public HtmlTemplateDecoratorSection(ModelScreen modelScreen, Element htmlTemplateDecoratorSectionElement) {
             super(modelScreen, htmlTemplateDecoratorSectionElement);
-            this.name = htmlTemplateDecoratorSectionElement.getAttribute("name");
-            // read sub-widgets
             List<? extends Element> subElementList = UtilXml.childElementList(htmlTemplateDecoratorSectionElement);
             this.subWidgets = ModelScreenWidget.readSubWidgets(getModelScreen(), subElementList);
         }
@@ -290,6 +299,10 @@ public class HtmlWidget extends ModelScr
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public List<ModelScreenWidget> getSubWidgets() {
+            return subWidgets;
+        }
     }
 
     @Override

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/IterateSectionWidget.java Sat Jan 17 16:47:23 2015
@@ -361,6 +361,27 @@ public class IterateSectionWidget extend
     public void accept(ModelWidgetVisitor visitor) throws Exception {
         visitor.visit(this);
     }
+
+    public FlexibleMapAccessor<Object> getListNameExdr() {
+        return listNameExdr;
+    }
+
+    public FlexibleStringExpander getEntryNameExdr() {
+        return entryNameExdr;
+    }
+
+    public FlexibleStringExpander getKeyNameExdr() {
+        return keyNameExdr;
+    }
+
+    public FlexibleStringExpander getPaginateTarget() {
+        return paginateTarget;
+    }
+
+    public FlexibleStringExpander getPaginate() {
+        return paginate;
+    }
+
 }
 
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/MacroScreenRenderer.java Sat Jan 17 16:47:23 2015
@@ -217,7 +217,7 @@ public class MacroScreenRenderer impleme
         executeMacro(writer, "renderHorizontalSeparator", parameters);
     }
 
-    public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.Link link) throws IOException {
+    public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.ScreenLink link) throws IOException {
         HttpServletResponse response = (HttpServletResponse) context.get("response");
         HttpServletRequest request = (HttpServletRequest) context.get("request");
 
@@ -271,7 +271,7 @@ public class MacroScreenRenderer impleme
             }
         }
         String imgStr = "";
-        ModelScreenWidget.Image img = link.getImage();
+        ModelScreenWidget.ScreenImage img = link.getImage();
         if (img != null) {
             StringWriter sw = new StringWriter();
             renderImage(sw, context, img);
@@ -311,7 +311,7 @@ public class MacroScreenRenderer impleme
         executeMacro(writer, sr.toString());
     }
 
-    public void renderImage(Appendable writer, Map<String, Object> context, ModelScreenWidget.Image image) throws IOException {
+    public void renderImage(Appendable writer, Map<String, Object> context, ModelScreenWidget.ScreenImage image) throws IOException {
         if (image == null)
             return ;
         String src = image.getSrc(context);

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreenCondition.java Sat Jan 17 16:47:23 2015
@@ -22,8 +22,12 @@ import java.util.Map;
 
 import org.ofbiz.base.util.UtilGenerics;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
+import org.ofbiz.widget.AbstractModelCondition;
+import org.ofbiz.widget.AbstractModelCondition.DefaultConditionFactory;
+import org.ofbiz.widget.ModelCondition;
+import org.ofbiz.widget.ModelConditionFactory;
+import org.ofbiz.widget.ModelConditionVisitor;
 import org.ofbiz.widget.ModelWidget;
-import org.ofbiz.widget.ModelWidgetCondition;
 import org.w3c.dom.Element;
 
 /**
@@ -32,7 +36,7 @@ import org.w3c.dom.Element;
  * @see <code>widget-screen.xsd</code>
  */
 @SuppressWarnings("serial")
-public class ModelScreenCondition extends ModelWidgetCondition {
+public final class ModelScreenCondition {
 
     /*
      * ----------------------------------------------------------------------- *
@@ -49,38 +53,43 @@ public class ModelScreenCondition extend
      */
 
     public static final String module = ModelScreenCondition.class.getName();
-    public static final ConditionFactory SCREEN_CONDITION_FACTORY = new ScreenConditionFactory();
+    public static final ModelConditionFactory SCREEN_CONDITION_FACTORY = new ScreenConditionFactory();
 
-    public ModelScreenCondition(ModelScreen modelScreen, Element conditionElement) {
-        super(SCREEN_CONDITION_FACTORY, modelScreen, conditionElement);
-    }
-
-    public static class IfEmptySection extends ModelWidgetCondition implements Condition {
+    public static class IfEmptySection extends AbstractModelCondition {
         private final FlexibleStringExpander sectionExdr;
 
-        private IfEmptySection(ConditionFactory factory, ModelWidget modelWidget, Element condElement) {
+        private IfEmptySection(ModelConditionFactory factory, ModelWidget modelWidget, Element condElement) {
             super (factory, modelWidget, condElement);
             this.sectionExdr = FlexibleStringExpander.getInstance(condElement.getAttribute("section-name"));
         }
 
         @Override
+        public void accept(ModelConditionVisitor visitor) throws Exception {
+            visitor.visit(this);
+        }
+
+        @Override
         public boolean eval(Map<String, Object> context) {
             Map<String, Object> sectionsMap = UtilGenerics.toMap(context.get("sections"));
             return !sectionsMap.containsKey(this.sectionExdr.expandString(context));
         }
+
+        public FlexibleStringExpander getSectionExdr() {
+            return sectionExdr;
+        }
     }
 
-    public static class ScreenConditionFactory extends DefaultConditionFactory {
+    private static class ScreenConditionFactory extends DefaultConditionFactory {
 
         @Override
-        public Condition newInstance(ModelWidget modelWidget, Element conditionElement) {
+        public ModelCondition newInstance(ModelWidget modelWidget, Element conditionElement) {
             if (conditionElement == null) {
                 return DefaultConditionFactory.TRUE;
             }
             if ("if-empty-section".equals(conditionElement.getNodeName())) {
                 return new IfEmptySection(this, modelWidget, conditionElement);
             } else {
-                return super.newInstance(modelWidget,conditionElement);
+                return super.newInstance(this, modelWidget,conditionElement);
             }
         }
     }

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=1652638&r1=1652637&r2=1652638&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 Sat Jan 17 16:47:23 2015
@@ -42,12 +42,18 @@ import org.ofbiz.entity.Delegator;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.util.EntityQuery;
+import org.ofbiz.widget.AbstractModelAction;
+import org.ofbiz.widget.CommonWidgetModels.*;
+import org.ofbiz.widget.CommonWidgetModels.AutoEntityParameters;
+import org.ofbiz.widget.CommonWidgetModels.AutoServiceParameters;
+import org.ofbiz.widget.CommonWidgetModels.Image;
+import org.ofbiz.widget.CommonWidgetModels.Parameter;
+import org.ofbiz.widget.ModelAction;
+import org.ofbiz.widget.ModelCondition;
 import org.ofbiz.widget.ModelWidget;
-import org.ofbiz.widget.ModelWidgetAction;
 import org.ofbiz.widget.ModelWidgetVisitor;
 import org.ofbiz.widget.PortalPageWorker;
 import org.ofbiz.widget.WidgetFactory;
-import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.form.FormFactory;
 import org.ofbiz.widget.form.FormRenderer;
 import org.ofbiz.widget.form.FormStringRenderer;
@@ -205,8 +211,8 @@ public abstract class ModelScreenWidget
 
     public static final class Section extends ModelScreenWidget {
         public static final String TAG_NAME = "section";
-        private final ModelScreenCondition condition;
-        private final List<ModelWidgetAction> actions;
+        private final ModelCondition condition;
+        private final List<ModelAction> actions;
         private final List<ModelScreenWidget> subWidgets;
         private final List<ModelScreenWidget> failWidgets;
         private final boolean isMainSection;
@@ -221,7 +227,8 @@ public abstract class ModelScreenWidget
             // read condition under the "condition" element
             Element conditionElement = UtilXml.firstChildElement(sectionElement, "condition");
             if (conditionElement != null) {
-                this.condition = new ModelScreenCondition(modelScreen, conditionElement);
+                conditionElement = UtilXml.firstChildElement(conditionElement);
+                this.condition = ModelScreenCondition.SCREEN_CONDITION_FACTORY.newInstance(modelScreen, conditionElement);
             } else {
                 this.condition = null;
             }
@@ -229,7 +236,7 @@ public abstract class ModelScreenWidget
             // read all actions under the "actions" element
             Element actionsElement = UtilXml.firstChildElement(sectionElement, "actions");
             if (actionsElement != null) {
-                this.actions = ModelWidgetAction.readSubActions(modelScreen, actionsElement);
+                this.actions = AbstractModelAction.readSubActions(modelScreen, actionsElement);
             } else {
                 this.actions = Collections.emptyList();
             }
@@ -272,7 +279,7 @@ public abstract class ModelScreenWidget
             // if condition does not exist or evals to true run actions and render widgets, otherwise render fail-widgets
             if (condTrue) {
                 // run the actions only if true
-                ModelWidgetAction.runSubActions(this.actions, context);
+                AbstractModelAction.runSubActions(this.actions, context);
 
                 try {
                     // section by definition do not themselves do anything, so this method will generally do nothing, but we'll call it anyway
@@ -314,7 +321,7 @@ public abstract class ModelScreenWidget
             }
         }
 
-        public List<ModelWidgetAction> getActions() {
+        public List<ModelAction> getActions() {
             return actions;
         }
 
@@ -329,6 +336,10 @@ public abstract class ModelScreenWidget
         public boolean isMainSection() {
             return isMainSection;
         }
+
+        public ModelCondition getCondition() {
+            return condition;
+        }
     }
 
     public static final class ColumnContainer extends ModelScreenWidget {
@@ -376,14 +387,23 @@ public abstract class ModelScreenWidget
         public String getStyle(Map<String, Object> context) {
             return this.styleExdr.expandString(context);
         }
+
+        public FlexibleStringExpander getIdExdr() {
+            return idExdr;
+        }
+
+        public FlexibleStringExpander getStyleExdr() {
+            return styleExdr;
+        }
     }
 
-    public static final class Column {
+    public static final class Column extends ModelWidget {
         private final FlexibleStringExpander idExdr;
         private final FlexibleStringExpander styleExdr;
         private final List<ModelScreenWidget> subWidgets;
 
         public Column(ModelScreen modelScreen, Element columnElement) {
+            super(columnElement);
             this.idExdr = FlexibleStringExpander.getInstance(columnElement.getAttribute("id"));
             this.styleExdr = FlexibleStringExpander.getInstance(columnElement.getAttribute("style"));
             List<? extends Element> subElementList = UtilXml.childElementList(columnElement);
@@ -401,6 +421,19 @@ public abstract class ModelScreenWidget
         public String getStyle(Map<String, Object> context) {
             return this.styleExdr.expandString(context);
         }
+
+        @Override
+        public void accept(ModelWidgetVisitor visitor) throws Exception {
+            visitor.visit(this);
+        }
+
+        public FlexibleStringExpander getIdExdr() {
+            return idExdr;
+        }
+
+        public FlexibleStringExpander getStyleExdr() {
+            return styleExdr;
+        }
     }
 
     public static final class Container extends ModelScreenWidget {
@@ -466,6 +499,22 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getIdExdr() {
+            return idExdr;
+        }
+
+        public FlexibleStringExpander getStyleExdr() {
+            return styleExdr;
+        }
+
+        public FlexibleStringExpander getAutoUpdateTargetExdr() {
+            return autoUpdateTargetExdr;
+        }
+
+        public FlexibleStringExpander getAutoUpdateInterval() {
+            return autoUpdateInterval;
+        }
     }
 
     public static final class Screenlet extends ModelScreenWidget {
@@ -628,6 +677,30 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getIdExdr() {
+            return idExdr;
+        }
+
+        public FlexibleStringExpander getTitleExdr() {
+            return titleExdr;
+        }
+
+        public boolean getCollapsible() {
+            return collapsible;
+        }
+
+        public FlexibleStringExpander getInitiallyCollapsed() {
+            return initiallyCollapsed;
+        }
+
+        public boolean getSaveCollapsed() {
+            return saveCollapsed;
+        }
+
+        public boolean getPadded() {
+            return padded;
+        }
     }
 
     public static final class HorizontalSeparator extends ModelScreenWidget {
@@ -658,6 +731,14 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getIdExdr() {
+            return idExdr;
+        }
+
+        public FlexibleStringExpander getStyleExdr() {
+            return styleExdr;
+        }
     }
 
     public static final class IncludeScreen extends ModelScreenWidget {
@@ -729,6 +810,18 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getNameExdr() {
+            return nameExdr;
+        }
+
+        public FlexibleStringExpander getLocationExdr() {
+            return locationExdr;
+        }
+
+        public FlexibleStringExpander getShareScopeExdr() {
+            return shareScopeExdr;
+        }
     }
 
     public static final class DecoratorScreen extends ModelScreenWidget {
@@ -793,6 +886,15 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getNameExdr() {
+            return nameExdr;
+        }
+
+        public FlexibleStringExpander getLocationExdr() {
+            return locationExdr;
+        }
+
     }
 
     public static final class DecoratorSection extends ModelScreenWidget {
@@ -911,6 +1013,18 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getTextExdr() {
+            return textExdr;
+        }
+
+        public FlexibleStringExpander getIdExdr() {
+            return idExdr;
+        }
+
+        public FlexibleStringExpander getStyleExdr() {
+            return styleExdr;
+        }
     }
 
     public static final class Form extends ModelScreenWidget {
@@ -992,6 +1106,19 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getNameExdr() {
+            return nameExdr;
+        }
+
+        public FlexibleStringExpander getLocationExdr() {
+            return locationExdr;
+        }
+
+        public FlexibleStringExpander getShareScopeExdr() {
+            return shareScopeExdr;
+        }
+
     }
 
     public static final class Tree extends ModelScreenWidget {
@@ -1065,6 +1192,14 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getLocationExdr() {
+            return locationExdr;
+        }
+
+        public FlexibleStringExpander getShareScopeExdr() {
+            return shareScopeExdr;
+        }
     }
 
     public static final class PlatformSpecific extends ModelScreenWidget {
@@ -1260,6 +1395,22 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getContentId() {
+            return contentId;
+        }
+
+        public FlexibleStringExpander getEditRequest() {
+            return editRequest;
+        }
+
+        public FlexibleStringExpander getEditContainerStyle() {
+            return editContainerStyle;
+        }
+
+        public FlexibleStringExpander getEnableEditName() {
+            return enableEditName;
+        }
     }
 
     public static final class SubContent extends ModelScreenWidget {
@@ -1378,267 +1529,249 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getLocationExdr() {
+            return locationExdr;
+        }
     }
 
-    public static final class Link extends ModelScreenWidget {
+    public static final class ScreenLink extends ModelScreenWidget {
         public static final String TAG_NAME = "link";
-        private final FlexibleStringExpander textExdr;
-        private final FlexibleStringExpander idExdr;
-        private final FlexibleStringExpander styleExdr;
-        private final FlexibleStringExpander targetExdr;
-        private final FlexibleStringExpander targetWindowExdr;
-        private final FlexibleStringExpander prefixExdr;
-        private final FlexibleStringExpander nameExdr;
-        private final Image image;
-        private final String urlMode;
-        private final boolean fullPath;
-        private final boolean secure;
-        private final boolean encode;
-        private final String linkType;
-        private final String width;
-        private final String height;
-        private final List<WidgetWorker.Parameter> parameterList;
-        private final WidgetWorker.AutoServiceParameters autoServiceParameters;
-        private final WidgetWorker.AutoEntityParameters autoEntityParameters;
+        private final Link link;
+        private final ScreenImage image;
 
-        public Link(ModelScreen modelScreen, Element linkElement) {
+        public ScreenLink(ModelScreen modelScreen, Element linkElement) {
             super(modelScreen, linkElement);
-            this.textExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("text"));
-            this.idExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("id"));
-            this.styleExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("style"));
-            this.nameExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("name"));
-            this.targetExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("target"));
-            this.targetWindowExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("target-window"));
-            this.prefixExdr = FlexibleStringExpander.getInstance(linkElement.getAttribute("prefix"));
-            this.urlMode = linkElement.getAttribute("url-mode");
-            this.fullPath = "true".equals(linkElement.getAttribute("full-path"));
-            this.secure = "true".equals(linkElement.getAttribute("secure"));
-            this.encode = "true".equals(linkElement.getAttribute("encode"));
+            this.link = new Link(linkElement);
             Element imageElement = UtilXml.firstChildElement(linkElement, "image");
             if (imageElement != null) {
-                this.image = new Image(modelScreen, imageElement);
+                this.image = new ScreenImage(modelScreen, imageElement);
             } else {
                 this.image = null;
             }
-            this.linkType = linkElement.getAttribute("link-type");
-            List<? extends Element> parameterElementList = UtilXml.childElementList(linkElement, "parameter");
-            if (parameterElementList.isEmpty()) {
-                this.parameterList = Collections.emptyList();
-            } else {
-                List<WidgetWorker.Parameter> parameterList = new ArrayList<WidgetWorker.Parameter>(parameterElementList.size());
-                for (Element parameterElement : parameterElementList) {
-                    parameterList.add(new WidgetWorker.Parameter(parameterElement));
-                }
-                this.parameterList = Collections.unmodifiableList(parameterList);
-            }
-            Element autoServiceParamsElement = UtilXml.firstChildElement(linkElement, "auto-parameters-service");
-            if (autoServiceParamsElement != null) {
-                this.autoServiceParameters = new WidgetWorker.AutoServiceParameters(autoServiceParamsElement);
-            } else {
-                this.autoServiceParameters = null;
-            }
-            Element autoEntityParamsElement = UtilXml.firstChildElement(linkElement, "auto-parameters-entity");
-            if (autoEntityParamsElement != null) {
-                this.autoEntityParameters = new WidgetWorker.AutoEntityParameters(autoEntityParamsElement);
-            } else {
-                this.autoEntityParameters = null;
-            }
-            this.width = linkElement.getAttribute("width");
-            this.height = linkElement.getAttribute("height");
         }
 
-        @Override
-        public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) {
-            try {
-                screenStringRenderer.renderLink(writer, context, this);
-            } catch (IOException e) {
-                String errMsg = "Error rendering link with id [" + getId(context) + "]: " + e.toString();
-                Debug.logError(e, errMsg, module);
-                throw new RuntimeException(errMsg);
-            }
+        public String getName() {
+            return link.getName();
         }
 
         public String getText(Map<String, Object> context) {
-            String text = this.textExdr.expandString(context);
-            // FIXME: Encoding should be done by the renderer, not by the model.
-            UtilCodec.SimpleEncoder simpleEncoder = (UtilCodec.SimpleEncoder) context.get("simpleEncoder");
-            if (simpleEncoder != null) {
-                text = simpleEncoder.encode(text);
-            }
-            return text;
+            return link.getText(context);
         }
 
         public String getId(Map<String, Object> context) {
-            return this.idExdr.expandString(context);
+            return link.getId(context);
         }
 
         public String getStyle(Map<String, Object> context) {
-            return this.styleExdr.expandString(context);
+            return link.getStyle(context);
         }
 
         public String getTarget(Map<String, Object> context) {
-            Map<String, Object> expanderContext = context;
-            UtilCodec.SimpleEncoder simpleEncoder = context == null ? null : (UtilCodec.SimpleEncoder) context.get("simpleEncoder");
-            if (simpleEncoder != null) {
-                expanderContext = UtilCodec.HtmlEncodingMapWrapper.getHtmlEncodingMapWrapper(context, simpleEncoder);
-            }
-            return this.targetExdr.expandString(expanderContext);
+            return link.getTarget(context);
         }
 
         public String getName(Map<String, Object> context) {
-            return this.nameExdr.expandString(context);
+            return link.getName(context);
         }
 
         public String getTargetWindow(Map<String, Object> context) {
-            return this.targetWindowExdr.expandString(context);
+            return link.getTargetWindow(context);
         }
 
         public String getUrlMode() {
-            return this.urlMode;
+            return link.getUrlMode();
         }
 
         public String getPrefix(Map<String, Object> context) {
-            return this.prefixExdr.expandString(context);
+            return link.getPrefix(context);
         }
 
         public boolean getFullPath() {
-            return this.fullPath;
+            return link.getFullPath();
         }
 
         public boolean getSecure() {
-            return this.secure;
+            return link.getSecure();
         }
 
         public boolean getEncode() {
-            return this.encode;
+            return link.getEncode();
         }
 
-        public Image getImage() {
-            return this.image;
+        public ScreenImage getImage() {
+            return image;
         }
 
         public String getLinkType() {
-            return this.linkType;
+            return link.getLinkType();
         }
 
         public String getWidth() {
-            return this.width;
+            return link.getWidth();
         }
 
         public String getHeight() {
-            return this.height;
+            return link.getHeight();
         }
 
         public Map<String, String> getParameterMap(Map<String, Object> context) {
-            Map<String, String> fullParameterMap = new HashMap<String, String>();
+            return link.getParameterMap(context);
+        }
 
-            /* leaving this here... may want to add it at some point like the hyperlink element:
-            Map<String, String> addlParamMap = this.parametersMapAcsr.get(context);
-            if (addlParamMap != null) {
-                fullParameterMap.putAll(addlParamMap);
-            }
-            */
-            
-            for (WidgetWorker.Parameter parameter: this.parameterList) {
-                fullParameterMap.put(parameter.getName(), parameter.getValue(context));
-            }
+        public FlexibleStringExpander getTextExdr() {
+            return link.getTextExdr();
+        }
 
-            if (autoServiceParameters != null) {
-                fullParameterMap.putAll(autoServiceParameters.getParametersMap(context, null));
-            }
-            if (autoEntityParameters != null) {
-                fullParameterMap.putAll(autoEntityParameters.getParametersMap(context, null));
-            }
+        public FlexibleStringExpander getIdExdr() {
+            return link.getIdExdr();
+        }
 
-            return fullParameterMap;
+        public FlexibleStringExpander getStyleExdr() {
+            return link.getStyleExdr();
         }
 
-        @Override
-        public void accept(ModelWidgetVisitor visitor) throws Exception {
-            visitor.visit(this);
+        public FlexibleStringExpander getTargetExdr() {
+            return link.getTargetExdr();
         }
-    }
 
-    public static final class Image extends ModelScreenWidget {
-        public static final String TAG_NAME = "image";
-        private final FlexibleStringExpander srcExdr;
-        private final FlexibleStringExpander idExdr;
-        private final FlexibleStringExpander styleExdr;
-        private final FlexibleStringExpander widthExdr;
-        private final FlexibleStringExpander heightExdr;
-        private final FlexibleStringExpander borderExdr;
-        private final FlexibleStringExpander alt;
-        private final String urlMode;
+        public FlexibleStringExpander getTargetWindowExdr() {
+            return link.getTargetWindowExdr();
+        }
 
-        public Image(ModelScreen modelScreen, Element imageElement) {
-            super(modelScreen, imageElement);
-            this.srcExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("src"));
-            this.idExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("id"));
-            this.styleExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("style"));
-            this.widthExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("width"));
-            this.heightExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("height"));
-            this.borderExdr = FlexibleStringExpander.getInstance(imageElement.getAttribute("border"));
-            this.alt = FlexibleStringExpander.getInstance(imageElement.getAttribute("alt"));
-            String urlMode = imageElement.getAttribute("url-mode");
-            if (urlMode.isEmpty()) {
-                urlMode = "content";
-            }
-            this.urlMode = urlMode;
+        public FlexibleStringExpander getPrefixExdr() {
+            return link.getPrefixExdr();
+        }
+
+        public FlexibleStringExpander getNameExdr() {
+            return link.getNameExdr();
+        }
+
+        public List<Parameter> getParameterList() {
+            return link.getParameterList();
+        }
+
+        public AutoServiceParameters getAutoServiceParameters() {
+            return link.getAutoServiceParameters();
+        }
+
+        public AutoEntityParameters getAutoEntityParameters() {
+            return link.getAutoEntityParameters();
         }
 
         @Override
         public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) {
             try {
-                screenStringRenderer.renderImage(writer, context, this);
+                screenStringRenderer.renderLink(writer, context, this);
             } catch (IOException e) {
-                String errMsg = "Error rendering image with id [" + getId(context) + "]: " + e.toString();
+                String errMsg = "Error rendering link with id [" + link.getId(context) + "]: " + e.toString();
                 Debug.logError(e, errMsg, module);
                 throw new RuntimeException(errMsg);
             }
         }
 
+        @Override
+        public void accept(ModelWidgetVisitor visitor) throws Exception {
+            visitor.visit(this);
+        }
+
+        public Link getLink() {
+            return link;
+        }
+    }
+
+    public static final class ScreenImage extends ModelScreenWidget {
+        public static final String TAG_NAME = "image";
+        private final Image image;
+
+        public String getName() {
+            return image.getName();
+        }
+
         public String getSrc(Map<String, Object> context) {
-            return this.srcExdr.expandString(context);
+            return image.getSrc(context);
         }
 
         public String getId(Map<String, Object> context) {
-            return this.idExdr.expandString(context);
+            return image.getId(context);
         }
 
         public String getStyle(Map<String, Object> context) {
-            return this.styleExdr.expandString(context);
+            return image.getStyle(context);
         }
 
         public String getWidth(Map<String, Object> context) {
-            return this.widthExdr.expandString(context);
+            return image.getWidth(context);
         }
 
         public String getHeight(Map<String, Object> context) {
-            return this.heightExdr.expandString(context);
+            return image.getHeight(context);
         }
 
         public String getBorder(Map<String, Object> context) {
-            return this.borderExdr.expandString(context);
+            return image.getBorder(context);
         }
 
         public String getAlt(Map<String, Object> context) {
-            String alt = this.alt.expandString(context);
-            // FIXME: Encoding should be done by the renderer, not by the model.
-            UtilCodec.SimpleEncoder simpleEncoder = (UtilCodec.SimpleEncoder) context.get("simpleEncoder");
-            if (simpleEncoder != null) {
-                alt = simpleEncoder.encode(alt);
-            }
-            return alt;
+            return image.getAlt(context);
         }
 
         public String getUrlMode() {
-            return this.urlMode;
+            return image.getUrlMode();
+        }
+
+        public FlexibleStringExpander getSrcExdr() {
+            return image.getSrcExdr();
+        }
+
+        public FlexibleStringExpander getIdExdr() {
+            return image.getIdExdr();
+        }
+
+        public FlexibleStringExpander getStyleExdr() {
+            return image.getStyleExdr();
+        }
+
+        public FlexibleStringExpander getWidthExdr() {
+            return image.getWidthExdr();
+        }
+
+        public FlexibleStringExpander getHeightExdr() {
+            return image.getHeightExdr();
+        }
+
+        public FlexibleStringExpander getBorderExdr() {
+            return image.getBorderExdr();
+        }
+
+        public FlexibleStringExpander getAlt() {
+            return image.getAlt();
+        }
+
+        public ScreenImage(ModelScreen modelScreen, Element imageElement) {
+            super(modelScreen, imageElement);
+            this.image = new Image(imageElement);
+        }
+
+        @Override
+        public void renderWidgetString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) {
+            try {
+                screenStringRenderer.renderImage(writer, context, this);
+            } catch (IOException e) {
+                String errMsg = "Error rendering image with id [" + image.getId(context) + "]: " + e.toString();
+                Debug.logError(e, errMsg, module);
+                throw new RuntimeException(errMsg);
+            }
         }
 
         @Override
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public Image getImage() {
+            return image;
+        }
     }
 
     public static final class PortalPage extends ModelScreenWidget {
@@ -1820,6 +1953,14 @@ public abstract class ModelScreenWidget
         public void accept(ModelWidgetVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleStringExpander getIdExdr() {
+            return idExdr;
+        }
+
+        public FlexibleStringExpander getConfModeExdr() {
+            return confModeExdr;
+        }
     }
 
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenFactory.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenFactory.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenFactory.java Sat Jan 17 16:47:23 2015
@@ -168,7 +168,7 @@ public class ScreenFactory {
             List<? extends Element> screenElements = UtilXml.childElementList(rootElement, "screen");
             for (Element screenElement: screenElements) {
                 ModelScreen modelScreen = new ModelScreen(screenElement, modelScreenMap, sourceLocation);
-                //Debug.logInfo("Read Screen with name: " + modelScreen.getName(), module);
+                Debug.logInfo("Read Screen with name: " + modelScreen.getName() + "\n" + modelScreen, module);
                 modelScreenMap.put(modelScreen.getName(), modelScreen);
             }
         }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenStringRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenStringRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenStringRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ScreenStringRenderer.java Sat Jan 17 16:47:23 2015
@@ -45,8 +45,8 @@ public interface ScreenStringRenderer {
 
     public void renderHorizontalSeparator(Appendable writer, Map<String, Object> context, ModelScreenWidget.HorizontalSeparator separator) throws IOException;
     public void renderLabel(Appendable writer, Map<String, Object> context, ModelScreenWidget.Label label) throws IOException;
-    public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.Link link) throws IOException;
-    public void renderImage(Appendable writer, Map<String, Object> context, ModelScreenWidget.Image image) throws IOException;
+    public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.ScreenLink link) throws IOException;
+    public void renderImage(Appendable writer, Map<String, Object> context, ModelScreenWidget.ScreenImage image) throws IOException;
 
     public void renderContentFrame(Appendable writer, Map<String, Object> context, ModelScreenWidget.Content content) throws IOException;
     public void renderScreenletBegin(Appendable writer, Map<String, Object> context, boolean collapsed, ModelScreenWidget.Screenlet screenlet) throws IOException;

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextScreenRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextScreenRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextScreenRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/text/TextScreenRenderer.java Sat Jan 17 16:47:23 2015
@@ -75,11 +75,11 @@ public class TextScreenRenderer implemen
         // TODO: not implemented
     }
 
-    public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.Link link) throws IOException {
+    public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.ScreenLink link) throws IOException {
         // TODO: not implemented
     }
 
-    public void renderImage(Appendable writer, Map<String, Object> context, ModelScreenWidget.Image image) throws IOException {
+    public void renderImage(Appendable writer, Map<String, Object> context, ModelScreenWidget.ScreenImage image) throws IOException {
         // TODO: not implemented
     }
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTree.java Sat Jan 17 16:47:23 2015
@@ -49,10 +49,10 @@ import org.ofbiz.entity.model.ModelField
 import org.ofbiz.entity.util.EntityListIterator;
 import org.ofbiz.entity.util.EntityQuery;
 import org.ofbiz.widget.ModelWidget;
-import org.ofbiz.widget.ModelWidgetAction;
+import org.ofbiz.widget.*;
 import org.ofbiz.widget.ModelWidgetVisitor;
 import org.ofbiz.widget.WidgetWorker;
-import org.ofbiz.widget.WidgetWorker.Parameter;
+import org.ofbiz.widget.CommonWidgetModels.Parameter;
 import org.ofbiz.widget.screen.ModelScreen;
 import org.ofbiz.widget.screen.ScreenFactory;
 import org.ofbiz.widget.screen.ScreenRenderException;
@@ -259,6 +259,35 @@ public class ModelTree extends ModelWidg
             Debug.logError(e2, errMsg, module);
             throw new RuntimeException(errMsg);
         }
+
+    }
+
+    public String getDefaultRenderStyle() {
+        return defaultRenderStyle;
+    }
+
+    public FlexibleStringExpander getDefaultWrapStyleExdr() {
+        return defaultWrapStyleExdr;
+    }
+
+    public FlexibleStringExpander getExpandCollapseRequestExdr() {
+        return expandCollapseRequestExdr;
+    }
+
+    public boolean getForceChildCheck() {
+        return forceChildCheck;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public Map<String, ModelNode> getNodeMap() {
+        return nodeMap;
+    }
+
+    public FlexibleStringExpander getTrailNameExdr() {
+        return trailNameExdr;
     }
 
     /**
@@ -268,7 +297,8 @@ public class ModelTree extends ModelWidg
      */
     public static class ModelNode extends ModelWidget {
 
-        private final List<ModelWidgetAction> actions;
+        private final List<ModelAction> actions;
+        // TODO: Make this a generic condition object.
         private final ModelTreeCondition condition;
         private final String entityName;
         private final String entryName;
@@ -293,7 +323,7 @@ public class ModelTree extends ModelWidg
             this.entryName = nodeElement.getAttribute("entry-name");
             this.entityName = nodeElement.getAttribute("entity-name");
             this.pkName = nodeElement.getAttribute("join-field-name");
-            ArrayList<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>();
+            ArrayList<ModelAction> actions = new ArrayList<ModelAction>();
             // FIXME: Validate child elements, should be only one of actions, entity-one, service, script.
             Element actionsElement = UtilXml.firstChildElement(nodeElement, "actions");
             if (actionsElement != null) {
@@ -301,7 +331,7 @@ public class ModelTree extends ModelWidg
             }
             Element actionElement = UtilXml.firstChildElement(nodeElement, "entity-one");
             if (actionElement != null) {
-                actions.add(new ModelWidgetAction.EntityOne(this, actionElement));
+                actions.add(new AbstractModelAction.EntityOne(this, actionElement));
             }
             actionElement = UtilXml.firstChildElement(nodeElement, "service");
             if (actionElement != null) {
@@ -364,9 +394,9 @@ public class ModelTree extends ModelWidg
             for (ModelSubNode subNode : subNodeList) {
                 String nodeName = subNode.getNodeName(context);
                 ModelNode node = modelTree.nodeMap.get(nodeName);
-                List<ModelWidgetAction> subNodeActions = subNode.getActions();
+                List<ModelAction> subNodeActions = subNode.getActions();
                 //if (Debug.infoOn()) Debug.logInfo(" context.currentValue:" + context.get("currentValue"), module);
-                ModelWidgetAction.runSubActions(subNodeActions, context);
+                AbstractModelAction.runSubActions(subNodeActions, context);
                 // List dataFound = (List)context.get("dataFound");
                 Iterator<? extends Map<String, ? extends Object>> dataIter = subNode.getListIterator(context);
                 if (dataIter instanceof EntityListIterator) {
@@ -536,7 +566,7 @@ public class ModelTree extends ModelWidg
                 int depth) throws IOException, GeneralException {
             boolean passed = true;
             if (this.condition != null) {
-                if (!this.condition.eval(context)) {
+                if (!this.condition.getCondition().eval(context)) {
                     passed = false;
                 }
             }
@@ -658,6 +688,46 @@ public class ModelTree extends ModelWidg
             }
             return showPeers;
         }
+        
+        public List<ModelAction> getActions() {
+            return actions;
+        }
+
+        public ModelTreeCondition getCondition() {
+            return condition;
+        }
+
+        public Label getLabel() {
+            return label;
+        }
+
+        public Link getLink() {
+            return link;
+        }
+
+        public String getPkName() {
+            return pkName;
+        }
+
+        public FlexibleStringExpander getScreenLocationExdr() {
+            return screenLocationExdr;
+        }
+
+        public FlexibleStringExpander getScreenNameExdr() {
+            return screenNameExdr;
+        }
+
+        public String getShareScope() {
+            return shareScope;
+        }
+
+        public List<ModelSubNode> getSubNodeList() {
+            return subNodeList;
+        }
+
+        public FlexibleStringExpander getWrapStyleExdr() {
+            return wrapStyleExdr;
+        }
 
         /**
          * Models the &lt;image&gt; element.
@@ -769,6 +839,18 @@ public class ModelTree extends ModelWidg
                     throw new RuntimeException(errMsg);
                 }
             }
+
+            public FlexibleStringExpander getIdExdr() {
+                return idExdr;
+            }
+
+            public FlexibleStringExpander getStyleExdr() {
+                return styleExdr;
+            }
+
+            public FlexibleStringExpander getTextExdr() {
+                return textExdr;
+            }
         }
 
         /**
@@ -876,7 +958,7 @@ public class ModelTree extends ModelWidg
                     fullParameterMap.putAll(addlParamMap);
                 }
                 */
-                for (WidgetWorker.Parameter parameter : this.parameterList) {
+                for (CommonWidgetModels.Parameter parameter : this.parameterList) {
                     fullParameterMap.put(parameter.getName(), parameter.getValue(context));
                 }
                 return fullParameterMap;
@@ -941,6 +1023,42 @@ public class ModelTree extends ModelWidg
                     throw new RuntimeException(errMsg);
                 }
             }
+
+            public FlexibleStringExpander getIdExdr() {
+                return idExdr;
+            }
+
+            public FlexibleStringExpander getNameExdr() {
+                return nameExdr;
+            }
+
+            public List<Parameter> getParameterList() {
+                return parameterList;
+            }
+
+            public FlexibleStringExpander getPrefixExdr() {
+                return prefixExdr;
+            }
+
+            public FlexibleStringExpander getStyleExdr() {
+                return styleExdr;
+            }
+
+            public FlexibleStringExpander getTargetExdr() {
+                return targetExdr;
+            }
+
+            public FlexibleStringExpander getTargetWindowExdr() {
+                return targetWindowExdr;
+            }
+
+            public FlexibleStringExpander getTextExdr() {
+                return textExdr;
+            }
+
+            public FlexibleStringExpander getTitleExdr() {
+                return titleExdr;
+            }
         }
 
         /**
@@ -950,7 +1068,7 @@ public class ModelTree extends ModelWidg
          */
         public static class ModelSubNode extends ModelWidget {
 
-            private final List<ModelWidgetAction> actions;
+            private final List<ModelAction> actions;
             private final FlexibleStringExpander nodeNameExdr;
             private final ModelNode rootNode;
             private final String iteratorKey;
@@ -959,7 +1077,7 @@ public class ModelTree extends ModelWidg
                 super(subNodeElement);
                 this.rootNode = modelNode;
                 this.nodeNameExdr = FlexibleStringExpander.getInstance(subNodeElement.getAttribute("node-name"));
-                ArrayList<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>();
+                ArrayList<ModelAction> actions = new ArrayList<ModelAction>();
                 // FIXME: Validate child elements, should be only one of actions, entity-and, entity-condition, service, script.
                 Element actionsElement = UtilXml.firstChildElement(subNodeElement, "actions");
                 if (actionsElement != null) {
@@ -992,7 +1110,7 @@ public class ModelTree extends ModelWidg
                 visitor.visit(this);
             }
 
-            public List<ModelWidgetAction> getActions() {
+            public List<ModelAction> getActions() {
                 return actions;
             }
 
@@ -1009,6 +1127,10 @@ public class ModelTree extends ModelWidg
                 return this.nodeNameExdr.expandString(context);
             }
 
+            public FlexibleStringExpander getNodeNameExdr() {
+                return nodeNameExdr;
+            }
+
             public void setListIterator(ListIterator<? extends Map<String, ? extends Object>> iter, Map<String, Object> context) {
                 context.put(this.iteratorKey, iter);
             }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeAction.java Sat Jan 17 16:47:23 2015
@@ -44,8 +44,9 @@ import org.ofbiz.minilang.method.MethodC
 import org.ofbiz.service.DispatchContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.ModelService;
+import org.ofbiz.widget.AbstractModelAction;
+import org.ofbiz.widget.ModelAction;
 import org.ofbiz.widget.ModelActionVisitor;
-import org.ofbiz.widget.ModelWidgetAction;
 import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.tree.ModelTree.ModelNode;
 import org.w3c.dom.Document;
@@ -55,7 +56,7 @@ import org.w3c.dom.Element;
  * Abstract tree action.
  */
 @SuppressWarnings("serial")
-public abstract class ModelTreeAction extends ModelWidgetAction {
+public abstract class ModelTreeAction extends AbstractModelAction {
 
     /*
      * ----------------------------------------------------------------------- *
@@ -73,24 +74,24 @@ public abstract class ModelTreeAction ex
 
     public static final String module = ModelTreeAction.class.getName();
 
-    public static List<ModelWidgetAction> readNodeActions(ModelNode modelNode, Element actionsElement) {
+    public static List<ModelAction> readNodeActions(ModelNode modelNode, Element actionsElement) {
         List<? extends Element> actionElementList = UtilXml.childElementList(actionsElement);
-        List<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>(actionElementList.size());
+        List<ModelAction> actions = new ArrayList<ModelAction>(actionElementList.size());
         for (Element actionElement : actionElementList) {
             if ("service".equals(actionElement.getNodeName())) {
                 actions.add(new Service(modelNode, actionElement));
             } else if ("script".equals(actionElement.getNodeName())) {
                 actions.add(new Script(modelNode, actionElement));
             } else {
-                actions.add(ModelWidgetAction.newInstance(modelNode, actionElement));
+                actions.add(AbstractModelAction.newInstance(modelNode, actionElement));
             }
         }
         return actions;
     }
 
-    public static List<ModelWidgetAction> readSubNodeActions(ModelNode.ModelSubNode modelSubNode, Element actionsElement) {
+    public static List<ModelAction> readSubNodeActions(ModelNode.ModelSubNode modelSubNode, Element actionsElement) {
         List<? extends Element> actionElementList = UtilXml.childElementList(actionsElement);
-        List<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>(actionElementList.size());
+        List<ModelAction> actions = new ArrayList<ModelAction>(actionElementList.size());
         for (Element actionElement : actionElementList) {
             if ("service".equals(actionElement.getNodeName())) {
                 actions.add(new Service(modelSubNode, actionElement));
@@ -101,7 +102,7 @@ public abstract class ModelTreeAction ex
             } else if ("script".equals(actionElement.getNodeName())) {
                 actions.add(new Script(modelSubNode, actionElement));
             } else {
-                actions.add(ModelWidgetAction.newInstance(modelSubNode, actionElement));
+                actions.add(AbstractModelAction.newInstance(modelSubNode, actionElement));
             }
         }
         return actions;
@@ -157,7 +158,7 @@ public abstract class ModelTreeAction ex
         }
 
         @Override
-        public void accept(ModelActionVisitor visitor) {
+        public void accept(ModelActionVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -217,7 +218,7 @@ public abstract class ModelTreeAction ex
         }
 
         @Override
-        public void accept(ModelActionVisitor visitor) {
+        public void accept(ModelActionVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -276,7 +277,7 @@ public abstract class ModelTreeAction ex
         }
 
         @Override
-        public void accept(ModelActionVisitor visitor) {
+        public void accept(ModelActionVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -357,7 +358,7 @@ public abstract class ModelTreeAction ex
         }
 
         @Override
-        public void accept(ModelActionVisitor visitor) {
+        public void accept(ModelActionVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/tree/ModelTreeCondition.java Sat Jan 17 16:47:23 2015
@@ -18,7 +18,8 @@
  *******************************************************************************/
 package org.ofbiz.widget.tree;
 
-import org.ofbiz.widget.ModelWidgetCondition;
+import org.ofbiz.widget.AbstractModelCondition;
+import org.ofbiz.widget.ModelCondition;
 import org.w3c.dom.Element;
 
 /**
@@ -26,11 +27,15 @@ import org.w3c.dom.Element;
  * 
  * @see <code>widget-tree.xsd</code>
  */
-@SuppressWarnings("serial")
-public class ModelTreeCondition extends ModelWidgetCondition {
+public class ModelTreeCondition {
     public static final String module = ModelTreeCondition.class.getName();
+    private final ModelCondition condition;
 
     public ModelTreeCondition(ModelTree modelTree, Element conditionElement) {
-        super(ModelWidgetCondition.DEFAULT_CONDITION_FACTORY, modelTree, conditionElement);
+        this.condition = AbstractModelCondition.DEFAULT_CONDITION_FACTORY.newInstance(modelTree, conditionElement);
+    }
+
+    public ModelCondition getCondition() {
+        return condition;
     }
 }