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 a71d6c0 EMPIREDB-328 add a modified flag to input controls which have
been modified
a71d6c0 is described below
commit a71d6c0b35cfd66f2bd6d4f7d71405909aad4867
Author: Rainer Döbele <[email protected]>
AuthorDate: Fri Apr 3 11:11:56 2020 +0200
EMPIREDB-328
add a modified flag to input controls which have been modified
---
.../apache/empire/jsf2/components/SelectTag.java | 7 +++++
.../apache/empire/jsf2/controls/InputControl.java | 19 ++++++++++--
.../empire/jsf2/controls/SelectInputControl.java | 2 +-
.../empire/jsf2/controls/TextInputControl.java | 4 ++-
.../empire/jsf2/utils/TagEncodingHelper.java | 36 +++++++++++++++++++---
5 files changed, 60 insertions(+), 8 deletions(-)
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
index 36929ed..3c91b95 100644
---
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
+++
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/components/SelectTag.java
@@ -142,6 +142,13 @@ public class SelectTag extends UIInput implements
NamingContainer
}
@Override
+ public boolean isModified()
+ {
+ Object modified = SelectTag.this.getAttributes().get("modified");
+ return (modified!=null ? ObjectUtils.getBoolean(modified) : false);
+ }
+
+ @Override
public boolean isDisabled()
{
return SelectTag.this.isDisabled();
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
index ebb3eff..fddd02b 100644
---
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
+++
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/InputControl.java
@@ -78,7 +78,8 @@ public abstract class InputControl
public static String HTML_EXPR_NBSP = " ";
// style classes
- public static final String STYLECLASS_REQUIRED = "eInpReq";
+ public static final String STYLECLASS_REQUIRED = " eInpReq";
+ public static final String STYLECLASS_MODIFIED = " eInpModified";
public InputControl()
{
@@ -132,6 +133,8 @@ public abstract class InputControl
boolean isRequired();
+ boolean isModified();
+
boolean isDisabled(); // disabled or readOnly
boolean isFieldReadOnly(); // not disabled only readOnly (for
input[type=text] only!)
@@ -626,7 +629,19 @@ public abstract class InputControl
protected final void copyAttributes(UIComponent parent, InputInfo ii,
UIInput input)
{
- copyAttributes(parent, ii, input, (ii.isRequired() ?
STYLECLASS_REQUIRED : null));
+ String addlStyles = null;
+ if (ii.isRequired())
+ { // required
+ addlStyles = STYLECLASS_REQUIRED;
+ }
+ if (ii.isModified())
+ { // modified only
+ if (addlStyles==null)
+ addlStyles = STYLECLASS_MODIFIED;
+ else
+ addlStyles+= STYLECLASS_MODIFIED;
+ }
+ copyAttributes(parent, ii, input, addlStyles);
}
protected void copyAttribute(InputInfo ii, UIInput input, String name)
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
index c9021c3..99f96b6 100644
---
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
+++
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/SelectInputControl.java
@@ -105,7 +105,7 @@ public class SelectInputControl extends InputControl
}
HtmlSelectOneMenu input = (HtmlSelectOneMenu)comp;
// required
- addRemoveStyle(input, " " + InputControl.STYLECLASS_REQUIRED,
ii.isRequired());
+ addRemoveStyle(input, InputControl.STYLECLASS_REQUIRED,
ii.isRequired());
// disabled
boolean disabled = ii.isDisabled();
input.setDisabled(disabled);
diff --git
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
index 4556028..da7593b 100644
---
a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
+++
b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextInputControl.java
@@ -122,7 +122,9 @@ public class TextInputControl extends InputControl
}
HtmlInputText input = (HtmlInputText) comp;
// required
- addRemoveStyle(input, " " + InputControl.STYLECLASS_REQUIRED,
ii.isRequired());
+ addRemoveStyle(input, InputControl.STYLECLASS_REQUIRED,
ii.isRequired());
+ // modified
+ addRemoveStyle(input, InputControl.STYLECLASS_MODIFIED,
ii.isModified());
// disabled
Object dis = ii.getAttributeEx("disabled");
if (dis != 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 6920297..2a37a4c 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
@@ -78,6 +78,7 @@ import org.slf4j.LoggerFactory;
public class TagEncodingHelper implements NamingContainer
{
+ private final static String SPACE = " ";
/**
* ColumnExprWrapper
* wraps a ColumnExpr object into a Column interface object
@@ -332,6 +333,12 @@ public class TagEncodingHelper implements NamingContainer
}
@Override
+ public boolean isModified()
+ {
+ return isValueModified();
+ }
+
+ @Override
public boolean isDisabled()
{
// check attribute
@@ -882,6 +889,21 @@ public class TagEncodingHelper implements NamingContainer
// Required
return getColumn().isRequired();
}
+
+ public boolean isValueModified()
+ {
+ Object modified = getTagAttributeValue("modified");
+ if (modified!=null)
+ return ObjectUtils.getBoolean(modified);
+ // Check Record
+ if ((getRecord() instanceof Record))
+ { // Ask Record
+ Record r = (Record) record;
+ return r.wasModified(getColumn());
+ }
+ // not detectable
+ return false;
+ }
public boolean validateNullValue()
{
@@ -1523,7 +1545,7 @@ public class TagEncodingHelper implements NamingContainer
protected String completeLabelStyleClass(String styleClass, boolean
required)
{
- final String LABEL_REQ_STYLE = " "+InputControl.STYLECLASS_REQUIRED;
+ final String LABEL_REQ_STYLE = InputControl.STYLECLASS_REQUIRED;
boolean hasRequired = StringUtils.contains(styleClass,
LABEL_REQ_STYLE);
if (required==hasRequired)
@@ -1568,12 +1590,14 @@ public class TagEncodingHelper implements
NamingContainer
}
if (StringUtils.isNotEmpty(addlStyle))
{ // add additional style class
- b.append(" ");
+ if (!addlStyle.startsWith(SPACE))
+ b.append(SPACE);
b.append(addlStyle);
}
if (StringUtils.isNotEmpty(userStyle) &&
!StringUtils.compareEqual(userStyle, addlStyle, false))
{ // add user style class
- b.append(" ");
+ if (!userStyle.startsWith(SPACE))
+ b.append(SPACE);
b.append(userStyle);
}
return b.toString();
@@ -1653,7 +1677,11 @@ public class TagEncodingHelper implements NamingContainer
{
return addlStyle;
}
- return addlStyle + " " + contextStyle;
+ if (contextStyle.startsWith(SPACE))
+ {
+ return addlStyle + contextStyle;
+ }
+ return addlStyle + SPACE + contextStyle;
}
public boolean isInsideUIData()