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

jiangxincode / ApkToolBoxGUI / #626

02 Mar 2024 03:25AM UTC coverage: 3.232%. Remained the same
#626

push

jiangxincode
Merge branch 'master' of https://github.com/jiangxincode/ApkToolBoxGUI

240 of 7425 relevant lines covered (3.23%)

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/file/EncodeConvertPanel.java
1
package edu.jiangxin.apktoolbox.file;
2

3
import edu.jiangxin.apktoolbox.file.core.EncoderConvert;
4
import edu.jiangxin.apktoolbox.file.core.EncoderDetector;
5
import edu.jiangxin.apktoolbox.swing.extend.AutoCompleteComboBox;
6
import edu.jiangxin.apktoolbox.swing.extend.EasyPanel;
7
import edu.jiangxin.apktoolbox.swing.extend.FileListPanel;
8
import edu.jiangxin.apktoolbox.utils.Constants;
9
import org.apache.commons.io.FileUtils;
10
import org.apache.commons.lang3.StringUtils;
11

12
import javax.swing.*;
13
import java.awt.*;
14
import java.awt.event.*;
15
import java.io.File;
16
import java.io.IOException;
17
import java.nio.charset.Charset;
18
import java.util.ArrayList;
19
import java.util.List;
20
import java.util.Set;
21
import java.util.TreeSet;
22

23
/**
24
 * @author jiangxin
25
 * @author 2019-04-12
26
 *
27
 */
28
public class EncodeConvertPanel extends EasyPanel {
29
    private static final long serialVersionUID = 1L;
30

31
    private FileListPanel srcPanel;
32

33
    private JPanel optionPanel;
34

35
    private JTextField suffixTextField;
36

37
    private JCheckBox autoDetectCheckBox;
38

39
    private AutoCompleteComboBox<String> fromComboBox;
40

41
    private JCheckBox recursiveCheckBox;
42

43
    private AutoCompleteComboBox<String> toComboBox;
44

45
    private JPanel operationPanel;
46

47
    public EncodeConvertPanel() throws HeadlessException {
48
        super();
×
49
    }
×
50

51
    @Override
52
    public void initUI() {
53
        setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
×
54

55
        createSrcPanel();
×
56
        add(srcPanel);
×
57
        add(Box.createVerticalStrut(Constants.DEFAULT_Y_BORDER));
×
58

59
        createOptionPanel();
×
60
        add(optionPanel);
×
61
        add(Box.createVerticalStrut(Constants.DEFAULT_Y_BORDER));
×
62

63
        createOperationPanel();
×
64
        add(operationPanel);
×
65
    }
×
66

67
    private void createSrcPanel() {
68
        srcPanel = new FileListPanel();
×
69
    }
×
70

71
    private void createOptionPanel() {
72
        optionPanel = new JPanel();
×
73
        optionPanel.setLayout(new BoxLayout(optionPanel, BoxLayout.X_AXIS));
×
74

75
        JLabel suffixLabel = new JLabel("Suffix:");
×
76
        optionPanel.add(suffixLabel);
×
77
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
78

79
        suffixTextField = new JTextField();
×
80
        suffixTextField.setToolTipText("an array of extensions, ex. {\"java\",\"xml\"}. If this parameter is empty, all files are returned.");
×
81
        suffixTextField.setText(conf.getString("encodeconvert.suffix"));
×
82
        optionPanel.add(suffixTextField);
×
83
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
84

85
        recursiveCheckBox = new JCheckBox("Recursive");
×
86
        recursiveCheckBox.setSelected(true);
×
87
        optionPanel.add(recursiveCheckBox);
×
88
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
89

90
        JLabel fromLabel = new JLabel("From:");
×
91
        optionPanel.add(fromLabel);
×
92
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
93

94
        fromComboBox = new AutoCompleteComboBox<String>();
×
95
        fromComboBox.setEnabled(false);
×
96
        optionPanel.add(fromComboBox);
×
97
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
98

99
        autoDetectCheckBox = new JCheckBox("Auto Detect");
×
100
        autoDetectCheckBox.setSelected(true);
×
101
        autoDetectCheckBox.addItemListener(e -> fromComboBox.setEnabled(!(e.getStateChange() == ItemEvent.SELECTED)));
×
102
        optionPanel.add(autoDetectCheckBox);
×
103
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
104

105
        JLabel toLabel = new JLabel("To:");
×
106
        optionPanel.add(toLabel);
×
107
        optionPanel.add(Box.createHorizontalStrut(Constants.DEFAULT_X_BORDER));
×
108

109
        toComboBox = new AutoCompleteComboBox<String>();
×
110
        toComboBox.setSelectedItem(conf.getString("encodeconvert.to"));
×
111
        optionPanel.add(toComboBox);
×
112

113
        for (String charset : Charset.availableCharsets().keySet()) {
×
114
            fromComboBox.addItem(charset);
×
115
            toComboBox.addItem(charset);
×
116
        }
×
117
    }
×
118

119
    private void createOperationPanel() {
120
        operationPanel = new JPanel();
×
121
        operationPanel.setLayout(new BoxLayout(operationPanel, BoxLayout.X_AXIS));
×
122
        JButton convertButton = new JButton("Convert");
×
123
        convertButton.addActionListener(new ConvertButtonActionListener());
×
124

125
        operationPanel.add(convertButton);
×
126
    }
×
127

128
    private class ConvertButtonActionListener implements ActionListener {
×
129
        @Override
130
        public void actionPerformed(ActionEvent e) {
131
            conf.setProperty("encodeconvert.suffix", suffixTextField.getText());
×
132
            conf.setProperty("encodeconvert.to", toComboBox.getSelectedItem().toString());
×
133

134
            try {
135
                List<File> fileList = new ArrayList<>();
×
136
                for (File file : srcPanel.getFileList()) {
×
137
                    String[] extensions = null;
×
138
                    if (StringUtils.isNotEmpty(suffixTextField.getText())) {
×
139
                        extensions = suffixTextField.getText().split(",");
×
140
                    }
141
                    fileList.addAll(FileUtils.listFiles(file, extensions, recursiveCheckBox.isSelected()));
×
142
                }
×
143
                Set<File> fileSet = new TreeSet<>(fileList);
×
144
                fileList.clear();
×
145
                fileList.addAll(fileSet);
×
146

147
                for (File file : fileList) {
×
148
                    logger.info("process: " + file.getCanonicalPath());
×
149
                    String fromEncoder;
150
                    if (autoDetectCheckBox.isSelected()) {
×
151
                        fromEncoder = EncoderDetector.judgeFile(file.getCanonicalPath());
×
152
                    } else {
153
                        fromEncoder = fromComboBox.getSelectedItem().toString();
×
154
                    }
155
                    logger.info("from: " + fromEncoder);
×
156
                    String toEncoder = toComboBox.getSelectedItem().toString();
×
157
                    EncoderConvert.encodeFile(file.getCanonicalPath(), fromEncoder, toEncoder);
×
158
                }
×
159

160
                logger.info("convert finish");
×
161
            } catch (IOException e1) {
×
162
                logger.error("convert fail", e1);
×
163
            }
×
164
        }
×
165
    }
166
}
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