/*
* 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.webui.form;
import ru.codeinside.gses.activiti.ftarchive.LongField;
import ru.codeinside.gses.vaadin.customfield.CustomField;
import ru.codeinside.gses.webui.Flash;
import java.io.Serializable;
final public class BlockField extends CustomField implements Serializable {
private static final long serialVersionUID = 1L;
final LongField view;
final String taskId;
final String fieldId;
public BlockField(String taskId, String fieldId, Long value, boolean readOnly) {
this.taskId = taskId;
this.fieldId = fieldId;
view = new LongField(value);
view.setNullRepresentation("0");
view.setReadOnly(true);
setReadOnly(readOnly);
setCompositionRoot(view);
}
@Override
public Class<?> getType() {
return Long.class;
}
@Override
public boolean isValid() {
return true;
}
@Override
public boolean isRequired() {
return false;
}
@Override
public void addStyleName(String style) {
view.addStyleName(style);
}
@Override
public String getDescription() {
return view.getDescription();
}
@Override
public void setDescription(String description) {
view.setDescription(description);
}
@Override
public Object getValue() {
return view.getValue();
}
@Override
public void setValue(final Object newValue) throws ReadOnlyException, ConversionException {
view.setReadOnly(false);
try {
view.setValue(newValue);
} finally {
view.setReadOnly(true);
}
if (taskId != null) {
Long v = null;
if (newValue instanceof Long) {
v = (Long) newValue;
} else if (newValue instanceof Integer) {
v = Long.valueOf((Integer) newValue);
}
Flash.flash().getExecutorService().saveBuffer(taskId, fieldId, v);
}
}
}