package com.vaadin.v7.tests.server.component.abstractfield;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
import com.vaadin.tests.data.bean.Address;
import com.vaadin.tests.data.bean.Country;
import com.vaadin.tests.data.bean.Person;
import com.vaadin.tests.data.bean.Sex;
import com.vaadin.ui.Label;
import com.vaadin.v7.data.Property.ReadOnlyStatusChangeEvent;
import com.vaadin.v7.data.Property.ReadOnlyStatusChangeListener;
import com.vaadin.v7.data.util.MethodProperty;
import com.vaadin.v7.ui.TextField;
public class AbstractFieldReadOnlyTest {
Person paulaBean = new Person("Paula", "Brilliant", "paula@brilliant.com",
34, Sex.FEMALE,
new Address("Paula street 1", 12345, "P-town", Country.FINLAND));
@Test
public void testReadOnlyProperty() {
TextField tf = new TextField();
tf.setPropertyDataSource(
new MethodProperty<String>(paulaBean, "firstName"));
assertFalse(tf.isReadOnly());
tf.getPropertyDataSource().setReadOnly(true);
assertTrue(tf.isReadOnly());
}
@Test
public void testReadOnlyEventFromProperty() {
final Label valueStore = new Label("");
TextField tf = new TextField();
tf.addReadOnlyStatusChangeListener(new ReadOnlyStatusChangeListener() {
@Override
public void readOnlyStatusChange(ReadOnlyStatusChangeEvent event) {
valueStore.setValue("event received!");
}
});
tf.setPropertyDataSource(
new MethodProperty<String>(paulaBean, "firstName"));
assertTrue(valueStore.getValue().isEmpty());
tf.getPropertyDataSource().setReadOnly(true);
assertFalse(valueStore.getValue().isEmpty());
}
}