package ro.nextreports.designer.i18n.action; import java.awt.Dimension; import java.awt.GridBagConstraints; import java.awt.GridBagLayout; import java.awt.Insets; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; import javax.swing.JPanel; import ro.nextreports.designer.Globals; import ro.nextreports.designer.util.I18NSupport; import ro.nextreports.designer.util.LocaleUtil; import ro.nextreports.designer.config.Country; import ro.nextreports.designer.config.CountryRenderer; import ro.nextreports.engine.i18n.I18nLanguage; public class LanguageSelectionPanel extends JPanel { private JComboBox languagesCombo; private JCheckBox defaultCheck; private Dimension dim = new Dimension(200, 22); public LanguageSelectionPanel() { languagesCombo = new JComboBox(); languagesCombo.setMinimumSize(dim); languagesCombo.setPreferredSize(dim); for (Country c : LocaleUtil.getCountries()) { languagesCombo.addItem(c); } languagesCombo.setSelectedItem(LocaleUtil.getCountry(Globals.getConfigLocale())); languagesCombo.setRenderer(new CountryRenderer()); defaultCheck = new JCheckBox(I18NSupport.getString("languages.default")); setLayout(new GridBagLayout()); add(new JLabel(I18NSupport.getString("languages.selection")), new GridBagConstraints(0, 0, 1, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); add(languagesCombo, new GridBagConstraints(1, 0, 1, 1, 1.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.HORIZONTAL, new Insets(5, 0, 5, 5), 0, 0)); add(defaultCheck, new GridBagConstraints(0, 1, 2, 1, 0.0, 0.0, GridBagConstraints.WEST, GridBagConstraints.NONE, new Insets(5, 5, 5, 5), 0, 0)); } public I18nLanguage getLanguage() { Country c = (Country) languagesCombo.getSelectedItem(); I18nLanguage language = new I18nLanguage(c.getLanguage()+ "_" + c.getCode(), defaultCheck.isSelected()); return language; } public void setLanguage(I18nLanguage language) { Country country = getCountry(language); if (country != null) { languagesCombo.setSelectedItem(country); } defaultCheck.setSelected(language.isDefault()); } public Country getCountry(I18nLanguage language) { for (Country c : LocaleUtil.getCountries()) { if (language.getName().equals(c.getLanguage()+"_"+c.getCode())) { return c; } } return null; } }