package org.libreplan.web.common;
import static org.libreplan.business.workingday.EffortDuration.zero;
import static org.libreplan.web.I18nHelper._;
import org.libreplan.business.workingday.EffortDuration;
import org.zkoss.zk.ui.WrongValueException;
import org.zkoss.zul.Textbox;
public class EffortDurationBox extends Textbox {
public static EffortDurationBox notEditable() {
EffortDurationBox result = new EffortDurationBox();
result.setDisabled(true);
return result;
}
public EffortDurationBox() {
setValueDirectly(zero());
}
public EffortDurationBox(EffortDuration effortDuration) {
setValue(effortDuration);
}
public void setValue(EffortDuration effortDuration) {
setText(coerceToString(effortDuration));
}
public EffortDuration getEffortDurationValue() {
return (EffortDuration) getTargetValue();
}
@Override
protected Object marshall(Object value) {
return coerceToString(value);
}
@Override
protected Object unmarshall(Object value) {
return coerceFromString((String) value);
}
@Override
protected Object coerceFromString(String value) throws WrongValueException {
EffortDuration result = EffortDuration.parseFromFormattedString(value);
if (result == null) {
throw new WrongValueException(this,
_("Invalid Effort Duration"));
}
return result;
}
@Override
protected String coerceToString(Object value) {
if (value instanceof EffortDuration) {
EffortDuration effort = (EffortDuration) value;
return effort.toFormattedString();
}
return "";
}
}