
com.viaoa.web.html.oa.OAInputDateTime 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.*;
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.*;
/**
* Binds InputDateTime to a Hub + propertyName
*
*/
public class OAInputDateTime extends InputDateTime implements OAHtmlComponentInterface, OAHtmlTableComponentInterface {
private final OAUIPropertyController oaUiControl;
private static class LastRefresh {
OAObject objUsed;
OADateTime value;
}
private final LastRefresh lastRefresh = new LastRefresh();
public OAInputDateTime(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);
}
@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("OAInputDateTime Id="+getId());
return;
}
final OADateTime dt = getDateTimeValue();
if (OACompare.isNotEqual(lastRefresh.value, dt)) {
oaUiControl.onSetProperty(lastRefresh.objUsed, dt);
lastRefresh.value = dt;
}
}
@Override
protected void beforeGetScript() {
OAForm form = getOAHtmlComponent().getForm();
final boolean bIsFormEnabled = form == null || form.getEnabled();
lastRefresh.objUsed = (OAObject) oaUiControl.getHub().getAO();
lastRefresh.value = (OADateTime) oaUiControl.getValue(lastRefresh.objUsed);
boolean b = oaUiControl.isEnabled();
setEnabled(bIsFormEnabled && b);
b = oaUiControl.isVisible();
setVisible(b);
b = oaUiControl.isRequired();
setRequired(b);
setValue(lastRefresh.value);
}
@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());
td.addClass("oaNoTextOverflow");
}
}
return s;
}
@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 oahtmlcomponent
return s;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy