package be.nikiroo.utils.ui; import java.awt.Component; import java.util.Locale; import javax.swing.DefaultListCellRenderer; import javax.swing.JComboBox; import javax.swing.JComponent; import javax.swing.JList; import be.nikiroo.utils.resources.MetaInfo; class ConfigItemLocale> extends ConfigItemCombobox { private static final long serialVersionUID = 1L; /** * Create a new {@link ConfigItemLocale} for the given {@link MetaInfo}. * * @param info * the {@link MetaInfo} */ public ConfigItemLocale(MetaInfo info) { super(info, true); } // rawtypes for Java 1.6 (and 1.7 ?) support @SuppressWarnings({ "unchecked", "rawtypes" }) @Override protected JComponent createEmptyField(int item) { JComboBox field = (JComboBox) super.createEmptyField(item); field.setRenderer(new DefaultListCellRenderer() { private static final long serialVersionUID = 1L; @Override public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { String svalue = value == null ? "" : value.toString(); String[] tab = svalue.split("-"); Locale locale = null; if (tab.length == 1) { locale = new Locale(tab[0]); } else if (tab.length == 2) { locale = new Locale(tab[0], tab[1]); } else if (tab.length == 3) { locale = new Locale(tab[0], tab[1], tab[2]); } String displayValue = svalue; if (locale != null) { displayValue = locale.getDisplayName(); } return super.getListCellRendererComponent(list, displayValue, index, isSelected, cellHasFocus); } }); return field; } }