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 0d70258c EMPIREDB-449 ControlTag: allow extra label style classes
0d70258c is described below

commit 0d70258cd0e095037c8bb9a73e72c6c379e71750
Author: Rainer Döbele <[email protected]>
AuthorDate: Thu Nov 28 11:56:30 2024 +0100

    EMPIREDB-449
    ControlTag: allow extra label style classes
---
 .../empire/jakarta/components/ControlTag.java      |  9 +++---
 .../empire/jakarta/components/FormGridTag.java     |  2 +-
 .../apache/empire/jakarta/components/ValueTag.java |  2 +-
 .../empire/jakarta/utils/ControlRenderInfo.java    |  4 +--
 .../empire/jakarta/utils/TagEncodingHelper.java    | 37 +++++++++++++---------
 .../apache/empire/jsf2/components/ControlTag.java  |  9 +++---
 .../apache/empire/jsf2/components/FormGridTag.java |  2 +-
 .../apache/empire/jsf2/components/ValueTag.java    |  2 +-
 .../empire/jsf2/utils/ControlRenderInfo.java       |  4 +--
 .../empire/jsf2/utils/TagEncodingHelper.java       | 37 +++++++++++++---------
 10 files changed, 62 insertions(+), 46 deletions(-)

diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
index b89d8357..da4942ff 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ControlTag.java
@@ -393,7 +393,7 @@ public class ControlTag extends UIInput implements 
NamingContainer
             // render id
             helper.writeComponentId(writer, false);
             // style class
-            String controlClass = 
helper.getTagAttributeStringEx("controlClass");
+            String controlClass = 
helper.getTagAttributeStringEx("controlClass", true);
             String styleClass   = 
helper.getTagAttributeString(InputControl.CSS_STYLE_CLASS);
             String contextClass = helper.getContextStyleClass(); 
             helper.writeStyleClass(writer, TagStyleClass.CONTROL.get(), 
controlClass, styleClass, contextClass);
@@ -485,10 +485,10 @@ public class ControlTag extends UIInput implements 
NamingContainer
                 writer = context.getResponseWriter();
                 writer.startElement(tagName, this);
                 // style Class
-                String inpClass = helper.getTagAttributeStringEx("inputClass");
+                String inpClass = helper.getTagAttributeStringEx("inputClass", 
true);
                 helper.writeStyleClass(writer, 
TagStyleClass.CONTROL_INPUT.get(), inpClass);
                 // write more
-                String colSpan = 
tagName.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeStringEx("colspan") : null;
+                String colSpan = 
tagName.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeStringEx("colspan", false) : null;
                 if (colSpan!=null)
                     writer.writeAttribute("colspan", colSpan, null);
             }
@@ -548,7 +548,8 @@ public class ControlTag extends UIInput implements 
NamingContainer
                 {   // Create components
                     String forInput = (customInput ? 
helper.getTagAttributeString("for") : "*");
                     // createLabelComponent 
-                    labelComponent = helper.createLabelComponent(context, 
forInput, "eLabel", null, getColon());
+                    String styleClass = TagStyleClass.LABEL.get();
+                    labelComponent = helper.createLabelComponent(context, 
forInput, styleClass, null, getColon());
                     parent.getChildren().add(0, labelComponent);
                     helper.resetComponentId(labelComponent);
                 }
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
index 1e2bd1ce..4e61c233 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/FormGridTag.java
@@ -121,7 +121,7 @@ public class FormGridTag extends UIOutput // implements 
NamingContainer
                 if (CONTROL_TAG!=null && 
TagEncodingHelper.hasComponentId(controlTag))
                     writer.writeAttribute(InputControl.HTML_ATTR_ID, 
controlTag.getClientId(), null);
                 // Style class
-                String controlClass = 
controlTag.helper.getTagAttributeStringEx("controlClass");
+                String controlClass = 
controlTag.helper.getTagAttributeStringEx("controlClass", true);
                 String styleClass   = 
controlTag.helper.getTagAttributeString(InputControl.CSS_STYLE_CLASS);
                 controlTag.helper.writeStyleClass(writer, 
TagStyleClass.CONTROL_PLACEHOLDER.get(), controlClass, styleClass);
                 // Legacy two <td>
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ValueTag.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ValueTag.java
index bc57f501..59e47194 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ValueTag.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/components/ValueTag.java
@@ -101,7 +101,7 @@ public class ValueTag extends UIOutput // implements 
NamingContainer
         // Map<String, Object> map = getAttributes();
         String tagName = helper.getTagAttributeString("tag");
         String tooltip = 
helper.getValueTooltip(helper.getTagAttributeValue("title"));
-        String styleClass = 
helper.getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+        String styleClass = 
helper.getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true);
 
         // Check whether tag is required
         if (StringUtils.isNotEmpty(tagName) || 
StringUtils.isNotEmpty(styleClass) || StringUtils.isNotEmpty(tooltip))
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/ControlRenderInfo.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/ControlRenderInfo.java
index 1c01c5e2..d254d458 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/ControlRenderInfo.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/ControlRenderInfo.java
@@ -128,14 +128,14 @@ public class ControlRenderInfo
         throws IOException
     {
         // wrapper Class
-        String wrapperClass = helper.getTagAttributeStringEx("wrapperClass"); 
+        String wrapperClass = helper.getTagAttributeStringEx("wrapperClass", 
true); 
         if (wrapperClass!=null && wrapperClass.equals("-"))
             wrapperClass= null;
         // extra
         String extraStyleClass = helper.getControlExtraInputWrapperStyle();
         helper.writeStyleClass(writer, TagStyleClass.CONTROL_INPUT.get(), 
wrapperClass, extraStyleClass);
         // colspan for <td>
-        String colSpan = 
InputControl.HTML_TAG_TD.equalsIgnoreCase(INPUT_WRAPPER_TAG) ? 
helper.getTagAttributeStringEx("colspan") : null;            
+        String colSpan = 
InputControl.HTML_TAG_TD.equalsIgnoreCase(INPUT_WRAPPER_TAG) ? 
helper.getTagAttributeStringEx("colspan", false) : null;            
         if (colSpan!=null)
             writer.writeAttribute("colspan", colSpan, null);
     }
diff --git 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
index cfb65ae8..7c18f766 100644
--- 
a/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
+++ 
b/empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/utils/TagEncodingHelper.java
@@ -421,7 +421,7 @@ public class TagEncodingHelper implements NamingContainer
         @Override
         public Object getAttributeEx(String name)
         {
-            return getTagAttributeValueEx(name);
+            return getTagAttributeValueEx(name, 
InputControl.CSS_STYLE_CLASS.equals(name));
         }
     }
 
@@ -548,6 +548,9 @@ public class TagEncodingHelper implements NamingContainer
     
     public InputControl getInputControl()
     {
+        // Already detected?
+        if (this.control!=null)
+            return this.control; 
         // Create
         if (getColumn() == null)
                throw new NotSupportedException(this, "getInputControl");
@@ -1053,7 +1056,7 @@ public class TagEncodingHelper implements NamingContainer
             return DisabledType.READONLY;
         }
         // Check attribute
-        Object dis = getTagAttributeValueEx("disabled");
+        Object dis = getTagAttributeValueEx("disabled", false);
         if (ObjectUtils.isEmpty(dis))
             return null; // not provided!
         // direct
@@ -1572,7 +1575,7 @@ public class TagEncodingHelper implements NamingContainer
         if (!ControlRenderInfo.isRenderExtraWrapperStyles())
             return null;
         // style Class
-        String labelClass = getTagAttributeStringEx("labelClass");
+        String labelClass = getTagAttributeStringEx("labelClass", true);
         return labelClass;
     }
     
@@ -1581,7 +1584,7 @@ public class TagEncodingHelper implements NamingContainer
         if (!ControlRenderInfo.isRenderExtraWrapperStyles())
             return null;
         // input Wrapper Class
-        String inputClass = (isControlTagElementValid() ? 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS) : 
getTagAttributeString("inputClass")); 
+        String inputClass = (isControlTagElementValid() ? 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true) : 
getTagAttributeString("inputClass")); 
         // append input state
         if (isRenderValueComponent())
             inputClass = (inputClass!=null ? StringUtils.concat(inputClass, " 
", TagStyleClass.INPUT_DIS.get()) : TagStyleClass.INPUT_DIS.get());
@@ -1654,7 +1657,7 @@ public class TagEncodingHelper implements NamingContainer
             {   // for LabelTag
                 forInput = this.getColumnName();
                 // readOnly
-                Object val = getTagAttributeValueEx("readOnly");
+                Object val = getTagAttributeValueEx("readOnly", false);
                 if (val!=null)
                     this.readOnly = (ObjectUtils.getBoolean(val) ? (byte)1 : 
(byte)0);
             }
@@ -1671,11 +1674,16 @@ public class TagEncodingHelper implements 
NamingContainer
             label.setValue(labelText);
 
         // set styleClass
+        String labelClass = null;
+        if (!ControlRenderInfo.isRenderExtraWrapperStyles())
+            labelClass = getTagAttributeStringEx("labelClass", true);
+        if (labelClass!=null)
+            styleClass = assembleStyleClassString(styleClass, labelClass);
         if (StringUtils.isNotEmpty(styleClass))
             label.setStyleClass(completeLabelStyleClass(styleClass, 
isValueRequired()));
         
         // for 
-        if (StringUtils.isNotEmpty(forInput)) // && !isReadOnly())
+        if (StringUtils.isNotEmpty(forInput) && !isReadOnly())
         {   // Set Label input Id
             InputControl.InputInfo ii = getInputInfo(context);
             String inputId = getInputControl().getLabelForId(ii);
@@ -1725,7 +1733,7 @@ public class TagEncodingHelper implements NamingContainer
             }
             else if (component instanceof LabelTag)
             {   // update readOnly
-                Object val = getTagAttributeValueEx("readOnly");
+                Object val = getTagAttributeValueEx("readOnly", false);
                 if (val!=null)
                     this.readOnly = (ObjectUtils.getBoolean(val) ? (byte)1 : 
(byte)0);
             }
@@ -1867,7 +1875,7 @@ public class TagEncodingHelper implements NamingContainer
 
     public String getTagStyleClass(String typeClass, String addlStyle)
     {
-        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true);
         return getTagStyleClass(typeClass, addlStyle, userStyle);
     }
 
@@ -2014,13 +2022,12 @@ public class TagEncodingHelper implements 
NamingContainer
         return getTagAttributeString(name, null);
     }
 
-    public Object getTagAttributeValueEx(String name)
+    public Object getTagAttributeValueEx(String name, boolean isCssStyleClass)
     {
         /* 
          * Special handling of ControlTag "styleClass": Use it for control 
element only not for input element(s)
          */
-        boolean isCssStyleClass = InputControl.CSS_STYLE_CLASS.equals(name);
-        boolean useControlTagOverride = (isCssStyleClass && (this.component 
instanceof ControlTag) && isControlTagElementValid());
+        boolean useControlTagOverride = 
(InputControl.CSS_STYLE_CLASS.equals(name) && (this.component instanceof 
ControlTag) && isControlTagElementValid());
         Object value = getTagAttributeValue((useControlTagOverride ? 
"inputClass" : name));
 
         // Special "styleClass" append column attribute unless leading '-'
@@ -2075,9 +2082,9 @@ public class TagEncodingHelper implements NamingContainer
         return value;
     }
 
-    public String getTagAttributeStringEx(String name)
+    public String getTagAttributeStringEx(String name, boolean isCssStyleClass)
     {
-        Object value = getTagAttributeValueEx(name);
+        Object value = getTagAttributeValueEx(name, isCssStyleClass);
         return (value!=null) ? StringUtils.nullIfEmpty(value) : null;
     }
     
@@ -2127,7 +2134,7 @@ public class TagEncodingHelper implements NamingContainer
     public void writeStyleClass(ResponseWriter writer)
         throws IOException
     {
-        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true);
         writeStyleClass(writer, this.cssStyleClass, userStyle);
     }
     
@@ -2143,7 +2150,7 @@ public class TagEncodingHelper implements NamingContainer
     public String writeWrapperTag(FacesContext context, boolean renderId, 
boolean renderValue)
         throws IOException
     {
-        String wrapperClass = getTagAttributeStringEx("wrapperClass"); 
+        String wrapperClass = getTagAttributeStringEx("wrapperClass", true); 
         if (wrapperClass==null || wrapperClass.equals("-"))
             return null;
         // start element
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 eb35512a..d801c6f9 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
@@ -393,7 +393,7 @@ public class ControlTag extends UIInput implements 
NamingContainer
             // render id
             helper.writeComponentId(writer, false);
             // style class
-            String controlClass = 
helper.getTagAttributeStringEx("controlClass");
+            String controlClass = 
helper.getTagAttributeStringEx("controlClass", true);
             String styleClass   = 
helper.getTagAttributeString(InputControl.CSS_STYLE_CLASS);
             String contextClass = helper.getContextStyleClass(); 
             helper.writeStyleClass(writer, TagStyleClass.CONTROL.get(), 
controlClass, styleClass, contextClass);
@@ -485,10 +485,10 @@ public class ControlTag extends UIInput implements 
NamingContainer
                 writer = context.getResponseWriter();
                 writer.startElement(tagName, this);
                 // style Class
-                String inpClass = helper.getTagAttributeStringEx("inputClass");
+                String inpClass = helper.getTagAttributeStringEx("inputClass", 
true);
                 helper.writeStyleClass(writer, 
TagStyleClass.CONTROL_INPUT.get(), inpClass);
                 // write more
-                String colSpan = 
tagName.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeStringEx("colspan") : null;
+                String colSpan = 
tagName.equalsIgnoreCase(InputControl.HTML_TAG_TD) ? 
helper.getTagAttributeStringEx("colspan", false) : null;
                 if (colSpan!=null)
                     writer.writeAttribute("colspan", colSpan, null);
             }
@@ -548,7 +548,8 @@ public class ControlTag extends UIInput implements 
NamingContainer
                 {   // Create components
                     String forInput = (customInput ? 
helper.getTagAttributeString("for") : "*");
                     // createLabelComponent 
-                    labelComponent = helper.createLabelComponent(context, 
forInput, "eLabel", null, getColon());
+                    String styleClass = TagStyleClass.LABEL.get();
+                    labelComponent = helper.createLabelComponent(context, 
forInput, styleClass, null, getColon());
                     parent.getChildren().add(0, labelComponent);
                     helper.resetComponentId(labelComponent);
                 }
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 74954fa7..4155b6be 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
@@ -121,7 +121,7 @@ public class FormGridTag extends UIOutput // implements 
NamingContainer
                 if (CONTROL_TAG!=null && 
TagEncodingHelper.hasComponentId(controlTag))
                     writer.writeAttribute(InputControl.HTML_ATTR_ID, 
controlTag.getClientId(), null);
                 // Style class
-                String controlClass = 
controlTag.helper.getTagAttributeStringEx("controlClass");
+                String controlClass = 
controlTag.helper.getTagAttributeStringEx("controlClass", true);
                 String styleClass   = 
controlTag.helper.getTagAttributeString(InputControl.CSS_STYLE_CLASS);
                 controlTag.helper.writeStyleClass(writer, 
TagStyleClass.CONTROL_PLACEHOLDER.get(), controlClass, styleClass);
                 // Legacy two <td>
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java
index f5262fb5..d76c6406 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/ValueTag.java
@@ -101,7 +101,7 @@ public class ValueTag extends UIOutput // implements 
NamingContainer
         // Map<String, Object> map = getAttributes();
         String tagName = helper.getTagAttributeString("tag");
         String tooltip = 
helper.getValueTooltip(helper.getTagAttributeValue("title"));
-        String styleClass = 
helper.getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+        String styleClass = 
helper.getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true);
 
         // Check whether tag is required
         if (StringUtils.isNotEmpty(tagName) || 
StringUtils.isNotEmpty(styleClass) || StringUtils.isNotEmpty(tooltip))
diff --git 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
index 20bf7f9e..641369d8 100644
--- 
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
+++ 
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/utils/ControlRenderInfo.java
@@ -128,14 +128,14 @@ public class ControlRenderInfo
         throws IOException
     {
         // wrapper Class
-        String wrapperClass = helper.getTagAttributeStringEx("wrapperClass"); 
+        String wrapperClass = helper.getTagAttributeStringEx("wrapperClass", 
true); 
         if (wrapperClass!=null && wrapperClass.equals("-"))
             wrapperClass= null;
         // extra
         String extraStyleClass = helper.getControlExtraInputWrapperStyle();
         helper.writeStyleClass(writer, TagStyleClass.CONTROL_INPUT.get(), 
wrapperClass, extraStyleClass);
         // colspan for <td>
-        String colSpan = 
InputControl.HTML_TAG_TD.equalsIgnoreCase(INPUT_WRAPPER_TAG) ? 
helper.getTagAttributeStringEx("colspan") : null;            
+        String colSpan = 
InputControl.HTML_TAG_TD.equalsIgnoreCase(INPUT_WRAPPER_TAG) ? 
helper.getTagAttributeStringEx("colspan", false) : null;            
         if (colSpan!=null)
             writer.writeAttribute("colspan", colSpan, null);
     }
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 2a8cbcfb..4e33739a 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
@@ -421,7 +421,7 @@ public class TagEncodingHelper implements NamingContainer
         @Override
         public Object getAttributeEx(String name)
         {
-            return getTagAttributeValueEx(name);
+            return getTagAttributeValueEx(name, 
InputControl.CSS_STYLE_CLASS.equals(name));
         }
     }
 
@@ -548,6 +548,9 @@ public class TagEncodingHelper implements NamingContainer
     
     public InputControl getInputControl()
     {
+        // Already detected?
+        if (this.control!=null)
+            return this.control; 
         // Create
         if (getColumn() == null)
                throw new NotSupportedException(this, "getInputControl");
@@ -1053,7 +1056,7 @@ public class TagEncodingHelper implements NamingContainer
             return DisabledType.READONLY;
         }
         // Check attribute
-        Object dis = getTagAttributeValueEx("disabled");
+        Object dis = getTagAttributeValueEx("disabled", false);
         if (ObjectUtils.isEmpty(dis))
             return null; // not provided!
         // direct
@@ -1572,7 +1575,7 @@ public class TagEncodingHelper implements NamingContainer
         if (!ControlRenderInfo.isRenderExtraWrapperStyles())
             return null;
         // style Class
-        String labelClass = getTagAttributeStringEx("labelClass");
+        String labelClass = getTagAttributeStringEx("labelClass", true);
         return labelClass;
     }
     
@@ -1581,7 +1584,7 @@ public class TagEncodingHelper implements NamingContainer
         if (!ControlRenderInfo.isRenderExtraWrapperStyles())
             return null;
         // input Wrapper Class
-        String inputClass = (isControlTagElementValid() ? 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS) : 
getTagAttributeString("inputClass")); 
+        String inputClass = (isControlTagElementValid() ? 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true) : 
getTagAttributeString("inputClass")); 
         // append input state
         if (isRenderValueComponent())
             inputClass = (inputClass!=null ? StringUtils.concat(inputClass, " 
", TagStyleClass.INPUT_DIS.get()) : TagStyleClass.INPUT_DIS.get());
@@ -1654,7 +1657,7 @@ public class TagEncodingHelper implements NamingContainer
             {   // for LabelTag
                 forInput = this.getColumnName();
                 // readOnly
-                Object val = getTagAttributeValueEx("readOnly");
+                Object val = getTagAttributeValueEx("readOnly", false);
                 if (val!=null)
                     this.readOnly = (ObjectUtils.getBoolean(val) ? (byte)1 : 
(byte)0);
             }
@@ -1671,11 +1674,16 @@ public class TagEncodingHelper implements 
NamingContainer
             label.setValue(labelText);
 
         // set styleClass
+        String labelClass = null;
+        if (!ControlRenderInfo.isRenderExtraWrapperStyles())
+            labelClass = getTagAttributeStringEx("labelClass", true);
+        if (labelClass!=null)
+            styleClass = assembleStyleClassString(styleClass, labelClass);
         if (StringUtils.isNotEmpty(styleClass))
             label.setStyleClass(completeLabelStyleClass(styleClass, 
isValueRequired()));
         
         // for 
-        if (StringUtils.isNotEmpty(forInput)) // && !isReadOnly())
+        if (StringUtils.isNotEmpty(forInput) && !isReadOnly())
         {   // Set Label input Id
             InputControl.InputInfo ii = getInputInfo(context);
             String inputId = getInputControl().getLabelForId(ii);
@@ -1725,7 +1733,7 @@ public class TagEncodingHelper implements NamingContainer
             }
             else if (component instanceof LabelTag)
             {   // update readOnly
-                Object val = getTagAttributeValueEx("readOnly");
+                Object val = getTagAttributeValueEx("readOnly", false);
                 if (val!=null)
                     this.readOnly = (ObjectUtils.getBoolean(val) ? (byte)1 : 
(byte)0);
             }
@@ -1867,7 +1875,7 @@ public class TagEncodingHelper implements NamingContainer
 
     public String getTagStyleClass(String typeClass, String addlStyle)
     {
-        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true);
         return getTagStyleClass(typeClass, addlStyle, userStyle);
     }
 
@@ -2014,13 +2022,12 @@ public class TagEncodingHelper implements 
NamingContainer
         return getTagAttributeString(name, null);
     }
 
-    public Object getTagAttributeValueEx(String name)
+    public Object getTagAttributeValueEx(String name, boolean isCssStyleClass)
     {
         /* 
          * Special handling of ControlTag "styleClass": Use it for control 
element only not for input element(s)
          */
-        boolean isCssStyleClass = InputControl.CSS_STYLE_CLASS.equals(name);
-        boolean useControlTagOverride = (isCssStyleClass && (this.component 
instanceof ControlTag) && isControlTagElementValid());
+        boolean useControlTagOverride = 
(InputControl.CSS_STYLE_CLASS.equals(name) && (this.component instanceof 
ControlTag) && isControlTagElementValid());
         Object value = getTagAttributeValue((useControlTagOverride ? 
"inputClass" : name));
 
         // Special "styleClass" append column attribute unless leading '-'
@@ -2075,9 +2082,9 @@ public class TagEncodingHelper implements NamingContainer
         return value;
     }
 
-    public String getTagAttributeStringEx(String name)
+    public String getTagAttributeStringEx(String name, boolean isCssStyleClass)
     {
-        Object value = getTagAttributeValueEx(name);
+        Object value = getTagAttributeValueEx(name, isCssStyleClass);
         return (value!=null) ? StringUtils.nullIfEmpty(value) : null;
     }
     
@@ -2127,7 +2134,7 @@ public class TagEncodingHelper implements NamingContainer
     public void writeStyleClass(ResponseWriter writer)
         throws IOException
     {
-        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+        String userStyle = 
getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS, true);
         writeStyleClass(writer, this.cssStyleClass, userStyle);
     }
     
@@ -2143,7 +2150,7 @@ public class TagEncodingHelper implements NamingContainer
     public String writeWrapperTag(FacesContext context, boolean renderId, 
boolean renderValue)
         throws IOException
     {
-        String wrapperClass = getTagAttributeStringEx("wrapperClass"); 
+        String wrapperClass = getTagAttributeStringEx("wrapperClass", true); 
         if (wrapperClass==null || wrapperClass.equals("-"))
             return null;
         // start element

Reply via email to