/*
* 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;
import com.vaadin.ui.AbstractComponent;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextArea;
import ru.codeinside.gses.vaadin.customfield.CustomField;
import java.io.Serializable;
final public class ReadOnly extends CustomField implements Serializable {
private static final long serialVersionUID = 1L;
private boolean valid;
public ReadOnly(String value) {
this(value, true);
}
public ReadOnly(String value, boolean valid) {
this(value, value, valid);
}
public ReadOnly(String labelValue, String value, boolean valid) {
this.valid = valid;
if (value == null || value.length() < 4000) {
setSizeFull();
Label label = new Label(labelValue);
label.setSizeFull();
label.setStyleName("left");
HorizontalLayout layout = new HorizontalLayout(); // обход бага GridLayout
layout.setSizeFull();
layout.addComponent(label);
layout.setExpandRatio(label, 1f);
setCompositionRoot(layout);
} else {
setSizeFull();
TextArea area = new TextArea();
area.setValue(value);
area.setReadOnly(true);
area.setSizeFull();
area.setRows(25);
setCompositionRoot(area);
}
if (valid) {
setValue(value);
}
}
@Override
public Class<?> getType() {
return String.class;
}
@Override
public boolean isValid() {
return valid;
}
@Override
public boolean isRequired() {
return !valid;
}
@Override
public void addStyleName(String style) {
getCompositionRoot().addStyleName(style);
}
@Override
public void setDescription(String description) {
((AbstractComponent) getCompositionRoot()).setDescription(description);
}
@Override
public String getDescription() {
return ((AbstractComponent) getCompositionRoot()).getDescription();
}
}