This is an automated email from the ASF dual-hosted git repository.

doebele pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/empire-db.git


The following commit(s) were added to refs/heads/master by this push:
     new f6f9bcbc EMPIREDB-404 ControlTag allow label facet and support Iinput 
wrapper tags
f6f9bcbc is described below

commit f6f9bcbc521d7dcf88b13d40428569d6a51f892b
Author: Rainer Döbele <[email protected]>
AuthorDate: Tue Mar 21 20:13:58 2023 +0100

    EMPIREDB-404
    ControlTag allow label facet and support Iinput wrapper tags
---
 .../apache/empire/jsf2/components/ControlTag.java  | 79 ++++++++++++++--------
 .../apache/empire/jsf2/components/FormGridTag.java |  5 +-
 .../apache/empire/jsf2/components/InputTag.java    | 18 +++++
 .../empire/jsf2/utils/TagEncodingHelper.java       |  2 +-
 4 files changed, 72 insertions(+), 32 deletions(-)

diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
index d5deae4b..e7ea9f51 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ControlTag.java
@@ -34,7 +34,6 @@ import javax.faces.context.ResponseWriter;
 import javax.faces.convert.ConverterException;
 
 import org.apache.empire.commons.ObjectUtils;
-import org.apache.empire.commons.StringUtils;
 import org.apache.empire.data.Column;
 import org.apache.empire.db.exceptions.FieldIllegalValueException;
 import org.apache.empire.exceptions.EmpireException;
@@ -136,7 +135,7 @@ public class ControlTag extends UIInput implements 
NamingContainer
             throws IOException
         {
             // style Class
-            String labelClass = helper.getTagAttributeString("labelClass");
+            String labelClass = helper.getTagAttributeStringEx("labelClass");
             helper.writeStyleClass(writer, ControlTag.LABEL_SEPARATOR_CLASS, 
labelClass);
         }
 
@@ -164,11 +163,11 @@ public class ControlTag extends UIInput implements 
NamingContainer
             throws IOException
         {
             // style Class
-            String inputClass = helper.getTagAttributeString("inputClass");
+            String inputClass = helper.getTagAttributeStringEx("inputClass");
             helper.writeStyleClass(writer, ControlTag.INPUT_SEPARATOR_CLASS, 
inputClass);
             // colspan
-            String colSpan = helper.getTagAttributeString("colspan");
-            if (StringUtils.isNotEmpty(colSpan) && 
tagName.equalsIgnoreCase("td"))
+            String colSpan = 
tagName.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeStringEx("colspan") : null;            
+            if (colSpan!=null)
                 writer.writeAttribute("colspan", colSpan, null);
         }
 
@@ -334,7 +333,7 @@ public class ControlTag extends UIInput implements 
NamingContainer
             // render id
             helper.writeComponentId(writer, renderInfo.RENDER_AUTO_ID);
             // style class
-            String controlClass = 
helper.getTagAttributeString("controlClass"); 
+            String controlClass = 
helper.getTagAttributeStringEx("controlClass"); 
             String styleClass   = helper.getControlContextStyleClass(); 
             helper.writeStyleClass(writer, CONTROL_CLASS, controlClass, 
styleClass);
         }
@@ -401,11 +400,11 @@ public class ControlTag extends UIInput implements 
NamingContainer
                 writer = context.getResponseWriter();
                 writer.startElement(tagName, this);
                 // style Class
-                String inpClass = helper.getTagAttributeString("inputClass");
+                String inpClass = helper.getTagAttributeStringEx("inputClass");
                 helper.writeStyleClass(writer, 
ControlTag.INPUT_SEPARATOR_CLASS, inpClass);
                 // write more
-                String colSpan = 
tagName.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeString("colspan") : null;
-                if (StringUtils.isNotEmpty(colSpan))
+                String colSpan = 
tagName.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeStringEx("colspan") : null;
+                if (colSpan!=null)
                     writer.writeAttribute("colspan", colSpan, null);
             }
             // encode children
@@ -473,27 +472,35 @@ public class ControlTag extends UIInput implements 
NamingContainer
      * @param parent the LabelSeparatorComponent
      */
     protected void encodeLabel(FacesContext context, UIComponentBase parent)
+        throws IOException
     {
-        // render components
-        try {
-            creatingComponents = true;
-            HtmlOutputLabel labelComponent = null;
-            if (parent.getChildCount() > 0)
-            {
-                labelComponent = (HtmlOutputLabel) parent.getChildren().get(0);
-                // update
-                helper.updateLabelComponent(context, labelComponent, null);
-            }
-            if (labelComponent == null)
-            {
-                String forInput = isCustomInput() ? 
helper.getTagAttributeString("for") : "*";
-                // createLabelComponent 
-                labelComponent = helper.createLabelComponent(context, 
forInput, "eLabel", null, getColon());
-                parent.getChildren().add(0, labelComponent);
-                helper.resetComponentId(labelComponent);
+        UIComponent labelFacet = getFacet("label");
+        if (labelFacet!=null)
+        {   // label facet
+            labelFacet.encodeAll(context);
+        }
+        else
+        {   // render components
+            try {
+                creatingComponents = true;
+                HtmlOutputLabel labelComponent = null;
+                if (parent.getChildCount() > 0)
+                {
+                    labelComponent = (HtmlOutputLabel) 
parent.getChildren().get(0);
+                    // update
+                    helper.updateLabelComponent(context, labelComponent, null);
+                }
+                if (labelComponent == null)
+                {
+                    String forInput = isCustomInput() ? 
helper.getTagAttributeString("for") : "*";
+                    // createLabelComponent 
+                    labelComponent = helper.createLabelComponent(context, 
forInput, "eLabel", null, getColon());
+                    parent.getChildren().add(0, labelComponent);
+                    helper.resetComponentId(labelComponent);
+                }
+            } finally {
+                creatingComponents = false;
             }
-        } finally {
-            creatingComponents = false;
         }
     }
 
@@ -545,9 +552,23 @@ public class ControlTag extends UIInput implements 
NamingContainer
                 boolean valueOutput = (child instanceof ValueOutputComponent);
                 child.setRendered((valueOutput ? renderValue : !renderValue));
             }
+            // wrapperTag
+            String wrapperClass = 
helper.getTagAttributeStringEx("wrapperClass"); 
+            if (wrapperClass!=null)
+            {   // control wrapper tag
+                ResponseWriter writer = context.getResponseWriter();
+                writer.startElement(InputControl.HTML_TAG_DIV, this);
+                // style class
+                helper.writeStyleClass(writer, wrapperClass);
+            }
             // render
             control.renderInput(parent, inpInfo, context);
-            // render
+            // wrapperTagEnd
+            if (wrapperClass!=null)
+            {   // control wrapper tag
+                ResponseWriter writer = context.getResponseWriter();
+                writer.endElement(InputControl.HTML_TAG_DIV);
+            }
         } finally {
             creatingComponents = false;
         }
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
index e7f8236f..96f47f97 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/FormGridTag.java
@@ -46,7 +46,8 @@ public class FormGridTag extends UIOutput implements 
NamingContainer
     {
         LEGACY(InputControl.HTML_TAG_DIV, null, InputControl.HTML_TAG_TD, 
InputControl.HTML_TAG_TD),
         TABLE (InputControl.HTML_TAG_TABLE, InputControl.HTML_TAG_TR, 
InputControl.HTML_TAG_TD, InputControl.HTML_TAG_TD),
-        GRID  (InputControl.HTML_TAG_DIV, InputControl.HTML_TAG_DIV, 
InputControl.HTML_TAG_DIV, InputControl.HTML_TAG_DIV);
+        GRID  (InputControl.HTML_TAG_DIV, InputControl.HTML_TAG_DIV, 
InputControl.HTML_TAG_DIV, InputControl.HTML_TAG_DIV),
+        FLAT  (InputControl.HTML_TAG_DIV, InputControl.HTML_TAG_DIV, null, 
null);
         
         public final String GRID_TAG;
         public final String DEFAULT_CONTROL_TAG;
@@ -147,7 +148,7 @@ public class FormGridTag extends UIOutput implements 
NamingContainer
         if (controlRenderInfo!=null)
             return controlRenderInfo;
         // check mode
-        FormGridMode mode = 
FormGridMode.detect(helper.getTagAttributeString("mode")); 
+        FormGridMode mode = 
FormGridMode.detect(helper.getTagAttributeString("mode", 
FormGridMode.GRID.name())); 
         // override?
         String controlTag = helper.getTagAttributeString("controlTag", 
mode.DEFAULT_CONTROL_TAG);
         String labelTag   = helper.getTagAttributeString("labelTag",   
mode.DEFAULT_LABEL_TAG);
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
index 6a8309f9..ca29c3e9 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/InputTag.java
@@ -27,6 +27,7 @@ import javax.faces.component.UIInput;
 import javax.faces.component.visit.VisitCallback;
 import javax.faces.component.visit.VisitContext;
 import javax.faces.context.FacesContext;
+import javax.faces.context.ResponseWriter;
 import javax.faces.convert.ConverterException;
 import javax.faces.view.AttachedObjectHandler;
 
@@ -187,6 +188,17 @@ public class InputTag extends UIInput implements 
NamingContainer
         boolean renderValue = helper.isRenderValueComponent();
         setRenderInput(!renderValue);
 
+        // wrapperTag
+        String wrapperClass = helper.getTagAttributeStringEx("wrapperClass"); 
+        if (wrapperClass!=null)
+        {   // control wrapper tag
+            ResponseWriter writer = context.getResponseWriter();
+            writer.startElement(InputControl.HTML_TAG_DIV, this);
+            // render id
+            helper.writeComponentId(writer, false);
+            // style class
+            helper.writeStyleClass(writer, wrapperClass);
+        }
         // render components
         if (renderValue)
         {   // render value
@@ -199,6 +211,12 @@ public class InputTag extends UIInput implements 
NamingContainer
         {   // render input
             control.renderInput(this, inpInfo, context);
         }
+        // wrapperTagEnd
+        if (wrapperClass!=null)
+        {   // control wrapper tag
+            ResponseWriter writer = context.getResponseWriter();
+            writer.endElement(InputControl.HTML_TAG_DIV);
+        }
         saveState();
     }
 
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
index efc111e4..c2989765 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/TagEncodingHelper.java
@@ -1393,7 +1393,7 @@ public class TagEncodingHelper implements NamingContainer
     public String getTagAttributeStringEx(String name)
     {
         Object value = getAttributeValueEx(name);
-        return (value!=null) ? StringUtils.toString(value) : null;
+        return (value!=null) ? StringUtils.nullIfEmpty(value) : null;
     }
     
     public Object getTagAttributeValue(String name)

Reply via email to