• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

jiangxincode / ApkToolBoxGUI / #1114

26 Jul 2025 12:05PM UTC coverage: 3.079% (+0.002%) from 3.077%
#1114

push

jiangxincode
fix #543: add error tips

0 of 23 new or added lines in 8 files covered. (0.0%)

1 existing line in 1 file now uncovered.

236 of 7664 relevant lines covered (3.08%)

0.03 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/src/main/java/edu/jiangxin/apktoolbox/help/settings/LookAndFeelPanel.java
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.ArrayUtils;
6
import org.apache.commons.lang3.StringUtils;
7

8
import javax.swing.*;
9
import java.awt.*;
10
import java.awt.event.ActionEvent;
11
import java.awt.event.ActionListener;
12

13
public class LookAndFeelPanel extends EasyChildTabbedPanel {
×
14

15
    private JPanel optionPanel;
16

17
    private JComboBox<String> typeComboBox;
18

19
    private JPanel operationPanel;
20

21
    static {
22
        // Avoid install duplicated Look And Feel, we install them in static block
23
        UIManager.installLookAndFeel("Flat Light", "com.formdev.flatlaf.FlatLightLaf");
×
24
        UIManager.installLookAndFeel("Flat Dark", "com.formdev.flatlaf.FlatDarkLaf");
×
25
        UIManager.installLookAndFeel("Flat IntelliJ", "com.formdev.flatlaf.FlatIntelliJLaf");
×
26
        UIManager.installLookAndFeel("Flat Darcula", "com.formdev.flatlaf.FlatDarculaLaf");
×
27
    }
×
28

29
    @Override
30
    public void createUI() {
31
        BoxLayout boxLayout = new BoxLayout(this, BoxLayout.Y_AXIS);
×
32
        setLayout(boxLayout);
×
33

34
        createOptionPanel();
×
35
        add(optionPanel);
×
36

37
        add(Box.createVerticalStrut(Constants.DEFAULT_Y_BORDER));
×
38

39
        createOperationPanel();
×
40
        add(operationPanel);
×
41

42
        add(Box.createVerticalStrut(15 * Constants.DEFAULT_Y_BORDER));
×
43
    }
×
44

45
    private void createOptionPanel() {
46
        optionPanel = new JPanel();
×
47
        optionPanel.setLayout(new BoxLayout(optionPanel, BoxLayout.X_AXIS));
×
48

49
        JLabel typeLabel = new JLabel("Type:");
×
50
        typeComboBox = new JComboBox<>();
×
NEW
51
        typeComboBox.setMaximumSize(new Dimension(Constants.DEFAULT_COMBOBOX_WIDTH, Constants.DEFAULT_COMBOBOX_HEIGHT));
×
52

53
        UIManager.LookAndFeelInfo[] lookAndFeelInfos = UIManager.getInstalledLookAndFeels();
×
54
        if (ArrayUtils.isEmpty(lookAndFeelInfos)) {
×
55
            typeComboBox.setEnabled(false);
×
56
        } else {
57
            typeComboBox.setEnabled(true);
×
58
            String className = conf.getString("look.and.feel.class.name");
×
59
            for (UIManager.LookAndFeelInfo info : lookAndFeelInfos) {
×
60
                typeComboBox.addItem(info.getName());
×
61
                if (StringUtils.equals(className, info.getClassName())) {
×
62
                    typeComboBox.setSelectedItem(info.getName());
×
63
                }
64
            }
65
        }
66

67
        optionPanel.add(typeLabel);
×
68
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
69
        optionPanel.add(typeComboBox);
×
70
    }
×
71

72
    private void createOperationPanel() {
73
        operationPanel = new JPanel();
×
74
        operationPanel.setLayout(new BoxLayout(operationPanel, BoxLayout.X_AXIS));
×
75

76
        JButton applyButton = new JButton("Apply");
×
77
        applyButton.addActionListener(new ApplyButtonActionListener());
×
78

79
        operationPanel.add(applyButton);
×
80
    }
×
81

82
    private final class ApplyButtonActionListener implements ActionListener {
×
83
        @Override
84
        public void actionPerformed(ActionEvent actionEvent) {
85
            String name = (String) typeComboBox.getSelectedItem();
×
86
            String className = getLookAndFeelClassNameFromName(name);
×
87
            if (className == null) {
×
88
                logger.warn("className is null");
×
89
                return;
×
90
            }
91
            conf.setProperty("look.and.feel.class.name", className);
×
92
            try {
93
                UIManager.setLookAndFeel(className);
×
94
            } catch (UnsupportedLookAndFeelException | ClassNotFoundException | InstantiationException | IllegalAccessException e) {
×
95
                logger.error("setLookAndFeel failed, use default instead", e);
×
96
            }
×
97
            SwingUtilities.updateComponentTreeUI(getFrame());
×
98
            getFrame().refreshSizeAndLocation();
×
99
        }
×
100
    }
101

102
    private String getLookAndFeelClassNameFromName(String name) {
103
        UIManager.LookAndFeelInfo[] lookAndFeelInfos = UIManager.getInstalledLookAndFeels();
×
104
        for (UIManager.LookAndFeelInfo info : lookAndFeelInfos) {
×
105
            if (StringUtils.equals(name, info.getName())) {
×
106
                return info.getClassName();
×
107
            }
108
        }
109
        return null;
×
110
    }
111
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc