package org.limewire.ui.swing.components;
import java.awt.Component;
import java.awt.Font;
import java.util.Locale;
import javax.swing.DefaultComboBoxModel;
import javax.swing.DefaultListCellRenderer;
import javax.swing.JComboBox;
import javax.swing.JList;
import org.jdesktop.application.Resource;
import org.limewire.ui.swing.util.GuiUtils;
import org.limewire.ui.swing.util.LanguageUtils;
/**
* A ComboBox for displaying and selecting the language to translate
* text to.
*/
public class LanguageComboBox extends JComboBox {
@Resource
private Font font;
public LanguageComboBox() {
GuiUtils.assignResources(this);
setRenderer(new LocaleRenderer());
setFont(font);
Locale[] locales = LanguageUtils.getLocales(font);
// ensure that the combo box cannot be empty if something goes wrong.
if(locales.length == 0)
locales = new Locale[]{Locale.ENGLISH};
setModel(new DefaultComboBoxModel(locales));
}
private static class LocaleRenderer extends DefaultListCellRenderer {
@Override
public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean hasFocus) {
super.getListCellRendererComponent(list, value, index, isSelected, hasFocus);
if (value instanceof Locale) {
Locale locale = (Locale) value;
setText(locale.getDisplayName(locale));
} else {
setIcon(null);
}
return this;
}
}
}