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 [4/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/form/ModelForm.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Sat Jan 17 16:47:23 2015
@@ -49,8 +49,10 @@ import org.ofbiz.service.DispatchContext
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.ModelParam;
 import org.ofbiz.service.ModelService;
+import org.ofbiz.widget.AbstractModelAction;
+import org.ofbiz.widget.CommonWidgetModels;
+import org.ofbiz.widget.ModelAction;
 import org.ofbiz.widget.ModelWidget;
-import org.ofbiz.widget.ModelWidgetAction;
 import org.ofbiz.widget.ModelWidgetVisitor;
 import org.ofbiz.widget.WidgetWorker;
 import org.w3c.dom.Element;
@@ -100,7 +102,7 @@ public class ModelForm extends ModelWidg
     public static String DEFAULT_SORT_FIELD_STYLE = "sort-order";
     public static String DEFAULT_SORT_FIELD_ASC_STYLE = "sort-order-asc";
     public static String DEFAULT_SORT_FIELD_DESC_STYLE = "sort-order-desc";
-    private final List<ModelWidgetAction> actions;
+    private final List<ModelAction> actions;
     private final List<AltRowStyle> altRowStyles;
     private final List<AltTarget> altTargets;
     private final List<AutoFieldsEntity> autoFieldsEntities;
@@ -177,7 +179,7 @@ public class ModelForm extends ModelWidg
     private final String paginateTargetAnchor;
     private final FlexibleStringExpander paginateViewSizeLabel;
     private final ModelForm parentModelForm;
-    private final List<ModelWidgetAction> rowActions;
+    private final List<ModelAction> rowActions;
     private final FlexibleStringExpander rowCountExdr;
     private final boolean separateColumns;
     private final boolean skipEnd;
@@ -384,7 +386,7 @@ public class ModelForm extends ModelWidg
         }
         altTargets.trimToSize();
         this.altTargets = Collections.unmodifiableList(altTargets);
-        ArrayList<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>();
+        ArrayList<ModelAction> actions = new ArrayList<ModelAction>();
         if (parentModelForm != null) {
             actions.addAll(parentModelForm.actions);
         }
@@ -394,7 +396,7 @@ public class ModelForm extends ModelWidg
         }
         actions.trimToSize();
         this.actions = Collections.unmodifiableList(actions);
-        ArrayList<ModelWidgetAction> rowActions = new ArrayList<ModelWidgetAction>();
+        ArrayList<ModelAction> rowActions = new ArrayList<ModelAction>();
         if (parentModelForm != null) {
             rowActions.addAll(parentModelForm.rowActions);
         }
@@ -871,7 +873,7 @@ public class ModelForm extends ModelWidg
         }
     }
 
-    public List<ModelWidgetAction> getActions() {
+    public List<ModelAction> getActions() {
         return actions;
     }
 
@@ -1298,7 +1300,7 @@ public class ModelForm extends ModelWidg
         return rowCountExdr.expandString(context);
     }
 
-    public List<ModelWidgetAction> getRowActions() {
+    public List<ModelAction> getRowActions() {
         return rowActions;
     }
 
@@ -1453,7 +1455,7 @@ public class ModelForm extends ModelWidg
     }
 
     public void runFormActions(Map<String, Object> context) {
-        ModelWidgetAction.runSubActions(this.actions, context);
+        AbstractModelAction.runSubActions(this.actions, context);
     }
 
     public static class AltRowStyle {
@@ -1735,9 +1737,9 @@ public class ModelForm extends ModelWidg
         private final String areaTarget;
         private final String defaultServiceName;
         private final String defaultEntityName;
-        private final WidgetWorker.AutoEntityParameters autoEntityParameters;
-        private final WidgetWorker.AutoEntityParameters autoServiceParameters;
-        private final List<WidgetWorker.Parameter> parameterList;
+        private final CommonWidgetModels.AutoEntityParameters autoEntityParameters;
+        private final CommonWidgetModels.AutoServiceParameters autoServiceParameters;
+        private final List<CommonWidgetModels.Parameter> parameterList;
 
         public UpdateArea(Element updateAreaElement) {
             this(updateAreaElement, null, null);
@@ -1757,21 +1759,21 @@ public class ModelForm extends ModelWidg
             if (parameterElementList.isEmpty()) {
                 this.parameterList = Collections.emptyList();
             } else {
-                List<WidgetWorker.Parameter> parameterList = new ArrayList<WidgetWorker.Parameter>(parameterElementList.size());
+                List<CommonWidgetModels.Parameter> parameterList = new ArrayList<CommonWidgetModels.Parameter>(parameterElementList.size());
                 for (Element parameterElement : parameterElementList) {
-                    parameterList.add(new WidgetWorker.Parameter(parameterElement));
+                    parameterList.add(new CommonWidgetModels.Parameter(parameterElement));
                 }
                 this.parameterList = Collections.unmodifiableList(parameterList);
             }
             Element autoServiceParamsElement = UtilXml.firstChildElement(updateAreaElement, "auto-parameters-service");
             if (autoServiceParamsElement != null) {
-                this.autoServiceParameters = new WidgetWorker.AutoEntityParameters(autoServiceParamsElement);
+                this.autoServiceParameters = new CommonWidgetModels.AutoServiceParameters(autoServiceParamsElement);
             } else {
                 this.autoServiceParameters = null;
             }
             Element autoEntityParamsElement = UtilXml.firstChildElement(updateAreaElement, "auto-parameters-entity");
             if (autoEntityParamsElement != null) {
-                this.autoEntityParameters = new WidgetWorker.AutoEntityParameters(autoEntityParamsElement);
+                this.autoEntityParameters = new CommonWidgetModels.AutoEntityParameters(autoEntityParamsElement);
             } else {
                 this.autoEntityParameters = null;
             }
@@ -1817,7 +1819,7 @@ public class ModelForm extends ModelWidg
             if (autoEntityParameters != null) {
                 fullParameterMap.putAll(autoEntityParameters.getParametersMap(context, defaultEntityName));
             }
-            for (WidgetWorker.Parameter parameter : this.parameterList) {
+            for (CommonWidgetModels.Parameter parameter : this.parameterList) {
                 fullParameterMap.put(parameter.getName(), parameter.getValue(context));
             }
 
@@ -1828,5 +1830,29 @@ public class ModelForm extends ModelWidg
         public int hashCode() {
             return areaId.hashCode();
         }
+
+        public String getAreaTarget() {
+            return areaTarget;
+        }
+
+        public String getDefaultServiceName() {
+            return defaultServiceName;
+        }
+
+        public String getDefaultEntityName() {
+            return defaultEntityName;
+        }
+
+        public CommonWidgetModels.AutoEntityParameters getAutoEntityParameters() {
+            return autoEntityParameters;
+        }
+
+        public CommonWidgetModels.AutoServiceParameters getAutoServiceParameters() {
+            return autoServiceParameters;
+        }
+
+        public List<CommonWidgetModels.Parameter> getParameterList() {
+            return parameterList;
+        }
     }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java Sat Jan 17 16:47:23 2015
@@ -35,8 +35,9 @@ import org.ofbiz.base.util.string.Flexib
 import org.ofbiz.entity.finder.EntityFinderUtil;
 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.w3c.dom.Element;
 
@@ -47,9 +48,9 @@ public abstract class ModelFormAction {
 
     public static final String module = ModelFormAction.class.getName();
 
-    public static List<ModelWidgetAction> readSubActions(ModelForm modelForm, Element parentElement) {
+    public static List<ModelAction> readSubActions(ModelForm modelForm, Element parentElement) {
         List<? extends Element> actionElementList = UtilXml.childElementList(parentElement);
-        List<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>(actionElementList.size());
+        List<ModelAction> actions = new ArrayList<ModelAction>(actionElementList.size());
         for (Element actionElement : UtilXml.childElementList(parentElement)) {
             if ("service".equals(actionElement.getNodeName())) {
                 actions.add(new Service(modelForm, actionElement));
@@ -62,11 +63,11 @@ public abstract class ModelFormAction {
                     }
                     actionElement.setAttribute("list", listName);
                 }
-                actions.add(ModelWidgetAction.newInstance(modelForm, actionElement));
+                actions.add(AbstractModelAction.newInstance(modelForm, actionElement));
             } else if ("call-parent-actions".equals(actionElement.getNodeName())) {
                 actions.add(new CallParentActions(modelForm, actionElement));
             } else {
-                actions.add(ModelWidgetAction.newInstance(modelForm, actionElement));
+                actions.add(AbstractModelAction.newInstance(modelForm, actionElement));
             }
         }
         return Collections.unmodifiableList(actions);
@@ -78,7 +79,7 @@ public abstract class ModelFormAction {
      * @see <code>widget-form.xsd</code>
      */
     @SuppressWarnings("serial")
-    public static class CallParentActions extends ModelWidgetAction {
+    public static class CallParentActions extends AbstractModelAction {
         private final ActionsKind kind;;
         private final ModelForm modelForm;
 
@@ -100,7 +101,7 @@ public abstract class ModelFormAction {
         }
 
         @Override
-        public void accept(ModelActionVisitor visitor) {
+        public void accept(ModelActionVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -112,7 +113,7 @@ public abstract class ModelFormAction {
                 parentModel.runFormActions(context);
                 break;
             case ROW_ACTIONS:
-                ModelWidgetAction.runSubActions(parentModel.getRowActions(), context);
+                AbstractModelAction.runSubActions(parentModel.getRowActions(), context);
                 break;
             }
         }
@@ -128,7 +129,7 @@ public abstract class ModelFormAction {
      * @see <code>widget-form.xsd</code>
      */
     @SuppressWarnings("serial")
-    public static class Service extends ModelWidgetAction {
+    public static class Service extends AbstractModelAction {
         private final FlexibleStringExpander autoFieldMapExdr;
         private final Map<FlexibleMapAccessor<Object>, Object> fieldMap;
         private final boolean ignoreError;
@@ -171,7 +172,7 @@ public abstract class ModelFormAction {
         }
 
         @Override
-        public void accept(ModelActionVisitor visitor) {
+        public void accept(ModelActionVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -246,5 +247,29 @@ public abstract class ModelFormAction {
                 }
             }
         }
+
+        public FlexibleStringExpander getAutoFieldMapExdr() {
+            return autoFieldMapExdr;
+        }
+
+        public Map<FlexibleMapAccessor<Object>, Object> getFieldMap() {
+            return fieldMap;
+        }
+
+        public boolean getIgnoreError() {
+            return ignoreError;
+        }
+
+        public FlexibleStringExpander getResultMapListNameExdr() {
+            return resultMapListNameExdr;
+        }
+
+        public FlexibleMapAccessor<Map<String, Object>> getResultMapNameAcsr() {
+            return resultMapNameAcsr;
+        }
+
+        public FlexibleStringExpander getServiceNameExdr() {
+            return serviceNameExdr;
+        }
     }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Sat Jan 17 16:47:23 2015
@@ -61,6 +61,7 @@ import org.ofbiz.entity.condition.Entity
 import org.ofbiz.entity.finder.EntityFinderUtil;
 import org.ofbiz.entity.model.ModelEntity;
 import org.ofbiz.entity.util.EntityUtil;
+import org.ofbiz.widget.CommonWidgetModels.*;
 import org.ofbiz.widget.ModelFieldVisitor;
 import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.form.ModelForm.UpdateArea;
@@ -901,7 +902,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -949,7 +950,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -999,7 +1000,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -1091,7 +1092,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -1210,7 +1211,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -1364,7 +1365,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -1641,7 +1642,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -1712,11 +1713,11 @@ public class ModelFormField {
             return this.textSize;
         }
 
-        public boolean isAllowEmpty() {
+        public boolean getAllowEmpty() {
             return this.allowEmpty;
         }
 
-        public boolean isAllowMultiple() {
+        public boolean getAllowMultiple() {
             return this.allowMulti;
         }
 
@@ -2007,7 +2008,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -2052,7 +2053,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -2091,110 +2092,32 @@ public class ModelFormField {
      * @see <code>widget-form.xsd</code>
      */
     public static class HyperlinkField extends FieldInfo {
-        public static String DEFAULT_TARGET_TYPE = "intra-app";
 
         private final boolean alsoHidden;
-        private final FlexibleStringExpander alternate;
-        private final WidgetWorker.AutoEntityParameters autoEntityParameters;
-        private final WidgetWorker.AutoServiceParameters autoServiceParameters;
         private final FlexibleStringExpander confirmationMsgExdr;
         private final FlexibleStringExpander description;
-        private final FlexibleStringExpander imageLocation;
-        private final FlexibleStringExpander imageTitle;
-        private final String linkType;
-        private final List<WidgetWorker.Parameter> parameterList;
-        private final FlexibleMapAccessor<Map<String, String>> parametersMapAcsr;
         private final boolean requestConfirmation;
-        private final String size;
-        private final FlexibleStringExpander target;
-        private final String targetType;
-        private final FlexibleStringExpander targetWindowExdr;
-
+        private final Link link;
         public HyperlinkField(Element element, ModelFormField modelFormField) {
             super(element, modelFormField);
             this.alsoHidden = !"false".equals(element.getAttribute("also-hidden"));
-            this.alternate = FlexibleStringExpander.getInstance(element.getAttribute("alternate"));
-            Element autoEntityParamsElement = UtilXml.firstChildElement(element, "auto-parameters-entity");
-            if (autoEntityParamsElement != null) {
-                this.autoEntityParameters = new WidgetWorker.AutoEntityParameters(autoEntityParamsElement);
-            } else {
-                this.autoEntityParameters = null;
-            }
-            Element autoServiceParamsElement = UtilXml.firstChildElement(element, "auto-parameters-service");
-            if (autoServiceParamsElement != null) {
-                this.autoServiceParameters = new WidgetWorker.AutoServiceParameters(autoServiceParamsElement);
-            } else {
-                this.autoServiceParameters = null;
-            }
             this.confirmationMsgExdr = FlexibleStringExpander.getInstance(element.getAttribute("confirmation-message"));
             this.description = FlexibleStringExpander.getInstance(element.getAttribute("description"));
-            this.imageLocation = FlexibleStringExpander.getInstance(element.getAttribute("image-location"));
-            this.imageTitle = FlexibleStringExpander.getInstance(element.getAttribute("image-title"));
-            this.linkType = element.getAttribute("link-type");
-            List<? extends Element> parameterElementList = UtilXml.childElementList(element, "parameter");
-            if (!parameterElementList.isEmpty()) {
-                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);
-            } else {
-                this.parameterList = Collections.emptyList();
-            }
-            this.parametersMapAcsr = FlexibleMapAccessor.getInstance(element.getAttribute("parameters-map"));
             this.requestConfirmation = "true".equals(element.getAttribute("request-confirmation"));
-            this.size = element.getAttribute("size");
-            this.target = FlexibleStringExpander.getInstance(element.getAttribute("target"));
-            this.targetType = element.getAttribute("target-type");
-            this.targetWindowExdr = FlexibleStringExpander.getInstance(element.getAttribute("target-window"));
+            this.link = new Link(element);
         }
 
         private HyperlinkField(HyperlinkField original, ModelFormField modelFormField) {
             super(original.getFieldSource(), original.getFieldType(), modelFormField);
-            this.description = original.description;
-            this.alternate = original.alternate;
-            this.imageLocation = original.imageLocation;
-            this.imageTitle = original.imageTitle;
-            this.target = original.target;
             this.alsoHidden = original.alsoHidden;
-            this.linkType = original.linkType;
-            this.targetType = original.targetType;
-            this.targetWindowExdr = original.targetWindowExdr;
-            this.parametersMapAcsr = original.parametersMapAcsr;
-            this.size = original.size;
-            this.requestConfirmation = original.requestConfirmation;
             this.confirmationMsgExdr = original.confirmationMsgExdr;
-            this.parameterList = original.parameterList;
-            this.autoEntityParameters = original.autoEntityParameters;
-            this.autoServiceParameters = original.autoServiceParameters;
-        }
-
-        public HyperlinkField(int fieldSource, ModelFormField modelFormField) {
-            super(fieldSource, FieldInfo.HYPERLINK, modelFormField);
-            this.alsoHidden = true;
-            this.alternate = FlexibleStringExpander.getInstance("");
-            this.autoEntityParameters = null;
-            this.autoServiceParameters = null;
-            this.confirmationMsgExdr = FlexibleStringExpander.getInstance("");
-            this.description = FlexibleStringExpander.getInstance("");
-            this.imageLocation = FlexibleStringExpander.getInstance("");
-            this.imageTitle = FlexibleStringExpander.getInstance("");
-            this.linkType = "";
-            this.parameterList = Collections.emptyList();
-            this.parametersMapAcsr = FlexibleMapAccessor.getInstance("");
-            this.requestConfirmation = false;
-            this.size = "";
-            this.target = FlexibleStringExpander.getInstance("");
-            this.targetType = "";
-            this.targetWindowExdr = FlexibleStringExpander.getInstance("");
-        }
-
-        public HyperlinkField(ModelFormField modelFormField) {
-            this(FieldInfo.SOURCE_EXPLICIT, modelFormField);
+            this.description = original.description;
+            this.requestConfirmation = original.requestConfirmation;
+            this.link = original.link;
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -2207,22 +2130,6 @@ public class ModelFormField {
             return this.alsoHidden;
         }
 
-        public FlexibleStringExpander getAlternate() {
-            return alternate;
-        }
-
-        public String getAlternate(Map<String, Object> context) {
-            return this.alternate.expandString(context);
-        }
-
-        public WidgetWorker.AutoEntityParameters getAutoEntityParameters() {
-            return autoEntityParameters;
-        }
-
-        public WidgetWorker.AutoServiceParameters getAutoServiceParameters() {
-            return autoServiceParameters;
-        }
-
         public String getConfirmation(Map<String, Object> context) {
             String message = getConfirmationMsg(context);
             if (UtilValidate.isNotEmpty(message))
@@ -2235,6 +2142,27 @@ public class ModelFormField {
             return "";
         }
 
+        public String getAlternate(Map<String, Object> context) {
+            if (link.getImage() != null) {
+                return link.getImage().getAlt(context);
+            }
+            return "";
+        }
+
+        public String getImageTitle(Map<String, Object> context) {
+            if (link.getImage() != null) {
+                return link.getImage().getTitleExdr().expandString(context);
+            }
+            return "";
+        }
+
+        public String getImageLocation(Map<String, Object> context) {
+            if (link.getImage() != null) {
+                return link.getImage().getSrc(context);
+            }
+            return "";
+        }
+
         public String getConfirmationMsg(Map<String, Object> context) {
             return this.confirmationMsgExdr.expandString(context);
         }
@@ -2251,88 +2179,124 @@ public class ModelFormField {
             return this.description.expandString(context);
         }
 
-        public FlexibleStringExpander getImageLocation() {
-            return imageLocation;
+        public boolean getRequestConfirmation() {
+            return this.requestConfirmation;
         }
 
-        public String getImageLocation(Map<String, Object> context) {
-            return this.imageLocation.expandString(context);
+        public Link getLink() {
+            return link;
         }
 
-        public FlexibleStringExpander getImageTitle() {
-            return imageTitle;
+        public AutoEntityParameters getAutoEntityParameters() {
+            return link.getAutoEntityParameters();
         }
 
-        public String getImageTitle(Map<String, Object> context) {
-            return this.imageTitle.expandString(context);
+        public AutoServiceParameters getAutoServiceParameters() {
+            return link.getAutoServiceParameters();
+        }
+
+        public boolean getEncode() {
+            return link.getEncode();
+        }
+
+        public boolean getFullPath() {
+            return link.getFullPath();
+        }
+
+        public String getHeight() {
+            return link.getHeight();
+        }
+
+        public String getId(Map<String, Object> context) {
+            return link.getId(context);
+        }
+
+        public FlexibleStringExpander getIdExdr() {
+            return link.getIdExdr();
+        }
+
+        public Image getImage() {
+            return link.getImage();
         }
 
         public String getLinkType() {
-            return this.linkType;
+            return link.getLinkType();
         }
 
-        public List<WidgetWorker.Parameter> getParameterList() {
-            return parameterList;
+        public String getName() {
+            return link.getName();
         }
 
-        public Map<String, String> getParameterMap(Map<String, Object> context) {
-            Map<String, String> fullParameterMap = new HashMap<String, String>();
+        public String getName(Map<String, Object> context) {
+            return link.getName(context);
+        }
 
-            Map<String, String> addlParamMap = this.parametersMapAcsr.get(context);
-            if (addlParamMap != null) {
-                fullParameterMap.putAll(addlParamMap);
-            }
+        public FlexibleStringExpander getNameExdr() {
+            return link.getNameExdr();
+        }
 
-            for (WidgetWorker.Parameter parameter : this.parameterList) {
-                fullParameterMap.put(parameter.getName(), parameter.getValue(context));
-            }
+        public List<Parameter> getParameterList() {
+            return link.getParameterList();
+        }
 
-            if (autoServiceParameters != null) {
-                fullParameterMap.putAll(autoServiceParameters.getParametersMap(context, this.getModelFormField().getModelForm()
-                        .getDefaultServiceName()));
-            }
+        public Map<String, String> getParameterMap(Map<String, Object> context) {
+            return link.getParameterMap(context);
+        }
 
-            if (autoEntityParameters != null) {
-                fullParameterMap.putAll(autoEntityParameters.getParametersMap(context, this.getModelFormField().getModelForm()
-                        .getDefaultEntityName()));
-            }
+        public String getPrefix(Map<String, Object> context) {
+            return link.getPrefix(context);
+        }
 
-            return fullParameterMap;
+        public FlexibleStringExpander getPrefixExdr() {
+            return link.getPrefixExdr();
         }
 
-        public FlexibleMapAccessor<Map<String, String>> getParametersMapAcsr() {
-            return parametersMapAcsr;
+        public boolean getSecure() {
+            return link.getSecure();
         }
 
-        public boolean getRequestConfirmation() {
-            return this.requestConfirmation;
+        public Integer getSize() {
+            return link.getSize();
         }
 
-        public String getSize() {
-            return this.size;
+        public String getStyle(Map<String, Object> context) {
+            return link.getStyle(context);
         }
 
-        public FlexibleStringExpander getTarget() {
-            return target;
+        public FlexibleStringExpander getStyleExdr() {
+            return link.getStyleExdr();
         }
 
         public String getTarget(Map<String, Object> context) {
-            return this.target.expandString(context);
+            return link.getTarget(context);
         }
 
-        public String getTargetType() {
-            if (UtilValidate.isNotEmpty(this.targetType))
-                return this.targetType;
-            return HyperlinkField.DEFAULT_TARGET_TYPE;
+        public FlexibleStringExpander getTargetExdr() {
+            return link.getTargetExdr();
         }
 
         public String getTargetWindow(Map<String, Object> context) {
-            String targetWindow = this.targetWindowExdr.expandString(context);
-            return targetWindow;
+            return link.getTargetWindow(context);
         }
 
         public FlexibleStringExpander getTargetWindowExdr() {
-            return targetWindowExdr;
+            return link.getTargetWindowExdr();
+        }
+
+        public String getText(Map<String, Object> context) {
+            return link.getText(context);
+        }
+
+        public FlexibleStringExpander getTextExdr() {
+            return link.getTextExdr();
+        }
+
+        public String getUrlMode() {
+            return link.getUrlMode();
+        }
+
+        public String getWidth() {
+            return link.getWidth();
         }
 
         @Override
@@ -2366,7 +2330,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -2439,7 +2403,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -2841,7 +2805,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -2968,7 +2932,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -3008,7 +2972,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -3052,7 +3016,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -3100,7 +3064,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -3169,196 +3133,159 @@ public class ModelFormField {
      * @see <code>widget-form.xsd</code>
      */
     public static class SubHyperlink {
-        private final WidgetWorker.AutoEntityParameters autoEntityParameters;
-        private final WidgetWorker.AutoServiceParameters autoServiceParameters;
-        private final FlexibleStringExpander confirmationMsgExdr;
         private final FlexibleStringExpander description;
-        private final String linkStyle;
-        private final String linkType;
-        private final ModelFormField modelFormField;
-        private final List<WidgetWorker.Parameter> parameterList;
-        private final boolean requestConfirmation;
-        private final FlexibleStringExpander target;
-        private final String targetType;
-        private final FlexibleStringExpander targetWindowExdr;
         private final FlexibleStringExpander useWhen;
+        private final Link link;
+        private final ModelFormField modelFormField;
 
         public SubHyperlink(Element element, ModelFormField modelFormField) {
-            Element autoEntityParamsElement = UtilXml.firstChildElement(element, "auto-parameters-entity");
-            if (autoEntityParamsElement != null) {
-                this.autoEntityParameters = new WidgetWorker.AutoEntityParameters(autoEntityParamsElement);
-            } else {
-                this.autoEntityParameters = null;
-            }
-            Element autoServiceParamsElement = UtilXml.firstChildElement(element, "auto-parameters-service");
-            if (autoServiceParamsElement != null) {
-                this.autoServiceParameters = new WidgetWorker.AutoServiceParameters(autoServiceParamsElement);
-            } else {
-                this.autoServiceParameters = null;
-            }
-            this.confirmationMsgExdr = FlexibleStringExpander.getInstance(element.getAttribute("confirmation-message"));
             this.description = FlexibleStringExpander.getInstance(element.getAttribute("description"));
-            this.linkStyle = element.getAttribute("link-style");
-            this.linkType = element.getAttribute("link-type");
-            this.modelFormField = modelFormField;
-            List<? extends Element> parameterElementList = UtilXml.childElementList(element, "parameter");
-            if (!parameterElementList.isEmpty()) {
-                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);
-            } else {
-                this.parameterList = Collections.emptyList();
-
-            }
-            this.requestConfirmation = "true".equals(element.getAttribute("request-confirmation"));
-            this.target = FlexibleStringExpander.getInstance(element.getAttribute("target"));
-            this.targetType = element.getAttribute("target-type");
-            this.targetWindowExdr = FlexibleStringExpander.getInstance(element.getAttribute("target-window"));
             this.useWhen = FlexibleStringExpander.getInstance(element.getAttribute("use-when"));
+            this.link = new Link(element);
+            this.modelFormField = modelFormField;
         }
 
         public SubHyperlink(SubHyperlink original, ModelFormField modelFormField) {
-            this.autoEntityParameters = original.autoEntityParameters;
-            this.autoServiceParameters = original.autoServiceParameters;
-            this.confirmationMsgExdr = original.confirmationMsgExdr;
             this.description = original.description;
-            this.linkStyle = original.linkStyle;
-            this.linkType = original.linkType;
-            this.modelFormField = modelFormField;
-            this.parameterList = original.parameterList;
-            this.requestConfirmation = original.requestConfirmation;
-            this.target = original.target;
-            this.targetType = original.targetType;
-            this.targetWindowExdr = original.targetWindowExdr;
             this.useWhen = original.useWhen;
+            this.link = original.link;
+            this.modelFormField = modelFormField;
         }
 
-        public WidgetWorker.AutoEntityParameters getAutoEntityParameters() {
-            return autoEntityParameters;
+        public AutoEntityParameters getAutoEntityParameters() {
+            return link.getAutoEntityParameters();
         }
 
-        public WidgetWorker.AutoServiceParameters getAutoServiceParameters() {
-            return autoServiceParameters;
+        public AutoServiceParameters getAutoServiceParameters() {
+            return link.getAutoServiceParameters();
         }
 
-        public String getConfirmation(Map<String, Object> context) {
-            String message = getConfirmationMsg(context);
-            if (UtilValidate.isNotEmpty(message))
-                return message;
-
-            if (getRequestConfirmation()) {
-                String defaultMessage = UtilProperties.getPropertyValue("general", "default.confirmation.message",
-                        "${uiLabelMap.CommonConfirm}");
-                return FlexibleStringExpander.expandString(defaultMessage, context);
-            }
-            return "";
+        public boolean getEncode() {
+            return link.getEncode();
         }
 
-        public String getConfirmationMsg(Map<String, Object> context) {
-            return this.confirmationMsgExdr.expandString(context);
+        public boolean getFullPath() {
+            return link.getFullPath();
         }
 
-        public FlexibleStringExpander getConfirmationMsgExdr() {
-            return confirmationMsgExdr;
+        public String getHeight() {
+            return link.getHeight();
         }
 
-        public FlexibleStringExpander getDescription() {
-            return description;
+        public String getId(Map<String, Object> context) {
+            return link.getId(context);
         }
 
-        public String getDescription(Map<String, Object> context) {
-            if (this.description != null) {
-                return this.description.expandString(context);
-            } else {
-                return "";
-            }
+        public FlexibleStringExpander getIdExdr() {
+            return link.getIdExdr();
         }
 
-        public String getLinkStyle() {
-            return this.linkStyle;
+        public Image getImage() {
+            return link.getImage();
         }
 
         public String getLinkType() {
-            return this.linkType;
+            return link.getLinkType();
         }
 
-        public ModelFormField getModelFormField() {
-            return this.modelFormField;
+        public String getName() {
+            return link.getName();
+        }
+
+        public String getName(Map<String, Object> context) {
+            return link.getName(context);
         }
 
-        public List<WidgetWorker.Parameter> getParameterList() {
-            return parameterList;
+        public FlexibleStringExpander getNameExdr() {
+            return link.getNameExdr();
+        }
+
+        public List<Parameter> getParameterList() {
+            return link.getParameterList();
         }
 
         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);
-            }
-            */
+        public String getPrefix(Map<String, Object> context) {
+            return link.getPrefix(context);
+        }
 
-            for (WidgetWorker.Parameter parameter : this.parameterList) {
-                fullParameterMap.put(parameter.getName(), parameter.getValue(context));
-            }
+        public FlexibleStringExpander getPrefixExdr() {
+            return link.getPrefixExdr();
+        }
 
-            if (autoServiceParameters != null) {
-                fullParameterMap.putAll(autoServiceParameters.getParametersMap(context, getModelFormField().getModelForm()
-                        .getDefaultServiceName()));
-            }
-            if (autoEntityParameters != null) {
-                fullParameterMap.putAll(autoEntityParameters.getParametersMap(context, this.getModelFormField().getModelForm()
-                        .getDefaultEntityName()));
-            }
+        public boolean getSecure() {
+            return link.getSecure();
+        }
 
-            return fullParameterMap;
+        public Integer getSize() {
+            return link.getSize();
         }
 
-        public boolean getRequestConfirmation() {
-            return this.requestConfirmation;
+        public String getStyle(Map<String, Object> context) {
+            return link.getStyle(context);
         }
 
-        public FlexibleStringExpander getTarget() {
-            return target;
+        public FlexibleStringExpander getStyleExdr() {
+            return link.getStyleExdr();
         }
 
         public String getTarget(Map<String, Object> context) {
-            if (this.target != null) {
-                return this.target.expandString(context);
-            } else {
-                return "";
-            }
+            return link.getTarget(context);
         }
 
-        public String getTargetType() {
-            if (UtilValidate.isNotEmpty(this.targetType))
-                return this.targetType;
-            return HyperlinkField.DEFAULT_TARGET_TYPE;
+        public FlexibleStringExpander getTargetExdr() {
+            return link.getTargetExdr();
         }
 
         public String getTargetWindow(Map<String, Object> context) {
-            String targetWindow = this.targetWindowExdr.expandString(context);
-            return targetWindow;
+            return link.getTargetWindow(context);
         }
 
         public FlexibleStringExpander getTargetWindowExdr() {
-            return targetWindowExdr;
+            return link.getTargetWindowExdr();
+        }
+
+        public String getText(Map<String, Object> context) {
+            return link.getText(context);
+        }
+
+        public FlexibleStringExpander getTextExdr() {
+            return link.getTextExdr();
+        }
+
+        public String getUrlMode() {
+            return link.getUrlMode();
+        }
+
+        public String getWidth() {
+            return link.getWidth();
+        }
+
+        public FlexibleStringExpander getDescription() {
+            return description;
+        }
+
+        public String getDescription(Map<String, Object> context) {
+            return description.expandString(context);
         }
 
         public FlexibleStringExpander getUseWhen() {
             return useWhen;
         }
 
+        public Link getLink() {
+            return link;
+        }
+
         public String getUseWhen(Map<String, Object> context) {
-            if (this.useWhen != null) {
-                return this.useWhen.expandString(context);
-            } else {
-                return "";
-            }
+            return this.useWhen.expandString(context);
+        }
+
+        public ModelFormField getModelFormField() {
+            return modelFormField;
         }
 
         public boolean shouldUse(Map<String, Object> context) {
@@ -3437,7 +3364,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -3569,7 +3496,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -3727,7 +3654,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 
@@ -3841,7 +3768,7 @@ public class ModelFormField {
         }
 
         @Override
-        public void accept(ModelFieldVisitor visitor) {
+        public void accept(ModelFieldVisitor visitor) throws Exception {
             visitor.visit(this);
         }
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlFormRenderer.java Sat Jan 17 16:47:23 2015
@@ -42,6 +42,7 @@ import org.ofbiz.base.util.template.Free
 import org.ofbiz.entity.Delegator;
 import org.ofbiz.webapp.control.RequestHandler;
 import org.ofbiz.webapp.taglib.ContentUrlTag;
+import org.ofbiz.widget.CommonWidgetModels;
 import org.ofbiz.widget.ModelWidget;
 import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.form.FormRenderer;
@@ -337,7 +338,7 @@ public class HtmlFormRenderer extends Ht
         ModelFormField modelFormField = hyperlinkField.getModelFormField();
         String description = encode(hyperlinkField.getDescription(context), modelFormField, context);
         String confirmation = encode(hyperlinkField.getConfirmation(context), modelFormField, context);
-        WidgetWorker.makeHyperlinkByType(writer, hyperlinkField.getLinkType(), modelFormField.getWidgetStyle(), hyperlinkField.getTargetType(), hyperlinkField.getTarget(context),
+        WidgetWorker.makeHyperlinkByType(writer, hyperlinkField.getLinkType(), modelFormField.getWidgetStyle(), hyperlinkField.getUrlMode(), hyperlinkField.getTarget(context),
                 hyperlinkField.getParameterMap(context), description, hyperlinkField.getTargetWindow(context), confirmation, modelFormField,
                 this.request, this.response, context);
         this.appendTooltip(writer, context, modelFormField);
@@ -351,8 +352,8 @@ public class HtmlFormRenderer extends Ht
         if (subHyperlink.shouldUse(context)) {
             writer.append(' ');
             String description = encode(subHyperlink.getDescription(context), subHyperlink.getModelFormField(), context);
-            WidgetWorker.makeHyperlinkByType(writer, subHyperlink.getLinkType(), subHyperlink.getLinkStyle(), subHyperlink.getTargetType(), subHyperlink.getTarget(context),
-                    subHyperlink.getParameterMap(context), description, subHyperlink.getTargetWindow(context), subHyperlink.getConfirmation(context), subHyperlink.getModelFormField(),
+            WidgetWorker.makeHyperlinkByType(writer, subHyperlink.getLinkType(), subHyperlink.getStyle(context), subHyperlink.getUrlMode(), subHyperlink.getTarget(context),
+                    subHyperlink.getParameterMap(context), description, subHyperlink.getTargetWindow(context), null, subHyperlink.getModelFormField(),
                     this.request, this.response, context);
         }
     }
@@ -654,7 +655,7 @@ public class HtmlFormRenderer extends Ht
                 writer.append('"');
             }
 
-            if (dropDownField.isAllowMultiple()) {
+            if (dropDownField.getAllowMultiple()) {
                 writer.append(" multiple=\"multiple\"");
             }
 
@@ -703,7 +704,7 @@ public class HtmlFormRenderer extends Ht
             }
 
             // if allow empty is true, add an empty option
-            if (dropDownField.isAllowEmpty()) {
+            if (dropDownField.getAllowEmpty()) {
                 writer.append("<option value=\"\">&nbsp;</option>");
             }
 
@@ -2748,7 +2749,7 @@ public class HtmlFormRenderer extends Ht
             FlexibleStringExpander target = FlexibleStringExpander.getInstance(modelFormField.getHeaderLink());
             String fullTarget = target.expandString(context);
             targetBuffer.append(fullTarget);
-            String targetType = HyperlinkField.DEFAULT_TARGET_TYPE;
+            String targetType = CommonWidgetModels.Link.DEFAULT_URL_MODE;
             if (UtilValidate.isNotEmpty(targetBuffer.toString()) && targetBuffer.toString().toLowerCase().startsWith("javascript:")) {
                 targetType="plain";
             }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlMenuRenderer.java Sat Jan 17 16:47:23 2015
@@ -41,8 +41,8 @@ import org.ofbiz.widget.WidgetWorker;
 import org.ofbiz.widget.menu.MenuStringRenderer;
 import org.ofbiz.widget.menu.ModelMenu;
 import org.ofbiz.widget.menu.ModelMenuItem;
-import org.ofbiz.widget.menu.ModelMenuItem.Image;
-import org.ofbiz.widget.menu.ModelMenuItem.Link;
+import org.ofbiz.widget.CommonWidgetModels.*;
+import org.ofbiz.widget.menu.ModelMenuItem.MenuLink;
 
 /**
  * Widget Library - HTML Menu Renderer implementation
@@ -180,7 +180,7 @@ public class HtmlMenuRenderer extends Ht
         }
         writer.append(">");
 
-        Link link = menuItem.getLink();
+        MenuLink link = menuItem.getLink();
         //if (Debug.infoOn()) Debug.logInfo("in HtmlMenuRendererImage, link(0):" + link,"");
         if (link != null) {
             renderLink(writer, context, link);
@@ -375,7 +375,7 @@ public class HtmlMenuRenderer extends Ht
         return title;
     }
 
-    public void renderLink(Appendable writer, Map<String, Object> context, ModelMenuItem.Link link) throws IOException {
+    public void renderLink(Appendable writer, Map<String, Object> context, ModelMenuItem.MenuLink link) throws IOException {
         String target = link.getTarget(context);
         ModelMenuItem menuItem = link.getLinkMenuItem();
         if (isDisableIfEmpty(menuItem, context)) {
@@ -453,7 +453,7 @@ public class HtmlMenuRenderer extends Ht
             }
 
             writer.append(" href=\"");
-            String confirmationMsg = link.getConfirmation(context);
+            String confirmationMsg = null;
             if ("hidden-form".equals(linkType)) {
                 if (UtilValidate.isNotEmpty(confirmationMsg)) {
                     writer.append("javascript:confirmActionFormLink('");
@@ -523,7 +523,7 @@ public class HtmlMenuRenderer extends Ht
         */
     }
 
-    public void renderImage(Appendable writer, Map<String, Object> context, ModelMenuItem.Image image) throws IOException {
+    public void renderImage(Appendable writer, Map<String, Object> context, Image image) throws IOException {
         // open tag
         writer.append("<img ");
         String id = image.getId(context);

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/html/HtmlScreenRenderer.java Sat Jan 17 16:47:23 2015
@@ -51,7 +51,7 @@ import org.ofbiz.widget.form.Paginator;
 import org.ofbiz.widget.menu.MenuStringRenderer;
 import org.ofbiz.widget.menu.ModelMenu;
 import org.ofbiz.widget.screen.ModelScreenWidget;
-import org.ofbiz.widget.screen.ModelScreenWidget.ColumnContainer;
+import org.ofbiz.widget.screen.ModelScreenWidget.*;
 import org.ofbiz.widget.screen.ScreenStringRenderer;
 
 /**
@@ -82,18 +82,18 @@ public class HtmlScreenRenderer extends
     public void renderScreenEnd(Appendable writer, Map<String, Object> context) throws IOException {
     }
 
-    public void renderSectionBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.Section section) throws IOException {
+    public void renderSectionBegin(Appendable writer, Map<String, Object> context, Section section) throws IOException {
         if (section.isMainSection()) {
             this.widgetCommentsEnabled = ModelWidget.widgetBoundaryCommentsEnabled(context);
         }
         renderBeginningBoundaryComment(writer, section.isMainSection()?"Screen":"Section Widget", section);
     }
 
-    public void renderSectionEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.Section section) throws IOException {
+    public void renderSectionEnd(Appendable writer, Map<String, Object> context, Section section) throws IOException {
         renderEndingBoundaryComment(writer, section.isMainSection()?"Screen":"Section Widget", section);
     }
 
-    public void renderContainerBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.Container container) throws IOException {
+    public void renderContainerBegin(Appendable writer, Map<String, Object> context, Container container) throws IOException {
         String containerId = container.getId(context);
         String autoUpdateTarget = container.getAutoUpdateTargetExdr(context);
         HttpServletRequest request = (HttpServletRequest) context.get("request");
@@ -131,12 +131,12 @@ public class HtmlScreenRenderer extends
         writer.append(">");
         appendWhitespace(writer);
     }
-    public void renderContainerEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.Container container) throws IOException {
+    public void renderContainerEnd(Appendable writer, Map<String, Object> context, Container container) throws IOException {
         writer.append("</div>");
         appendWhitespace(writer);
     }
 
-    public void renderHorizontalSeparator(Appendable writer, Map<String, Object> context, ModelScreenWidget.HorizontalSeparator separator) throws IOException {
+    public void renderHorizontalSeparator(Appendable writer, Map<String, Object> context, HorizontalSeparator separator) throws IOException {
         writer.append("<hr");
         String className = separator.getStyle(context);
         if (UtilValidate.isNotEmpty(className)) {
@@ -150,11 +150,11 @@ public class HtmlScreenRenderer extends
         appendWhitespace(writer);
     }
 
-    public void renderScreenletBegin(Appendable writer, Map<String, Object> context, boolean collapsed, ModelScreenWidget.Screenlet screenlet) throws IOException {
+    public void renderScreenletBegin(Appendable writer, Map<String, Object> context, boolean collapsed, Screenlet screenlet) throws IOException {
         HttpServletRequest request = (HttpServletRequest) context.get("request");
         HttpServletResponse response = (HttpServletResponse) context.get("response");
         boolean javaScriptEnabled = UtilHttp.isJavaScriptEnabled(request);
-        ModelScreenWidget.Menu tabMenu = screenlet.getTabMenu();
+        Menu tabMenu = screenlet.getTabMenu();
         if (tabMenu != null) {
             tabMenu.renderWidgetString(writer, context, this);
         }
@@ -169,8 +169,8 @@ public class HtmlScreenRenderer extends
         appendWhitespace(writer);
 
         String title = screenlet.getTitle(context);
-        ModelScreenWidget.Menu navMenu = screenlet.getNavigationMenu();
-        ModelScreenWidget.Form navForm = screenlet.getNavigationForm();
+        Menu navMenu = screenlet.getNavigationMenu();
+        Form navForm = screenlet.getNavigationForm();
         String collapsibleAreaId = null;
         if (UtilValidate.isNotEmpty(title) || navMenu != null || navForm != null || screenlet.collapsible()) {
             writer.append("<div class=\"screenlet-title-bar\">");
@@ -275,7 +275,7 @@ public class HtmlScreenRenderer extends
         return value != null ? value.intValue() : 0;
     }
 
-    protected void renderScreenletPaginateMenu(Appendable writer, Map<String, Object> context, ModelScreenWidget.Form form) throws IOException {
+    protected void renderScreenletPaginateMenu(Appendable writer, Map<String, Object> context, Form form) throws IOException {
         HttpServletResponse response = (HttpServletResponse) context.get("response");
         HttpServletRequest request = (HttpServletRequest) context.get("request");
         ModelForm modelForm = form.getModelForm(context);
@@ -418,7 +418,7 @@ public class HtmlScreenRenderer extends
         appendWhitespace(writer);
     }
 
-    public void renderScreenletSubWidget(Appendable writer, Map<String, Object> context, ModelScreenWidget subWidget, ModelScreenWidget.Screenlet screenlet) throws GeneralException, IOException {
+    public void renderScreenletSubWidget(Appendable writer, Map<String, Object> context, ModelScreenWidget subWidget, Screenlet screenlet) throws GeneralException, IOException {
         if (subWidget.equals(screenlet.getNavigationForm())) {
             HttpServletRequest request = (HttpServletRequest) context.get("request");
             HttpServletResponse response = (HttpServletResponse) context.get("response");
@@ -437,7 +437,7 @@ public class HtmlScreenRenderer extends
         }
     }
 
-    public void renderScreenletEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.Screenlet screenlet) throws IOException {
+    public void renderScreenletEnd(Appendable writer, Map<String, Object> context, Screenlet screenlet) throws IOException {
         writer.append("</div>");
         appendWhitespace(writer);
         writer.append("</div>");
@@ -454,7 +454,7 @@ public class HtmlScreenRenderer extends
         public void renderMenuClose(Appendable writer, Map<String, Object> context, ModelMenu modelMenu) {}
     }
 
-    public void renderLabel(Appendable writer, Map<String, Object> context, ModelScreenWidget.Label label) throws IOException {
+    public void renderLabel(Appendable writer, Map<String, Object> context, Label label) throws IOException {
         String labelText = label.getText(context);
         if (UtilValidate.isEmpty(labelText)) {
             // nothing to render
@@ -491,7 +491,7 @@ public class HtmlScreenRenderer extends
         appendWhitespace(writer);
     }
 
-    public void renderLink(Appendable writer, Map<String, Object> context, ModelScreenWidget.Link link) throws IOException {
+    public void renderLink(Appendable writer, Map<String, Object> context, ScreenLink link) throws IOException {
         HttpServletResponse response = (HttpServletResponse) context.get("response");
         HttpServletRequest request = (HttpServletRequest) context.get("request");
 
@@ -571,7 +571,7 @@ public class HtmlScreenRenderer extends
         writer.append(">");
 
         // the text
-        ModelScreenWidget.Image img = link.getImage();
+        ScreenImage img = link.getImage();
         if (img == null) {
             writer.append(link.getText(context));
         } else {
@@ -584,7 +584,7 @@ public class HtmlScreenRenderer extends
         appendWhitespace(writer);
     }
 
-    public void renderImage(Appendable writer, Map<String, Object> context, ModelScreenWidget.Image image) throws IOException {
+    public void renderImage(Appendable writer, Map<String, Object> context, ScreenImage image) throws IOException {
         // open tag
         String src = image.getSrc(context);
         if (UtilValidate.isEmpty(src)) {
@@ -660,7 +660,7 @@ public class HtmlScreenRenderer extends
         appendWhitespace(writer);
     }
 
-    public void renderContentBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.Content content) throws IOException {
+    public void renderContentBegin(Appendable writer, Map<String, Object> context, Content content) throws IOException {
         String editRequest = content.getEditRequest(context);
         String editContainerStyle = content.getEditContainerStyle(context);
         String enableEditName = content.getEnableEditName(context);
@@ -675,7 +675,7 @@ public class HtmlScreenRenderer extends
         }
     }
 
-    public void renderContentBody(Appendable writer, Map<String, Object> context, ModelScreenWidget.Content content) throws IOException {
+    public void renderContentBody(Appendable writer, Map<String, Object> context, Content content) throws IOException {
         Locale locale = UtilMisc.ensureLocale(context.get("locale"));
         //Boolean nullThruDatesOnly = Boolean.valueOf(false);
         String mimeTypeId = "text/html";
@@ -739,7 +739,7 @@ public class HtmlScreenRenderer extends
         }
     }
 
-    public void renderContentEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.Content content) throws IOException {
+    public void renderContentEnd(Appendable writer, Map<String, Object> context, Content content) throws IOException {
 
                 //Debug.logInfo("renderContentEnd, context:" + context, module);
         String expandedContentId = content.getContentId(context);
@@ -771,7 +771,7 @@ public class HtmlScreenRenderer extends
         }
     }
 
-    public void renderContentFrame(Appendable writer, Map<String, Object> context, ModelScreenWidget.Content content) throws IOException {
+    public void renderContentFrame(Appendable writer, Map<String, Object> context, Content content) throws IOException {
 
 
         HttpServletRequest request = (HttpServletRequest) context.get("request");
@@ -795,7 +795,7 @@ public class HtmlScreenRenderer extends
 
     }
 
-    public void renderSubContentBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.SubContent content) throws IOException {
+    public void renderSubContentBegin(Appendable writer, Map<String, Object> context, SubContent content) throws IOException {
 
         String editRequest = content.getEditRequest(context);
         String editContainerStyle = content.getEditContainerStyle(context);
@@ -809,7 +809,7 @@ public class HtmlScreenRenderer extends
         }
     }
 
-    public void renderSubContentBody(Appendable writer, Map<String, Object> context, ModelScreenWidget.SubContent content) throws IOException {
+    public void renderSubContentBody(Appendable writer, Map<String, Object> context, SubContent content) throws IOException {
             Locale locale = Locale.getDefault();
             String mimeTypeId = "text/html";
             String expandedContentId = content.getContentId(context);
@@ -857,7 +857,7 @@ public class HtmlScreenRenderer extends
             }
     }
 
-    public void renderSubContentEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.SubContent content) throws IOException {
+    public void renderSubContentEnd(Appendable writer, Map<String, Object> context, SubContent content) throws IOException {
 
         String editMode = "Edit";
         String editRequest = content.getEditRequest(context);
@@ -903,25 +903,25 @@ public class HtmlScreenRenderer extends
         }
     }
 
-    public void renderPortalPageBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage) throws GeneralException, IOException {
+    public void renderPortalPageBegin(Appendable writer, Map<String, Object> context, PortalPage portalPage) throws GeneralException, IOException {
         // TODO: not implemented
     }
-    public void renderPortalPageEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage) throws GeneralException, IOException {
+    public void renderPortalPageEnd(Appendable writer, Map<String, Object> context, PortalPage portalPage) throws GeneralException, IOException {
         // TODO: not implemented
     }
-    public void renderPortalPageColumnBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPageColumn) throws GeneralException, IOException {
+    public void renderPortalPageColumnBegin(Appendable writer, Map<String, Object> context, PortalPage portalPage, GenericValue portalPageColumn) throws GeneralException, IOException {
         // TODO: not implemented
     }
-    public void renderPortalPageColumnEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPageColumn) throws GeneralException, IOException {
+    public void renderPortalPageColumnEnd(Appendable writer, Map<String, Object> context, PortalPage portalPage, GenericValue portalPageColumn) throws GeneralException, IOException {
         // TODO: not implemented
     }
-    public void renderPortalPagePortletBegin(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
+    public void renderPortalPagePortletBegin(Appendable writer, Map<String, Object> context, PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
         // TODO: not implemented
     }
-    public void renderPortalPagePortletEnd(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
+    public void renderPortalPagePortletEnd(Appendable writer, Map<String, Object> context, PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
         // TODO: not implemented
     }
-    public void renderPortalPagePortletBody(Appendable writer, Map<String, Object> context, ModelScreenWidget.PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
+    public void renderPortalPagePortletBody(Appendable writer, Map<String, Object> context, PortalPage portalPage, GenericValue portalPortlet) throws GeneralException, IOException {
         // TODO: not implemented
     }
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MacroMenuRenderer.java Sat Jan 17 16:47:23 2015
@@ -39,10 +39,10 @@ import org.ofbiz.base.util.UtilValidate;
 import org.ofbiz.base.util.template.FreeMarkerWorker;
 import org.ofbiz.webapp.control.RequestHandler;
 import org.ofbiz.webapp.taglib.ContentUrlTag;
+import org.ofbiz.widget.CommonWidgetModels.Image;
 import org.ofbiz.widget.ModelWidget;
 import org.ofbiz.widget.WidgetWorker;
-import org.ofbiz.widget.menu.ModelMenuItem.Image;
-import org.ofbiz.widget.menu.ModelMenuItem.Link;
+import org.ofbiz.widget.menu.ModelMenuItem.MenuLink;
 
 import freemarker.core.Environment;
 import freemarker.template.Template;
@@ -190,7 +190,7 @@ public class MacroMenuRenderer implement
     }
 
     @Override
-    public void renderLink(Appendable writer, Map<String, Object> context, Link link) throws IOException {
+    public void renderLink(Appendable writer, Map<String, Object> context, MenuLink link) throws IOException {
         Map<String, Object> parameters = new HashMap<String, Object>();
         String target = link.getTarget(context);
         ModelMenuItem menuItem = link.getLinkMenuItem();
@@ -303,7 +303,7 @@ public class MacroMenuRenderer implement
         parameters.put("style", style);
         parameters.put("toolTip", menuItem.getTooltip(context));
         String linkStr = "";
-        Link link = menuItem.getLink();
+        MenuLink link = menuItem.getLink();
         if (link != null) {
             StringWriter sw = new StringWriter();
             renderLink(sw, context, link);

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MenuStringRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MenuStringRenderer.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MenuStringRenderer.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/MenuStringRenderer.java Sat Jan 17 16:47:23 2015
@@ -21,6 +21,8 @@ package org.ofbiz.widget.menu;
 import java.io.IOException;
 import java.util.Map;
 
+import org.ofbiz.widget.CommonWidgetModels.Image;
+
 
 /**
  * Widget Library - Form String Renderer interface
@@ -32,6 +34,6 @@ public interface MenuStringRenderer {
     public void renderFormatSimpleWrapperOpen(Appendable writer, Map<String, Object> context, ModelMenu menu) throws IOException ;
     public void renderFormatSimpleWrapperClose(Appendable writer, Map<String, Object> context, ModelMenu menu) throws IOException ;
     public void renderFormatSimpleWrapperRows(Appendable writer, Map<String, Object> context, Object menu) throws IOException ;
-    public void renderLink(Appendable writer, Map<String, Object> context, ModelMenuItem.Link link) throws IOException ;
-    public void renderImage(Appendable writer, Map<String, Object> context, ModelMenuItem.Image image) throws IOException ;
+    public void renderLink(Appendable writer, Map<String, Object> context, ModelMenuItem.MenuLink link) throws IOException ;
+    public void renderImage(Appendable writer, Map<String, Object> context, Image image) throws IOException ;
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenu.java Sat Jan 17 16:47:23 2015
@@ -31,7 +31,7 @@ import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.base.util.collections.FlexibleMapAccessor;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.widget.ModelWidget;
-import org.ofbiz.widget.ModelWidgetAction;
+import org.ofbiz.widget.*;
 import org.ofbiz.widget.ModelWidgetVisitor;
 import org.w3c.dom.Element;
 
@@ -59,7 +59,7 @@ public class ModelMenu extends ModelWidg
 
     public static final String module = ModelMenu.class.getName();
 
-    private final List<ModelWidgetAction> actions;
+    private final List<ModelAction> actions;
     private final String defaultAlign;
     private final String defaultAlignStyle;
     private final FlexibleStringExpander defaultAssociatedContentId;
@@ -70,8 +70,6 @@ public class ModelMenu extends ModelWidg
     private final String defaultMenuItemName;
     private final String defaultPermissionEntityAction;
     private final String defaultPermissionOperation;
-    private final String defaultPermissionStatusId;
-    private final String defaultPrivilegeEnumId;
     private final String defaultSelectedStyle;
     private final String defaultTitleStyle;
     private final String defaultTooltipStyle;
@@ -98,6 +96,7 @@ public class ModelMenu extends ModelWidg
     private final String menuLocation;
     private final String menuWidth;
     private final String orientation;
+    private final ModelMenu parentMenu;
     private final FlexibleMapAccessor<String> selectedMenuItemContextFieldName;
     private final String target;
     private final FlexibleStringExpander title;
@@ -107,7 +106,7 @@ public class ModelMenu extends ModelWidg
     /** XML Constructor */
     public ModelMenu(Element menuElement, String menuLocation) {
         super(menuElement);
-        ArrayList<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>();
+        ArrayList<ModelAction> actions = new ArrayList<ModelAction>();
         String defaultAlign = "";
         String defaultAlignStyle = "";
         FlexibleStringExpander defaultAssociatedContentId = FlexibleStringExpander.getInstance("");
@@ -118,8 +117,6 @@ public class ModelMenu extends ModelWidg
         String defaultMenuItemName = "";
         String defaultPermissionEntityAction = "";
         String defaultPermissionOperation = "";
-        String defaultPermissionStatusId = "";
-        String defaultPrivilegeEnumId = "";
         String defaultSelectedStyle = "";
         String defaultTitleStyle = "";
         String defaultTooltipStyle = "";
@@ -138,10 +135,10 @@ public class ModelMenu extends ModelWidg
         String tooltip = "";
         String type = "";
         // check if there is a parent menu to inherit from
+        ModelMenu parent = null;
         String parentResource = menuElement.getAttribute("extends-resource");
         String parentMenu = menuElement.getAttribute("extends");
         if (!parentMenu.isEmpty()) {
-            ModelMenu parent = null;
             if (!parentResource.isEmpty()) {
                 try {
                     parent = MenuFactory.getMenuFromLocation(parentResource, parentMenu);
@@ -154,8 +151,6 @@ public class ModelMenu extends ModelWidg
                 // try to find a menu definition in the same file
                 Element rootElement = menuElement.getOwnerDocument().getDocumentElement();
                 List<? extends Element> menuElements = UtilXml.childElementList(rootElement, "menu");
-                //Uncomment below to add support for abstract menus
-                //menuElements.addAll(UtilXml.childElementList(rootElement, "abstract-menu"));
                 for (Element menuElementEntry : menuElements) {
                     if (menuElementEntry.getAttribute("name").equals(parentMenu)) {
                         parent = new ModelMenu(menuElementEntry, parentResource);
@@ -183,8 +178,6 @@ public class ModelMenu extends ModelWidg
                 defaultPermissionOperation = parent.defaultPermissionOperation;
                 defaultPermissionEntityAction = parent.defaultPermissionEntityAction;
                 defaultAssociatedContentId = parent.defaultAssociatedContentId;
-                defaultPermissionStatusId = parent.defaultPermissionStatusId;
-                defaultPrivilegeEnumId = parent.defaultPrivilegeEnumId;
                 defaultHideIfSelected = parent.defaultHideIfSelected;
                 orientation = parent.orientation;
                 menuWidth = parent.menuWidth;
@@ -201,61 +194,57 @@ public class ModelMenu extends ModelWidg
                 }
             }
         }
-        if (menuElement.hasAttribute("type"))
+        if (!menuElement.getAttribute("type").isEmpty())
             type = menuElement.getAttribute("type");
-        if (menuElement.hasAttribute("target"))
+        if (!menuElement.getAttribute("target").isEmpty())
             target = menuElement.getAttribute("target");
-        if (menuElement.hasAttribute("id"))
+        if (!menuElement.getAttribute("id").isEmpty())
             id = menuElement.getAttribute("id");
-        if (menuElement.hasAttribute("title"))
+        if (!menuElement.getAttribute("title").isEmpty())
             title = FlexibleStringExpander.getInstance(menuElement.getAttribute("title"));
-        if (menuElement.hasAttribute("tooltip"))
+        if (!menuElement.getAttribute("tooltip").isEmpty())
             tooltip = menuElement.getAttribute("tooltip");
-        if (menuElement.hasAttribute("default-entity-name"))
+        if (!menuElement.getAttribute("default-entity-name").isEmpty())
             defaultEntityName = menuElement.getAttribute("default-entity-name");
-        if (menuElement.hasAttribute("default-title-style"))
+        if (!menuElement.getAttribute("default-title-style").isEmpty())
             defaultTitleStyle = menuElement.getAttribute("default-title-style");
-        if (menuElement.hasAttribute("default-selected-style"))
+        if (!menuElement.getAttribute("default-selected-style").isEmpty())
             defaultSelectedStyle = menuElement.getAttribute("default-selected-style");
-        if (menuElement.hasAttribute("default-widget-style"))
+        if (!menuElement.getAttribute("default-widget-style").isEmpty())
             defaultWidgetStyle = menuElement.getAttribute("default-widget-style");
-        if (menuElement.hasAttribute("default-tooltip-style"))
+        if (!menuElement.getAttribute("default-tooltip-style").isEmpty())
             defaultTooltipStyle = menuElement.getAttribute("default-tooltip-style");
-        if (menuElement.hasAttribute("default-menu-item-name"))
+        if (!menuElement.getAttribute("default-menu-item-name").isEmpty())
             defaultMenuItemName = menuElement.getAttribute("default-menu-item-name");
-        if (menuElement.hasAttribute("default-permission-operation"))
+        if (!menuElement.getAttribute("default-permission-operation").isEmpty())
             defaultPermissionOperation = menuElement.getAttribute("default-permission-operation");
-        if (menuElement.hasAttribute("default-permission-entity-action"))
+        if (!menuElement.getAttribute("default-permission-entity-action").isEmpty())
             defaultPermissionEntityAction = menuElement.getAttribute("default-permission-entity-action");
-        if (menuElement.hasAttribute("defaultPermissionStatusId"))
-            defaultPermissionStatusId = menuElement.getAttribute("default-permission-status-id");
-        if (menuElement.hasAttribute("defaultPrivilegeEnumId"))
-            defaultPrivilegeEnumId = menuElement.getAttribute("default-privilege-enum-id");
-        if (menuElement.hasAttribute("defaultAssociatedContentId"))
+        if (!menuElement.getAttribute("default-associated-content-id").isEmpty())
             defaultAssociatedContentId = FlexibleStringExpander.getInstance(menuElement
                     .getAttribute("default-associated-content-id"));
-        if (menuElement.hasAttribute("orientation"))
+        if (!menuElement.getAttribute("orientation").isEmpty())
             orientation = menuElement.getAttribute("orientation");
-        if (menuElement.hasAttribute("menu-width"))
+        if (!menuElement.getAttribute("menu-width").isEmpty())
             menuWidth = menuElement.getAttribute("menu-width");
-        if (menuElement.hasAttribute("default-cell-width"))
+        if (!menuElement.getAttribute("default-cell-width").isEmpty())
             defaultCellWidth = menuElement.getAttribute("default-cell-width");
-        if (menuElement.hasAttribute("default-hide-if-selected"))
-            defaultHideIfSelected = "true".equals(menuElement.getAttribute("default-hide-if-selected"));
-        if (menuElement.hasAttribute("default-disabled-title-style"))
+        if (!menuElement.getAttribute("default-hide-if-selected").isEmpty())
+            defaultHideIfSelected = "true".equals(menuElement.getAttribute("default-hide-if-selected").isEmpty());
+        if (!menuElement.getAttribute("default-disabled-title-style").isEmpty())
             defaultDisabledTitleStyle = menuElement.getAttribute("default-disabled-title-style");
-        if (menuElement.hasAttribute("selected-menuitem-context-field-name"))
+        if (!menuElement.getAttribute("selected-menuitem-context-field-name").isEmpty())
             selectedMenuItemContextFieldName = FlexibleMapAccessor.getInstance(menuElement
                     .getAttribute("selected-menuitem-context-field-name"));
-        if (menuElement.hasAttribute("menu-container-style"))
+        if (!menuElement.getAttribute("menu-container-style").isEmpty())
             menuContainerStyleExdr = FlexibleStringExpander.getInstance(menuElement.getAttribute("menu-container-style"));
-        if (menuElement.hasAttribute("default-align"))
+        if (!menuElement.getAttribute("default-align").isEmpty())
             defaultAlign = menuElement.getAttribute("default-align");
-        if (menuElement.hasAttribute("default-align-style"))
+        if (!menuElement.getAttribute("default-align-style").isEmpty())
             defaultAlignStyle = menuElement.getAttribute("default-align-style");
-        if (menuElement.hasAttribute("fill-style"))
+        if (!menuElement.getAttribute("fill-style").isEmpty())
             fillStyle = menuElement.getAttribute("fill-style");
-        if (menuElement.hasAttribute("extra-index"))
+        if (!menuElement.getAttribute("extra-index").isEmpty())
             extraIndex = FlexibleStringExpander.getInstance(menuElement.getAttribute("extra-index"));
         // read all actions under the "actions" element
         Element actionsElement = UtilXml.firstChildElement(menuElement, "actions");
@@ -274,8 +263,6 @@ public class ModelMenu extends ModelWidg
         this.defaultMenuItemName = defaultMenuItemName;
         this.defaultPermissionEntityAction = defaultPermissionEntityAction;
         this.defaultPermissionOperation = defaultPermissionOperation;
-        this.defaultPermissionStatusId = defaultPermissionStatusId;
-        this.defaultPrivilegeEnumId = defaultPrivilegeEnumId;
         this.defaultSelectedStyle = defaultSelectedStyle;
         this.defaultTitleStyle = defaultTitleStyle;
         this.defaultTooltipStyle = defaultTooltipStyle;
@@ -295,6 +282,7 @@ public class ModelMenu extends ModelWidg
         this.menuLocation = menuLocation;
         this.menuWidth = menuWidth;
         this.orientation = orientation;
+        this.parentMenu = parent;
         this.selectedMenuItemContextFieldName = selectedMenuItemContextFieldName;
         this.target = target;
         this.title = title;
@@ -327,7 +315,7 @@ public class ModelMenu extends ModelWidg
         }
     }
 
-    public List<ModelWidgetAction> getActions() {
+    public List<ModelAction> getActions() {
         return actions;
     }
 
@@ -384,14 +372,6 @@ public class ModelMenu extends ModelWidg
         return this.defaultPermissionOperation;
     }
 
-    public String getDefaultPermissionStatusId() {
-        return this.defaultPermissionStatusId;
-    }
-
-    public String getDefaultPrivilegeEnumId() {
-        return this.defaultPrivilegeEnumId;
-    }
-
     public String getDefaultSelectedStyle() {
         return this.defaultSelectedStyle;
     }
@@ -460,6 +440,10 @@ public class ModelMenu extends ModelWidg
         return this.orientation;
     }
 
+    public ModelMenu getParentMenu() {
+        return parentMenu;
+    }
+
     public FlexibleMapAccessor<String> getSelectedMenuItemContextFieldName() {
         return selectedMenuItemContextFieldName;
     }
@@ -518,7 +502,7 @@ public class ModelMenu extends ModelWidg
      */
     public void renderMenuString(Appendable writer, Map<String, Object> context, MenuStringRenderer menuStringRenderer)
             throws IOException {
-        ModelWidgetAction.runSubActions(this.actions, context);
+        AbstractModelAction.runSubActions(this.actions, context);
         if ("simple".equals(this.type)) {
             this.renderSimpleMenuString(writer, context, menuStringRenderer);
         } else {
@@ -547,6 +531,6 @@ public class ModelMenu extends ModelWidg
     }
 
     public void runActions(Map<String, Object> context) {
-        ModelWidgetAction.runSubActions(this.actions, context);
+        AbstractModelAction.runSubActions(this.actions, context);
     }
 }

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuAction.java Sat Jan 17 16:47:23 2015
@@ -39,7 +39,7 @@ import org.ofbiz.base.util.UtilXml;
 import org.ofbiz.base.util.collections.FlexibleMapAccessor;
 import org.ofbiz.base.util.string.FlexibleStringExpander;
 import org.ofbiz.widget.ModelActionVisitor;
-import org.ofbiz.widget.ModelWidgetAction;
+import org.ofbiz.widget.*;
 import org.w3c.dom.Element;
 
 /**
@@ -49,14 +49,14 @@ public abstract class ModelMenuAction {
 
     public static final String module = ModelMenuAction.class.getName();
 
-    public static List<ModelWidgetAction> readSubActions(ModelMenu modelMenu, Element parentElement) {
+    public static List<ModelAction> readSubActions(ModelMenu modelMenu, Element parentElement) {
         List<? extends Element> actionElementList = UtilXml.childElementList(parentElement);
-        List<ModelWidgetAction> actions = new ArrayList<ModelWidgetAction>(actionElementList.size());
+        List<ModelAction> actions = new ArrayList<ModelAction>(actionElementList.size());
         for (Element actionElement : actionElementList) {
             if ("set".equals(actionElement.getNodeName())) {
                 actions.add(new SetField(modelMenu, actionElement));
             } else {
-                actions.add(ModelWidgetAction.newInstance(modelMenu, actionElement));
+                actions.add(AbstractModelAction.newInstance(modelMenu, actionElement));
             }
         }
         return Collections.unmodifiableList(actions);
@@ -68,7 +68,7 @@ public abstract class ModelMenuAction {
      * @see <code>widget-common.xsd</code>
      */
     @SuppressWarnings("serial")
-    public static class SetField extends ModelWidgetAction {
+    public static class SetField extends AbstractModelAction {
         private final FlexibleMapAccessor<Object> field;
         private final FlexibleMapAccessor<Object> fromField;
         private final FlexibleStringExpander valueExdr;
@@ -192,9 +192,41 @@ public abstract class ModelMenuAction {
         }
 
         @Override
-        public void accept(ModelActionVisitor visitor) {
+        public void accept(ModelActionVisitor visitor) throws Exception {
             visitor.visit(this);
         }
+
+        public FlexibleMapAccessor<Object> getField() {
+            return field;
+        }
+
+        public FlexibleMapAccessor<Object> getFromField() {
+            return fromField;
+        }
+
+        public FlexibleStringExpander getValueExdr() {
+            return valueExdr;
+        }
+
+        public FlexibleStringExpander getDefaultExdr() {
+            return defaultExdr;
+        }
+
+        public FlexibleStringExpander getGlobalExdr() {
+            return globalExdr;
+        }
+
+        public String getType() {
+            return type;
+        }
+
+        public String getToScope() {
+            return toScope;
+        }
+
+        public String getFromScope() {
+            return fromScope;
+        }
     }
 }
 

Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java?rev=1652638&r1=1652637&r2=1652638&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/menu/ModelMenuCondition.java Sat Jan 17 16:47:23 2015
@@ -19,7 +19,8 @@
 package org.ofbiz.widget.menu;
 
 import org.ofbiz.base.util.string.FlexibleStringExpander;
-import org.ofbiz.widget.ModelWidgetCondition;
+import org.ofbiz.widget.AbstractModelCondition;
+import org.ofbiz.widget.ModelCondition;
 import org.w3c.dom.Element;
 
 /**
@@ -27,8 +28,7 @@ import org.w3c.dom.Element;
  * 
  * @see <code>widget-menu.xsd</code>
  */
-@SuppressWarnings("serial")
-public class ModelMenuCondition extends ModelWidgetCondition {
+public final class ModelMenuCondition {
 
     /*
      * ----------------------------------------------------------------------- *
@@ -48,11 +48,16 @@ public class ModelMenuCondition extends
 
     private final FlexibleStringExpander passStyleExdr;
     private final FlexibleStringExpander failStyleExdr;
+    private final ModelCondition condition;
 
     public ModelMenuCondition(ModelMenuItem modelMenuItem, Element conditionElement) {
-        super(ModelWidgetCondition.DEFAULT_CONDITION_FACTORY, modelMenuItem, conditionElement);
         this.passStyleExdr = FlexibleStringExpander.getInstance(conditionElement.getAttribute("pass-style"));
         this.failStyleExdr = FlexibleStringExpander.getInstance(conditionElement.getAttribute("disabled-style"));
+        this.condition = AbstractModelCondition.DEFAULT_CONDITION_FACTORY.newInstance(modelMenuItem, conditionElement);
+    }
+
+    public ModelCondition getCondition() {
+        return condition;
     }
 
     public FlexibleStringExpander getFailStyleExdr() {