package com.thingtrack.konekti.view.web.form.field; import java.text.SimpleDateFormat; import java.util.Locale; import com.thingtrack.konekti.view.addon.ui.AbstractField; import com.vaadin.data.Property; import com.vaadin.ui.ComboBox; import com.vaadin.ui.Select; import com.vaadin.ui.VerticalLayout; @SuppressWarnings("serial") public class LocaleField extends AbstractField { private VerticalLayout mainLayout; private ComboBox defaultLocaleField; public static final String LOCALE_SEPARATOR = "-"; private String localeCode; private Locale[] locales; public LocaleField() { buildMainLayout(); setCompositionRoot(mainLayout); // get all available locales locales = SimpleDateFormat.getAvailableLocales(); // construct custom datasource for combobox // id: language + LOCALE_SEPARATOR + country: es_ES // display: fraindly locale string /*for (int i = 0; i< locales.length; i++) { if (locales[i].getCountry() != "" && locales[i].getLanguage() != "") { String localeCode = locales[i].getLanguage() + LOCALE_SEPARATOR + locales[i].getCountry(); // Use the item ID also as the caption of this item defaultLocaleField.addItem(localeCode); defaultLocaleField.setItemCaption(localeCode, locales[i].getDisplayName()); } }*/ // construct custom datasource for combobox defaultLocaleField.addItem("es-ES"); defaultLocaleField.setItemCaption("es-ES", "Español"); defaultLocaleField.addItem("en-US"); defaultLocaleField.setItemCaption("en-US", "English"); defaultLocaleField.addItem("fr-FR"); defaultLocaleField.setItemCaption("fr-FR", "Français"); //defaultLocaleField.addItem("zh-CN"); //defaultLocaleField.setItemCaption("zh-CN", "简体中文"); defaultLocaleField.addListener(new Property.ValueChangeListener() { public void valueChange(Property.ValueChangeEvent event) { // Get the selected item Object itemId = event.getProperty().getValue(); if (itemId != null) localeCode = itemId.toString(); } }); defaultLocaleField.setItemCaptionMode(Select.ITEM_CAPTION_MODE_EXPLICIT_DEFAULTS_ID); defaultLocaleField.setImmediate(true); defaultLocaleField.setNullSelectionAllowed(false); } @Override public Class<?> getType() { return String.class; } @Override public void setPropertyDataSource(Property newDataSource) { localeCode = (String)newDataSource.getValue(); defaultLocaleField.setValue(localeCode); super.setPropertyDataSource(newDataSource); } @Override public Object getValue() { return localeCode; } private VerticalLayout buildMainLayout() { // common part: create layout mainLayout = new VerticalLayout(); mainLayout.setImmediate(false); mainLayout.setWidth("100%"); mainLayout.setHeight("100%"); mainLayout.setMargin(false); // top-level component properties setWidth("100.0%"); setHeight("100.0%"); // comboBox_1 defaultLocaleField = new ComboBox(); defaultLocaleField.setImmediate(false); defaultLocaleField.setWidth("100.0%"); defaultLocaleField.setHeight("-1px"); mainLayout.addComponent(defaultLocaleField); return mainLayout; } @Override protected void updateLabels() { defaultLocaleField.setCaption(getI18N().getMessage("com.thingtrack.konekti.view.web.form.field.LocaleField.defaultLocaleField.caption")); } }