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 44de7978 EMPIREDB-445 TagEncodingHelper: append cssStyleClasses from
tag and column metadata instead of overwriting
44de7978 is described below
commit 44de7978eac6dacfda314898eb4f3bdadf10496f
Author: Rainer Döbele <[email protected]>
AuthorDate: Mon Nov 4 15:23:57 2024 +0100
EMPIREDB-445
TagEncodingHelper: append cssStyleClasses from tag and column metadata
instead of overwriting
---
.../empire/jakarta/components/ControlTag.java | 2 ++
.../apache/empire/jakarta/components/ValueTag.java | 7 ++++---
.../empire/jakarta/utils/TagEncodingHelper.java | 22 ++++++++++++++--------
.../apache/empire/jsf2/components/ValueTag.java | 7 ++++---
.../empire/jsf2/utils/TagEncodingHelper.java | 22 ++++++++++++++--------
5 files changed, 38 insertions(+), 22 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 b754c54a..b6ba78bd 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
@@ -835,6 +835,8 @@ public class ControlTag extends UIInput implements
NamingContainer
setValue(null);
setLocalValueSet(false);
// Post update
+ if (getChildCount() <= 1)
+ return; // should never come here
ControlSeparatorComponent inputSepTag = (ControlSeparatorComponent)
getChildren().get(1);
this.control.postUpdateModel(inputSepTag, this.inpInfo, context);
}
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 77737469..bc57f501 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,12 +101,13 @@ 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.getTagAttributeString(InputControl.CSS_STYLE_CLASS);
- // Check
+ String styleClass =
helper.getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+
+ // Check whether tag is required
if (StringUtils.isNotEmpty(tagName) ||
StringUtils.isNotEmpty(styleClass) || StringUtils.isNotEmpty(tooltip))
{ // tagname
if (StringUtils.isEmpty(tagName))
- tagName="span";
+ tagName = InputControl.HTML_TAG_SPAN;
// Detect type and additional style
String addlStyle = null;
// get style
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 7f0f1f34..f84dc516 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
@@ -2017,20 +2017,25 @@ public class TagEncodingHelper implements
NamingContainer
boolean useControlTagOverride = (isCssStyleClass && (this.component
instanceof ControlTag) && isControlTagElementValid());
Object value = getTagAttributeValue((useControlTagOverride ?
"inputClass" : name));
- // Special append with leading '+' (for StyleClass only)
- boolean append = isCssStyleClass && (value instanceof String) &&
((String)value).length()>0 && ((String)value).charAt(0)=='+';
- if (append)
- value = ((String)value).substring(1); // remove leadng '+'
+ // Special "styleClass" append column attribute unless leading '-'
+ boolean append = false;
+ if (isCssStyleClass && (value instanceof String) &&
((String)value).length()>0)
+ { // if value starts with '!' then do not append but replace
+ if (((String)value).charAt(0)=='!')
+ value = ((String)value).substring(1); // remove leadng '!'
+ else if (((String)value).equals("-"))
+ return null; // omit, if value is '-'
+ else
+ append = true; // append (default)
+ }
- // Get column style
+ // Get column attribute
if ((value==null || append) && hasColumn())
{ // Check Column
Object colValue = column.getAttribute(name);
if (append)
{ // append styles
- if (ObjectUtils.isEmpty(value))
- value = colValue;
- else if (ObjectUtils.isNotEmpty(colValue))
+ if (ObjectUtils.isNotEmpty(colValue) &&
!colValue.equals(value))
value = StringUtils.concat(colValue.toString(), " ",
value.toString());
}
else
@@ -2038,6 +2043,7 @@ public class TagEncodingHelper implements NamingContainer
value = colValue;
}
}
+
// Checks whether it's another column
if (value instanceof Column)
{ // Special case: Value is a column
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 d924388a..f5262fb5 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,12 +101,13 @@ 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.getTagAttributeString(InputControl.CSS_STYLE_CLASS);
- // Check
+ String styleClass =
helper.getTagAttributeStringEx(InputControl.CSS_STYLE_CLASS);
+
+ // Check whether tag is required
if (StringUtils.isNotEmpty(tagName) ||
StringUtils.isNotEmpty(styleClass) || StringUtils.isNotEmpty(tooltip))
{ // tagname
if (StringUtils.isEmpty(tagName))
- tagName="span";
+ tagName = InputControl.HTML_TAG_SPAN;
// Detect type and additional style
String addlStyle = null;
// get style
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 9d2d6816..b8b7bcf5 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
@@ -2017,20 +2017,25 @@ public class TagEncodingHelper implements
NamingContainer
boolean useControlTagOverride = (isCssStyleClass && (this.component
instanceof ControlTag) && isControlTagElementValid());
Object value = getTagAttributeValue((useControlTagOverride ?
"inputClass" : name));
- // Special append with leading '+' (for StyleClass only)
- boolean append = isCssStyleClass && (value instanceof String) &&
((String)value).length()>0 && ((String)value).charAt(0)=='+';
- if (append)
- value = ((String)value).substring(1); // remove leadng '+'
+ // Special "styleClass" append column attribute unless leading '-'
+ boolean append = false;
+ if (isCssStyleClass && (value instanceof String) &&
((String)value).length()>0)
+ { // if value starts with '!' then do not append but replace
+ if (((String)value).charAt(0)=='!')
+ value = ((String)value).substring(1); // remove leadng '!'
+ else if (((String)value).equals("-"))
+ return null; // omit, if value is '-'
+ else
+ append = true; // append (default)
+ }
- // Get column style
+ // Get column attribute
if ((value==null || append) && hasColumn())
{ // Check Column
Object colValue = column.getAttribute(name);
if (append)
{ // append styles
- if (ObjectUtils.isEmpty(value))
- value = colValue;
- else if (ObjectUtils.isNotEmpty(colValue))
+ if (ObjectUtils.isNotEmpty(colValue) &&
!colValue.equals(value))
value = StringUtils.concat(colValue.toString(), " ",
value.toString());
}
else
@@ -2038,6 +2043,7 @@ public class TagEncodingHelper implements NamingContainer
value = colValue;
}
}
+
// Checks whether it's another column
if (value instanceof Column)
{ // Special case: Value is a column