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)