You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@empire-db.apache.org by do...@apache.org on 2021/04/29 08:25:27 UTC
[empire-db] branch master updated: EMPIREDB-348 Rework disabled /
readonly
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 ec9994b EMPIREDB-348 Rework disabled / readonly
ec9994b is described below
commit ec9994b68b4ccfa44b63ccbf8e646ef71608a4f6
Author: Rainer Döbele <do...@apache.org>
AuthorDate: Thu Apr 29 10:25:23 2021 +0200
EMPIREDB-348
Rework disabled / readonly
---
.../apache/empire/jsf2/components/SelectTag.java | 5 +-
.../empire/jsf2/controls/CheckboxInputControl.java | 16 ++-----
.../apache/empire/jsf2/controls/InputControl.java | 13 ++++-
.../empire/jsf2/controls/RadioInputControl.java | 5 +-
.../empire/jsf2/controls/SelectInputControl.java | 6 +--
.../empire/jsf2/controls/TextAreaInputControl.java | 14 +++---
.../empire/jsf2/controls/TextInputControl.java | 16 +++----
.../empire/jsf2/utils/TagEncodingHelper.java | 56 ++++++++++++++--------
8 files changed, 75 insertions(+), 56 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 575fb00..412e5d6 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
@@ -40,6 +40,7 @@ import org.apache.empire.jsf2.app.FacesUtils;
import org.apache.empire.jsf2.app.TextResolver;
import org.apache.empire.jsf2.controls.InputAttachedObjectsHandler;
import org.apache.empire.jsf2.controls.InputControl;
+import org.apache.empire.jsf2.controls.InputControl.DisabledType;
import org.apache.empire.jsf2.controls.InputControl.InputInfo;
import org.apache.empire.jsf2.controls.InputControlManager;
import org.apache.empire.jsf2.controls.SelectInputControl;
@@ -155,9 +156,9 @@ public class SelectTag extends UIInput implements NamingContainer
}
@Override
- public boolean isFieldReadOnly()
+ public DisabledType getDisabled()
{
- return false;
+ return (SelectTag.this.isDisabled() ? DisabledType.DISABLED : DisabledType.NO);
}
@Override
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/CheckboxInputControl.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/CheckboxInputControl.java
index 20fc7e9..1d6b129 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/CheckboxInputControl.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/CheckboxInputControl.java
@@ -30,6 +30,7 @@ import javax.faces.event.PhaseId;
import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
+import org.apache.empire.jsf2.controls.InputControl.DisabledType;
public class CheckboxInputControl extends InputControl
{
@@ -96,21 +97,12 @@ public class CheckboxInputControl extends InputControl
}
HtmlSelectBooleanCheckbox input = (HtmlSelectBooleanCheckbox) comp;
// disabled
- Object dis = ii.getAttributeEx("disabled");
- if (dis != null)
- {
- input.setDisabled(ObjectUtils.getBoolean(dis));
- }
- // field-readOnly
- if (ObjectUtils.getBoolean(dis) == false)
- {
- input.setReadonly(ii.isFieldReadOnly());
- input.setDisabled(ii.isFieldReadOnly());
- }
+ boolean disabled = ii.isDisabled();
+ input.setDisabled(disabled);
// check phase
if (phaseId==PhaseId.RENDER_RESPONSE)
{ // style
- addRemoveDisabledStyle(input, input.isDisabled());
+ addRemoveDisabledStyle(input, disabled);
// set value
setInputValue(input, ii);
}
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 f940c72..38b902a 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
@@ -87,6 +87,17 @@ public abstract class InputControl
}
/**
+ * DisabledType
+ * @author doebele
+ */
+ public enum DisabledType
+ {
+ NO,
+ READONLY,
+ DISABLED;
+ }
+
+ /**
* This interface allows access to a value and its metainformation
* used with the renderData function
*/
@@ -137,7 +148,7 @@ public abstract class InputControl
boolean isDisabled(); // disabled or readOnly
- boolean isFieldReadOnly(); // not disabled only readOnly (for input[type=text] only!)
+ DisabledType getDisabled();
// input
String getInputId();
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/RadioInputControl.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/RadioInputControl.java
index 5231521..feb929d 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/RadioInputControl.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/RadioInputControl.java
@@ -39,6 +39,7 @@ import org.apache.empire.data.Column;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
import org.apache.empire.jsf2.app.TextResolver;
+import org.apache.empire.jsf2.controls.InputControl.DisabledType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -137,7 +138,7 @@ public class RadioInputControl extends InputControl
// add
compList.add(input);
// style
- addRemoveDisabledStyle(input, input.isDisabled());
+ addRemoveDisabledStyle(input, disabled);
addRemoveInvalidStyle(input, ii.hasError());
// Set Value
setInputValue(input, ii);
@@ -165,7 +166,7 @@ public class RadioInputControl extends InputControl
}
if (phaseId==PhaseId.RENDER_RESPONSE)
{ // style
- addRemoveDisabledStyle(input, input.isDisabled());
+ addRemoveDisabledStyle(input, disabled);
addRemoveInvalidStyle(input, ii.hasError());
// set value
setInputValue(input, ii);
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 9f39584..be78fed 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
@@ -82,14 +82,14 @@ public class SelectInputControl extends InputControl
// copy Attributes
copyAttributes(parent, ii, input);
// disabled
- boolean disabled = ii.isDisabled() || ii.isFieldReadOnly();
+ boolean disabled = ii.isDisabled();
input.setDisabled(disabled);
// Options
initOptions(input, ii.getTextResolver(), ii);
// add
compList.add(input);
// style
- addRemoveDisabledStyle(input, input.isDisabled());
+ addRemoveDisabledStyle(input, disabled);
addRemoveInvalidStyle(input, ii.hasError());
// Set Value
setInputValue(input, ii);
@@ -116,7 +116,7 @@ public class SelectInputControl extends InputControl
}
if (phaseId==PhaseId.RENDER_RESPONSE)
{ // style
- addRemoveDisabledStyle(input, input.isDisabled());
+ addRemoveDisabledStyle(input, disabled);
addRemoveInvalidStyle(input, ii.hasError());
// set value
setInputValue(input, ii);
diff --git a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java
index ed890d5..02a713e 100644
--- a/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java
+++ b/empire-db-jsf2/src/main/java/org/apache/empire/jsf2/controls/TextAreaInputControl.java
@@ -30,6 +30,7 @@ import org.apache.empire.commons.ObjectUtils;
import org.apache.empire.commons.StringUtils;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
+import org.apache.empire.jsf2.controls.InputControl.DisabledType;
import org.apache.empire.jsf2.controls.InputControl.ValueInfo;
public class TextAreaInputControl extends InputControl
@@ -107,16 +108,15 @@ public class TextAreaInputControl extends InputControl
}
HtmlInputTextarea input = (HtmlInputTextarea)comp;
// disabled
- Object dis = ii.getAttributeEx("disabled");
- if (dis!=null)
- input.setDisabled(ObjectUtils.getBoolean(dis));
- // field-readOnly
- if (ObjectUtils.getBoolean(dis)==false)
- input.setReadonly(ii.isFieldReadOnly());
+ DisabledType disabled = ii.getDisabled();
+ if (disabled!=null)
+ { input.setReadonly((disabled==DisabledType.READONLY));
+ input.setDisabled((disabled==DisabledType.DISABLED));
+ }
// Set Value
if (phaseId==PhaseId.RENDER_RESPONSE)
{ // style
- addRemoveDisabledStyle(input, (input.isDisabled() || input.isReadonly()));
+ addRemoveDisabledStyle(input, (disabled!=null && disabled!=DisabledType.NO));
addRemoveInvalidStyle(input, ii.hasError());
// set value
setInputValue(input, ii);
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 ad71344..479ae51 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
@@ -43,6 +43,7 @@ import org.apache.empire.data.Column;
import org.apache.empire.data.DataType;
import org.apache.empire.exceptions.InvalidArgumentException;
import org.apache.empire.exceptions.UnexpectedReturnValueException;
+import org.apache.empire.jsf2.controls.InputControl.DisabledType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -126,20 +127,15 @@ public class TextInputControl extends InputControl
// modified
addRemoveStyle(input, InputControl.STYLECLASS_MODIFIED, ii.isModified());
// disabled
- Object dis = ii.getAttributeEx("disabled");
- if (dis != null)
- {
- input.setDisabled(ObjectUtils.getBoolean(dis));
- }
- // field-readOnly
- if (ObjectUtils.getBoolean(dis) == false)
- {
- input.setReadonly(ii.isFieldReadOnly());
+ DisabledType disabled = ii.getDisabled();
+ if (disabled!=null)
+ { input.setReadonly((disabled==DisabledType.READONLY));
+ input.setDisabled((disabled==DisabledType.DISABLED));
}
// set value
if (phaseId==PhaseId.RENDER_RESPONSE)
{ // style
- addRemoveDisabledStyle(input, (input.isDisabled() || input.isReadonly()));
+ addRemoveDisabledStyle(input, (disabled!=null && disabled!=DisabledType.NO));
addRemoveInvalidStyle(input, ii.hasError());
// set value
setInputValue(input, ii);
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 8fea07a..3c52da4 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
@@ -69,6 +69,7 @@ import org.apache.empire.jsf2.components.LabelTag;
import org.apache.empire.jsf2.components.LinkTag;
import org.apache.empire.jsf2.components.RecordTag;
import org.apache.empire.jsf2.controls.InputControl;
+import org.apache.empire.jsf2.controls.InputControl.DisabledType;
import org.apache.empire.jsf2.controls.InputControlManager;
import org.apache.empire.jsf2.controls.SelectInputControl;
import org.apache.empire.jsf2.controls.TextAreaInputControl;
@@ -79,6 +80,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
@@ -341,21 +343,14 @@ public class TagEncodingHelper implements NamingContainer
@Override
public boolean isDisabled()
{
- // check attribute
- Object val = getAttributeValueEx("disabled");
- if (val != null && ObjectUtils.getBoolean(val))
- return true;
- // not disabeld
- return false;
+ DisabledType disabled = TagEncodingHelper.this.getDisabled();
+ return (disabled!=null && disabled!=DisabledType.NO);
}
-
+
@Override
- public boolean isFieldReadOnly()
- { // Check tag
- if (!(component instanceof UIInput))
- return true;
- // column read only
- return TagEncodingHelper.this.isReadOnly();
+ public DisabledType getDisabled()
+ {
+ return TagEncodingHelper.this.getDisabled();
}
@Override
@@ -816,12 +811,9 @@ public class TagEncodingHelper implements NamingContainer
}
// check attribute
Object val = getTagAttributeValue("readonly");
- if (val != null)
- { // check
- if (StringUtils.valueOf(val).equalsIgnoreCase("never"))
- return false;
- if (ObjectUtils.getBoolean(val))
- return true;
+ if (!ObjectUtils.isEmpty(val))
+ { // override
+ return ObjectUtils.getBoolean(val);
}
// check record component
if (recordTag != null && recordTag.isReadOnly())
@@ -857,6 +849,11 @@ public class TagEncodingHelper implements NamingContainer
public boolean isReadOnly()
{
+ // component
+ if (!(component instanceof UIInput))
+ { log.warn("Component is not of type UIInput");
+ return true;
+ }
// Check Record
if (isRecordReadOnly())
return true;
@@ -869,6 +866,27 @@ public class TagEncodingHelper implements NamingContainer
// column
return getColumn().isReadOnly();
}
+
+ public DisabledType getDisabled()
+ {
+ // component
+ if (!(component instanceof UIInput))
+ { log.warn("Component is not of type UIInput");
+ return DisabledType.READONLY;
+ }
+ // Check attribute
+ Object dis = getAttributeValueEx("disabled");
+ if (ObjectUtils.isEmpty(dis))
+ return null; // not provided!
+ // direct
+ if (dis instanceof DisabledType)
+ return (DisabledType)dis;
+ // readonly
+ if (String.valueOf(dis).equalsIgnoreCase("readonly"))
+ return DisabledType.READONLY;
+ // other
+ return (ObjectUtils.getBoolean(dis) ? DisabledType.DISABLED : DisabledType.NO);
+ }
public boolean isValueRequired()
{