aboutsummaryrefslogtreecommitdiffstats
path: root/uitest/src/com/vaadin/tests/components/table/DoublesInTable.java
diff options
context:
space:
mode:
Diffstat (limited to 'uitest/src/com/vaadin/tests/components/table/DoublesInTable.java')
-rw-r--r--uitest/src/com/vaadin/tests/components/table/DoublesInTable.java297
1 files changed, 297 insertions, 0 deletions
diff --git a/uitest/src/com/vaadin/tests/components/table/DoublesInTable.java b/uitest/src/com/vaadin/tests/components/table/DoublesInTable.java
new file mode 100644
index 0000000000..920ccc2038
--- /dev/null
+++ b/uitest/src/com/vaadin/tests/components/table/DoublesInTable.java
@@ -0,0 +1,297 @@
+package com.vaadin.tests.components.table;
+
+import java.math.BigDecimal;
+import java.text.NumberFormat;
+import java.util.Date;
+import java.util.Locale;
+
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.data.util.BeanItemContainer;
+import com.vaadin.data.util.converter.Converter;
+import com.vaadin.data.util.converter.StringToNumberConverter;
+import com.vaadin.tests.components.TestBase;
+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.tests.util.Log;
+import com.vaadin.ui.CheckBox;
+import com.vaadin.ui.ComboBox;
+import com.vaadin.ui.Table;
+
+public class DoublesInTable extends TestBase {
+ BeanItemContainer<Person> personBeanItemContainer = new BeanItemContainer<Person>(
+ Person.class);
+
+ private Table table;
+
+ private Log log = new Log(5);
+
+ private ComboBox localeSelect;
+
+ private CheckBox useCustomConverters;
+
+ private CheckBox editMode;
+
+ @Override
+ protected void setup() {
+ editMode = new CheckBox("Edit mode");
+ editMode.setImmediate(true);
+ editMode.addListener(new ValueChangeListener() {
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ table.setEditable(editMode.getValue());
+
+ }
+ });
+
+ useCustomConverters = new CheckBox("Use custom converters");
+ useCustomConverters.setImmediate(true);
+ useCustomConverters.addListener(new ValueChangeListener() {
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ recreateTable();
+ }
+ });
+
+ localeSelect = createLocaleSelect();
+ personBeanItemContainer = createContainer(100);
+ addComponent(log);
+ addComponent(localeSelect);
+ addComponent(useCustomConverters);
+ addComponent(editMode);
+ recreateTable();
+
+ }
+
+ private ComboBox createLocaleSelect() {
+ ComboBox cb = new ComboBox();
+ cb.setNullSelectionAllowed(false);
+ for (Locale l : Locale.getAvailableLocales()) {
+ cb.addItem(l);
+ }
+ cb.setImmediate(true);
+ cb.setValue(Locale.US);
+ cb.addListener(new ValueChangeListener() {
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ recreateTable();
+ }
+ });
+ return cb;
+ }
+
+ protected void recreateTable() {
+ Table newTable = createTable(useCustomConverters.getValue(),
+ (Locale) localeSelect.getValue());
+ newTable.setEditable(editMode.getValue());
+ if (table == null) {
+ addComponent(newTable);
+ } else {
+ replaceComponent(table, newTable);
+ }
+ table = newTable;
+ }
+
+ private static BeanItemContainer<Person> createContainer(int nr) {
+ BeanItemContainer<Person> bic = new BeanItemContainer<Person>(
+ Person.class);
+ for (int i = 1; i <= nr; i++) {
+ Person p = new Person();
+ p.setFirstName("First " + i);
+ p.setLastName("Last " + i);
+ p.setAge(i);
+ p.setDeceased((i % 5 - 2) == 0);
+ p.setEmail("person" + i + "@mail.com");
+ p.setRent(new BigDecimal(i * 1250.25));
+ p.setSalary(3000 + i);
+ p.setSex((i % 4) == 0 ? Sex.MALE : Sex.FEMALE);
+ p.setBirthDate(new Date(2011 - 1900 - p.getAge(), 11 - 1, 24));
+ if (i % 42 == 0) {
+ p.setSex(Sex.UNKNOWN);
+ }
+ String city = "City " + (i / 10);
+ Country country = Country.FINLAND;
+ Address address = new Address("Street " + i, 12345 + i * 2, city,
+ country);
+ p.setAddress(address);
+ bic.addBean(p);
+ }
+
+ return bic;
+ }
+
+ protected Table createTable(boolean useCustomConverters, Locale locale) {
+ Table t = new Table("Persons");
+ t.setLocale(locale);
+ t.setContainerDataSource(personBeanItemContainer);
+ t.setSortDisabled(false);
+ if (useCustomConverters) {
+ addConverters(t);
+ }
+ t.setSelectable(true);
+ t.setImmediate(true);
+ t.addListener(new ValueChangeListener() {
+
+ @Override
+ public void valueChange(ValueChangeEvent event) {
+ log.log("Value is now: " + event.getProperty().getValue());
+
+ }
+ });
+ return t;
+ }
+
+ private void addConverters(Table t) {
+ t.setConverter("sex", new Converter<String, Sex>() {
+
+ @Override
+ public Sex convertToModel(String value, Locale locale)
+ throws com.vaadin.data.util.converter.Converter.ConversionException {
+ // not used in this test - Table only converts to presentation
+ return null;
+ }
+
+ @Override
+ public String convertToPresentation(Sex value, Locale locale)
+ throws com.vaadin.data.util.converter.Converter.ConversionException {
+ if (value == null) {
+ value = Sex.UNKNOWN;
+ }
+ return value.getStringRepresentation();
+ }
+
+ @Override
+ public Class<Sex> getModelType() {
+ return Sex.class;
+ }
+
+ @Override
+ public Class<String> getPresentationType() {
+ return String.class;
+ }
+ });
+ t.setConverter("deceased", new Converter<String, Boolean>() {
+
+ @Override
+ public Boolean convertToModel(String value, Locale locale) {
+ // not used in this test - Table only converts from source to
+ // target
+ return null;
+ }
+
+ @Override
+ public String convertToPresentation(Boolean value, Locale locale) {
+ if (value == null || value) {
+ return "YES, DEAD!";
+ } else {
+ return "-";
+ }
+ }
+
+ @Override
+ public Class<Boolean> getModelType() {
+ return Boolean.class;
+ }
+
+ @Override
+ public Class<String> getPresentationType() {
+ return String.class;
+ }
+ });
+ t.setConverter("age", new Converter<String, Integer>() {
+
+ @Override
+ public Integer convertToModel(String value, Locale locale)
+ throws com.vaadin.data.util.converter.Converter.ConversionException {
+ // not used in this test - Table only converts from source to
+ // target
+ return null;
+ }
+
+ @Override
+ public String convertToPresentation(Integer value, Locale locale)
+ throws com.vaadin.data.util.converter.Converter.ConversionException {
+ if (value == null) {
+ return null;
+ }
+ if (value < 3) {
+ return value + " (baby)";
+ } else if (value < 7) {
+ return value + " (kid)";
+ } else if (value < 18) {
+ return value + " (young)";
+ } else {
+ return value + "";
+ }
+ }
+
+ @Override
+ public Class<Integer> getModelType() {
+ return Integer.class;
+ }
+
+ @Override
+ public Class<String> getPresentationType() {
+ return String.class;
+ }
+ });
+ t.setConverter("address", new Converter<String, Address>() {
+
+ @Override
+ public Address convertToModel(String value, Locale locale)
+ throws ConversionException {
+ // not used in this test - Table only converts to presentation
+ return null;
+ }
+
+ @Override
+ public String convertToPresentation(Address value, Locale locale)
+ throws ConversionException {
+ return value.getStreetAddress() + ", " + value.getCity() + " ("
+ + value.getCountry() + ")";
+ }
+
+ @Override
+ public Class<Address> getModelType() {
+ return Address.class;
+ }
+
+ @Override
+ public Class<String> getPresentationType() {
+ return String.class;
+ }
+
+ });
+
+ t.setConverter("rent", new StringToNumberConverter() {
+ @Override
+ protected NumberFormat getFormat(Locale locale) {
+ return NumberFormat.getCurrencyInstance(locale);
+ // DecimalFormat df = new DecimalFormat();
+ // df.setDecimalSeparatorAlwaysShown(true);
+ // df.setGroupingUsed(true);
+ // df.setMinimumFractionDigits(2);
+ // df.setMaximumFractionDigits(2);
+ // return df;
+ }
+ });
+ }
+
+ @Override
+ protected String getDescription() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ protected Integer getTicketNumber() {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+}