1 package edu.jiangxin.apktoolbox.help.settings; 2 3 import edu.jiangxin.apktoolbox.swing.extend.EasyChildTabbedPanel; 4 import edu.jiangxin.apktoolbox.utils.Constants; 5 import org.apache.commons.lang3.StringUtils; 6 7 import javax.swing.*; 8 import java.awt.*; 9 import java.awt.event.ActionEvent; 10 import java.awt.event.ActionListener; 11 import java.util.Locale; 12 13 public class LocalePanel extends EasyChildTabbedPanel { 14 private JPanel optionPanel; 15 16 private JComboBox<String> typeComboBox; 17 18 private JPanel operationPanel; 19 20 private static final String[] SUPPORTED_LANGUAGES = {Locale.CHINESE.getLanguage(), Locale.ENGLISH.getLanguage()}; 21 22 @Override 23 public void createUI() { 24 BoxLayout boxLayout = new BoxLayout(this, BoxLayout.Y_AXIS); 25 setLayout(boxLayout); 26 27 createOptionPanel(); 28 add(optionPanel); 29 30 add(Box.createVerticalStrut(Constants.DEFAULT_Y_BORDER)); 31 32 createOperationPanel(); 33 add(operationPanel); 34 35 add(Box.createVerticalStrut(15 * Constants.DEFAULT_Y_BORDER)); 36 } 37 38 private void createOptionPanel() { 39 optionPanel = new JPanel(); 40 optionPanel.setLayout(new BoxLayout(optionPanel, BoxLayout.X_AXIS)); 41 42 JLabel typeLabel = new JLabel("Locale:"); 43 typeComboBox = new JComboBox<>(); 44 typeComboBox.setMaximumSize(new Dimension(Constants.DEFAULT_COMBOBOX_WIDTH, Constants.DEFAULT_COMBOBOX_HEIGHT)); 45 46 String currentLocaleLanguage = conf.getString("locale.language"); 47 if (StringUtils.isEmpty(currentLocaleLanguage)) { 48 currentLocaleLanguage = Locale.ENGLISH.getLanguage(); 49 conf.setProperty("locale.language", currentLocaleLanguage); 50 } 51 52 for (String language : SUPPORTED_LANGUAGES) { 53 typeComboBox.addItem(language); 54 if (StringUtils.equals(currentLocaleLanguage, language)) { 55 typeComboBox.setSelectedItem(language); 56 } 57 } 58 59 optionPanel.add(typeLabel); 60 optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER)); 61 optionPanel.add(typeComboBox); 62 } 63 64 private void createOperationPanel() { 65 operationPanel = new JPanel(); 66 operationPanel.setLayout(new BoxLayout(operationPanel, BoxLayout.X_AXIS)); 67 68 JButton applyButton = new JButton("Apply"); 69 applyButton.addActionListener(new ApplyButtonActionListener()); 70 71 operationPanel.add(applyButton); 72 } 73 74 private final class ApplyButtonActionListener implements ActionListener { 75 @Override 76 public void actionPerformed(ActionEvent e) { 77 String language = (String)typeComboBox.getSelectedItem(); 78 if (StringUtils.isNotEmpty(language)) { 79 conf.setProperty("locale.language", language); 80 JOptionPane.showMessageDialog(LocalePanel.this, "Setting locale successfully, restart the program please"); 81 } 82 } 83 } 84 }