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