/*
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
* Copyright (c) 2013, MPL CodeInside http://codeinside.ru
*/
package ru.codeinside.gses.activiti.ftarchive;
import com.vaadin.ui.CheckBox;
import ru.codeinside.gses.vaadin.customfield.CustomField;
import java.lang.reflect.Method;
public class CustomCheckBox extends CustomField {
private final CheckBox checkBox;
public CustomCheckBox() {
checkBox = new CheckBox();
checkBox.setImmediate(true);
setCompositionRoot(checkBox);
}
@Override
public Class<?> getType() {
return Void.class;
}
@Override
public Object getValue() {
Object value = checkBox.getValue();
if (this.isRequired()) {
return Boolean.TRUE.equals(value) ? Boolean.TRUE : null;
} else {
return value == null ? Boolean.FALSE : value; // #1228 - считать NULL как false
}
}
@Override
public void setValue(Object newValue) throws ReadOnlyException, ConversionException {
super.setValue(newValue);
checkBox.setValue(newValue);
}
@Override
public void setRequired(boolean required) {
super.setRequired(required);
checkBox.setRequired(required);
}
@Override
public void setReadOnly(boolean readOnly) {
super.setReadOnly(readOnly);
checkBox.setReadOnly(readOnly);
}
@Override
public String getDescription() {
return checkBox.getDescription();
}
@Override
public void setDescription(String description) {
checkBox.setDescription(description);
}
@Override
public void addListener(ValueChangeListener listener) {
checkBox.addListener(listener);
}
public void addListener(Class<?> eventType, Object target, Method method) {
checkBox.addListener(eventType, target, method);
}
public void addListener(Class<?> eventType, Object target, String methodName) {
checkBox.addListener(eventType, target, methodName);
}
@Override
public String getRequiredError() {
return checkBox.getRequiredError();
}
@Override
public void setRequiredError(String requiredMessage) {
super.setRequiredError(requiredMessage);
checkBox.setRequiredError(requiredMessage);
}
@Override
public void addListener(Listener listener) {
checkBox.addListener(listener);
}
}