details: /erp/devel/pi/rev/58d355ef3af7
changeset: 10864:58d355ef3af7
user: Asier Lostalé <asier.lostale <at> openbravo.com>
date: Thu Feb 24 13:10:23 2011 +0100
summary: [displayLogic] Fixed display logic for buttons with Y/N value
Buttons associated to a list reference shouln't be treated as boolean when
computing display logic.
diffstat:
modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
| 54 +++++++--
1 files changed, 40 insertions(+), 14 deletions(-)
diffs (119 lines):
diff -r be5823345242 -r 58d355ef3af7
modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
---
a/modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
Thu Feb 24 10:34:11 2011 +0100
+++
b/modules/org.openbravo.client.application/src/org/openbravo/client/application/DynamicExpressionParser.java
Thu Feb 24 13:10:23 2011 +0100
@@ -25,6 +25,9 @@
import java.util.StringTokenizer;
import org.openbravo.client.kernel.KernelUtils;
+import org.openbravo.client.kernel.reference.UIDefinition;
+import org.openbravo.client.kernel.reference.UIDefinitionController;
+import org.openbravo.client.kernel.reference.YesNoUIDefinition;
import org.openbravo.model.ad.ui.AuxiliaryInput;
import org.openbravo.model.ad.ui.Field;
import org.openbravo.model.ad.ui.Tab;
@@ -95,15 +98,18 @@
+ strAux.substring(pos[0] + COMPARATIONS[pos[1]][0].length(),
strAux.length());
}
- String leftPart = getDisplayLogicText(token);
- jsCode.append(leftPart);
+ DisplayLogicElement leftPart = getDisplayLogicText(token, false, false);
+ jsCode.append(leftPart.text);
if (pos[0] >= 0) {
jsCode.append(COMPARATIONS[pos[1]][1]);
}
- String rightPart = getDisplayLogicText(token2);
- jsCode.append(leftPart.contains("currentValues") ?
transformValue(rightPart) : rightPart);
+ DisplayLogicElement rightPart = getDisplayLogicText(token2, leftPart.text
+ .contains("currentValues"), leftPart.isBoolean);
+ jsCode.append(rightPart.text);
+
+ System.out.println(jsCode.toString());
}
}
@@ -157,9 +163,11 @@
/*
* This method was partially copied from WadUtility.
*/
- private String getDisplayLogicText(String token) {
+ private DisplayLogicElement getDisplayLogicText(String token, boolean
transformValue,
+ boolean boolLeftToken) {
StringBuffer strOut = new StringBuffer();
String localToken = token;
+ boolean boolToken = false;
int i = localToken.indexOf("@");
while (i != -1) {
strOut.append(localToken.substring(0, i));
@@ -168,37 +176,46 @@
if (i != -1) {
String strAux = localToken.substring(0, i);
localToken = localToken.substring(i + 1);
- String st = getDisplayLogicTextTranslate(strAux);
- strOut.append(st);
+ DisplayLogicElement displayLogicElement =
getDisplayLogicTextTranslate(strAux);
+ // It needn't boolean transformation as it is a token like @column@
+ strOut.append(displayLogicElement.text);
+ boolToken = boolToken || displayLogicElement.isBoolean;
}
i = localToken.indexOf("@");
}
- strOut.append(localToken);
- return strOut.toString();
+ // Do boolean transformation in case comparison left member is a boolean
column
+ strOut.append(transformValue && boolLeftToken ? transformValue(localToken)
: localToken);
+ return new DisplayLogicElement(strOut.toString(), boolToken);
}
/*
* This method is a different reimplementation of an equivalent method in
WadUtility
*/
- private String getDisplayLogicTextTranslate(String token) {
+ private DisplayLogicElement getDisplayLogicTextTranslate(String token) {
if (token == null || token.trim().equals(""))
- return "";
+ return new DisplayLogicElement("", false);
for (Field field : tab.getADFieldList()) {
if (token.equalsIgnoreCase(field.getColumn().getDBColumnName())) {
fieldsInExpression.add(field);
final String fieldName =
KernelUtils.getInstance().getPropertyFromColumn(field.getColumn())
.getName();
- return "currentValues." + fieldName;
+
+ UIDefinition uiDef =
UIDefinitionController.getInstance().getUIDefinition(
+ field.getColumn().getId());
+
+ return new DisplayLogicElement("currentValues." + fieldName,
+ uiDef instanceof YesNoUIDefinition);
}
}
for (AuxiliaryInput auxIn : tab.getADAuxiliaryInputList()) {
if (token.equalsIgnoreCase(auxIn.getName())) {
auxInputsInExpression.add(auxIn);
- return TOKEN_PREFIX + auxIn.getName();
+ return new DisplayLogicElement(TOKEN_PREFIX + auxIn.getName(), false);
}
}
sessionAttributesInExpression.add(token);
- return TOKEN_PREFIX + (token.startsWith("#") ? token.replace("#", "_") :
token);
+ return new DisplayLogicElement(TOKEN_PREFIX
+ + (token.startsWith("#") ? token.replace("#", "_") : token), false);
}
/*
@@ -216,4 +233,13 @@
return min;
}
+ private class DisplayLogicElement {
+ boolean isBoolean;
+ String text;
+
+ public DisplayLogicElement(String text, boolean isBoolean) {
+ this.text = text;
+ this.isBoolean = isBoolean;
+ }
+ }
}
------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits