diff options
author | Artur Signell <artur@vaadin.com> | 2012-11-21 17:13:10 +0200 |
---|---|---|
committer | Vaadin Code Review <review@vaadin.com> | 2012-11-22 15:03:20 +0000 |
commit | 57c7a515e0f8b12dfe23b40a10e2f384fb409708 (patch) | |
tree | 28da6f4af9a40d3a84b7ff18e551f826f2277998 /server/src/com/vaadin/ui/Label.java | |
parent | f3ea43e76a9f28e846c9d9ba5e07fe000329dba1 (diff) | |
download | vaadin-framework-57c7a515e0f8b12dfe23b40a10e2f384fb409708.tar.gz vaadin-framework-57c7a515e0f8b12dfe23b40a10e2f384fb409708.zip |
Update value when field/label local changes (#8192)
Change-Id: Ifbb426f7aee107db0be555c5ab1ef0b5f4948e5e
Diffstat (limited to 'server/src/com/vaadin/ui/Label.java')
-rw-r--r-- | server/src/com/vaadin/ui/Label.java | 33 |
1 files changed, 29 insertions, 4 deletions
diff --git a/server/src/com/vaadin/ui/Label.java b/server/src/com/vaadin/ui/Label.java index db5bc2862d..1cc18d33bc 100644 --- a/server/src/com/vaadin/ui/Label.java +++ b/server/src/com/vaadin/ui/Label.java @@ -17,6 +17,7 @@ package com.vaadin.ui; import java.lang.reflect.Method; +import java.util.Locale; import java.util.logging.Logger; import com.vaadin.data.Property; @@ -174,8 +175,8 @@ public class Label extends AbstractComponent implements Property<String>, } /** - * Returns the current value of the data source. Assumes there is a data - * source. + * Returns the current value of the data source converted using the current + * locale. * * @return */ @@ -412,10 +413,34 @@ public class Label extends AbstractComponent implements Property<String>, */ @Override public void valueChange(Property.ValueChangeEvent event) { + updateValueFromDataSource(); + } + + private void updateValueFromDataSource() { // Update the internal value from the data source - getState().text = getValue(); + String newConvertedValue = getDataSourceValue(); + if (!AbstractField.equals(newConvertedValue, getState().text)) { + getState().text = newConvertedValue; + fireValueChange(); + } + } - fireValueChange(); + @Override + public void attach() { + super.attach(); + localeMightHaveChanged(); + } + + @Override + public void setLocale(Locale locale) { + super.setLocale(locale); + localeMightHaveChanged(); + } + + private void localeMightHaveChanged() { + if (getPropertyDataSource() != null) { + updateValueFromDataSource(); + } } private String getComparableValue() { |