
com.viaoa.web.html.oa.OAInputText Maven / Gradle / Ivy
package com.viaoa.web.html.oa;
import com.viaoa.hub.*;
import com.viaoa.object.*;
import com.viaoa.uicontroller.OAUIPropertyController;
import com.viaoa.util.OACompare;
import com.viaoa.util.OAString;
import com.viaoa.web.html.HtmlTD;
import com.viaoa.web.html.form.OAForm;
import com.viaoa.web.html.form.OAFormSubmitEvent;
import com.viaoa.web.html.input.InputText;
/**
* Binds InputText to an Hub + propertyName
*
*/
public class OAInputText extends InputText implements OAHtmlComponentInterface, OAHtmlTableComponentInterface {
private final OAUIPropertyController oaUiControl;
private static class LastRefresh {
OAObject objUsed;
String value;
}
private final LastRefresh lastRefresh = new LastRefresh();
public OAInputText(String id, Hub hub, String propName) {
super(id);
oaUiControl = new OAUIPropertyController(hub, propName) {
@Override
protected void onCompleted(String completedMessage, String title) {
OAForm form = getForm();
if (form != null) {
form.addMessage(completedMessage);
form.addConsoleMessage(title + " - " + completedMessage);
}
}
@Override
protected void onError(String errorMessage, String detailMessage) {
OAForm form = getForm();
if (form != null) {
form.addError(errorMessage);
form.addConsoleMessage(errorMessage + " - " + detailMessage);
}
}
};
}
public Hub getHub() {
return oaUiControl.getHub();
}
public String getPropertyName() {
return oaUiControl.getPropertyName();
}
public String getFormat() {
return oaUiControl.getFormat();
}
public void setFormat(String format) {
oaUiControl.setFormat(format);
}
public void setConversion(char conv) {
oaUiControl.setConversion(conv);
}
public char getConversion() {
return oaUiControl.getConversion();
}
@Override
protected void onSubmitAfterLoadValues(OAFormSubmitEvent formSubmitEvent) {
if (getHub() == null || getPropertyName() == null) {
return;
}
if (lastRefresh.objUsed == null) return;
// make sure that it did not change
Object objPrev = oaUiControl.getValue(lastRefresh.objUsed);
if (!OACompare.isEqual(objPrev, lastRefresh.value)) {
formSubmitEvent.addSyncError("OAInputText Id="+getId());
return;
}
final String val = getValue();
if (OAString.isNotEqual(lastRefresh.value, val)) {
oaUiControl.onSetProperty(lastRefresh.objUsed, val);
lastRefresh.value = val;
}
}
@Override
protected void beforeGetScript() {
OAForm form = getOAHtmlComponent().getForm();
final boolean bIsFormEnabled = form == null || form.getEnabled();
lastRefresh.objUsed = (OAObject) oaUiControl.getHub().getAO();
lastRefresh.value = oaUiControl.getValueAsString(lastRefresh.objUsed);
boolean b = oaUiControl.isEnabled(lastRefresh.objUsed);
setEnabled(bIsFormEnabled && b);
b = oaUiControl.isVisible(lastRefresh.objUsed);
setVisible(b);
b = oaUiControl.isRequired();
setRequired(b);
if (getConversion() == 0) {
OAObjectInfo oi = getHub().getOAObjectInfo();
OAPropertyInfo pi = oi.getPropertyInfo(getPropertyName());
if (pi != null) {
if (pi.isUpper()) oaUiControl.setConversion('U');
else if (pi.isLower()) oaUiControl.setConversion('L');
}
}
setValue(lastRefresh.value);
OAObjectInfo oi = getHub().getOAObjectInfo();
OAPropertyInfo pi = oi.getPropertyInfo(getPropertyName());
if (pi != null) {
if (getMaxLength() == 0 && pi.getMaxLength() > 0) setMaxLength(pi.getMaxLength());
if (getMinLength() == 0) setMinLength(pi.getMinLength());
if (getSize() < 1) {
setSize(pi.getDisplayLength());
}
}
}
@Override
public String getTableCellRenderer(Hub hubTable, HtmlTD td, int row) {
OAObject obj;
if (hubTable != null && hubTable != getHub()) {
obj = (OAObject) hubTable.getAt(row);
if (obj != null) {
String pp = OAObjectReflectDelegate.getPropertyPathBetweenHubs(hubTable, getHub());
obj = (OAObject) obj.getProperty(pp);
}
}
else {
obj = (OAObject) getHub().get(row);
}
String s;
if (obj == null) s = "";
else {
boolean b = obj.isVisible(getPropertyName());
if (!b) s = "";
else {
s = obj.getPropertyAsString(getPropertyName(), getFormat());
if (s == null) s = "";
else td.addClass("oaNoTextOverflow");
}
}
return s;
}
//qqqqqqqqqqqqq the other OA Web components need to have this code added qqqqqqqqqqqqqqqq
@Override
public String getTableCellEditor(Hub hubTable, HtmlTD td, int row, boolean bHasFocus) {
OAObject obj;
if (hubTable != null && hubTable != getHub()) {
obj = (OAObject) hubTable.getAt(row);
if (obj != null) {
String pp = OAObjectReflectDelegate.getPropertyPathBetweenHubs(hubTable, getHub());
obj = (OAObject) obj.getProperty(pp);
}
}
else {
obj = (OAObject) getHub().get(row);
}
String s = "";
// note: other settings will be added by InputText
return s;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy