From 9b69534bc46e01f5a762284542db460930de44fa Mon Sep 17 00:00:00 2001 From: tapio Date: Thu, 8 Nov 2012 13:32:06 +0200 Subject: Modified FieldGroup so that fields configured with read only properties will also be made read only (#9076). Change-Id: I183ae263f4952a51513623d38dc9e04ce1482f45 --- .../src/com/vaadin/data/fieldgroup/FieldGroup.java | 27 ++++++++++++++++------ .../data/util/TransactionalPropertyWrapper.java | 14 +++++++++++ 2 files changed, 34 insertions(+), 7 deletions(-) (limited to 'server/src/com') diff --git a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java index 6bef69fe5b..5a69cad62e 100644 --- a/server/src/com/vaadin/data/fieldgroup/FieldGroup.java +++ b/server/src/com/vaadin/data/fieldgroup/FieldGroup.java @@ -188,7 +188,8 @@ public class FieldGroup implements Serializable { } /** - * Returns the read only status for the fields. + * Returns the read only status that is used by default with all fields that + * have a writable data source. *

* Note that this will not accurately represent the read only status of all * fields if you change the read only status of the fields through some @@ -201,16 +202,22 @@ public class FieldGroup implements Serializable { } /** - * Updates the read only state of all bound fields. + * Sets the read only state to the given value for all fields with writable + * data source. Fields with read only data source will always be set to read + * only. * * @param fieldsReadOnly - * true to set all bound fields to read only, false to set them - * to read write + * true to set the fields with writable data source to read only, + * false to set them to read write */ public void setReadOnly(boolean fieldsReadOnly) { readOnly = fieldsReadOnly; for (Field field : getFields()) { - field.setReadOnly(fieldsReadOnly); + if (!field.getPropertyDataSource().isReadOnly()) { + field.setReadOnly(fieldsReadOnly); + } else { + field.setReadOnly(true); + } } } @@ -325,7 +332,8 @@ public class FieldGroup implements Serializable { * Configures a field with the settings set for this FieldBinder. *

* By default this updates the buffered, read only and enabled state of the - * field. Also adds validators when applicable. + * field. Also adds validators when applicable. Fields with read only data + * source are always configured as read only. * * @param field * The field to update @@ -334,7 +342,12 @@ public class FieldGroup implements Serializable { field.setBuffered(isBuffered()); field.setEnabled(isEnabled()); - field.setReadOnly(isReadOnly()); + + if (field.getPropertyDataSource().isReadOnly()) { + field.setReadOnly(true); + } else { + field.setReadOnly(isReadOnly()); + } } /** diff --git a/server/src/com/vaadin/data/util/TransactionalPropertyWrapper.java b/server/src/com/vaadin/data/util/TransactionalPropertyWrapper.java index d8d27ae4c8..503bb1c743 100644 --- a/server/src/com/vaadin/data/util/TransactionalPropertyWrapper.java +++ b/server/src/com/vaadin/data/util/TransactionalPropertyWrapper.java @@ -122,4 +122,18 @@ public class TransactionalPropertyWrapper extends AbstractProperty return wrappedProperty; } + @Override + public boolean isReadOnly() { + return wrappedProperty.isReadOnly(); + } + + @Override + public void setReadOnly(boolean newStatus) { + boolean oldStatus = isReadOnly(); + wrappedProperty.setReadOnly(newStatus); + if (oldStatus != isReadOnly()) { + fireReadOnlyStatusChange(); + } + } + } -- cgit v1.2.3