fix(gui): validate extensions list in file dialog (PR #2515)
* fix(gui): fixed export file without extensions (close #2514) * don't add null extensions --------- Co-authored-by: Skylot <118523+skylot@users.noreply.github.com>
This commit is contained in:
@@ -8,6 +8,7 @@ import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.swing.JDialog;
|
||||
import javax.swing.JFileChooser;
|
||||
@@ -15,6 +16,7 @@ import javax.swing.JOptionPane;
|
||||
import javax.swing.UIManager;
|
||||
|
||||
import jadx.api.plugins.utils.CommonFileUtils;
|
||||
import jadx.core.utils.StringUtils;
|
||||
import jadx.core.utils.Utils;
|
||||
import jadx.core.utils.files.FileUtils;
|
||||
import jadx.gui.ui.MainWindow;
|
||||
@@ -42,8 +44,13 @@ class CustomFileChooser extends JFileChooser {
|
||||
setAcceptAllFileFilterUsed(true);
|
||||
List<String> fileExtList = data.getFileExtList();
|
||||
if (Utils.notEmpty(fileExtList)) {
|
||||
String description = NLS.str("file_dialog.supported_files") + ": (" + Utils.listToString(fileExtList) + ')';
|
||||
setFileFilter(new FileNameMultiExtensionFilter(description, fileExtList.toArray(new String[0])));
|
||||
List<String> validFileExtList = fileExtList.stream()
|
||||
.filter(StringUtils::notBlank)
|
||||
.collect(Collectors.toList());
|
||||
if (Utils.notEmpty(validFileExtList)) {
|
||||
String description = NLS.str("file_dialog.supported_files") + ": (" + Utils.listToString(validFileExtList) + ')';
|
||||
setFileFilter(new FileNameMultiExtensionFilter(description, validFileExtList.toArray(new String[0])));
|
||||
}
|
||||
}
|
||||
if (data.getSelectedFile() != null) {
|
||||
setSelectedFile(data.getSelectedFile().toFile());
|
||||
|
||||
@@ -23,7 +23,7 @@ public class FileDialogWrapper {
|
||||
|
||||
private boolean isOpen;
|
||||
private String title;
|
||||
private List<String> fileExtList;
|
||||
private List<String> fileExtList = new ArrayList<>();
|
||||
private int selectionMode = JFileChooser.FILES_AND_DIRECTORIES;
|
||||
private @Nullable Path currentDir;
|
||||
private @Nullable Path selectedFile;
|
||||
|
||||
@@ -67,7 +67,9 @@ public class JResourcePopupMenu extends JPopupMenu {
|
||||
String extension = CommonFileUtils.getFileExtension(resource.getName());
|
||||
|
||||
FileDialogWrapper fileDialog = new FileDialogWrapper(mainWindow, FileOpenMode.EXPORT_NODE);
|
||||
fileDialog.setFileExtList(Collections.singletonList(extension));
|
||||
if (extension != null) {
|
||||
fileDialog.setFileExtList(Collections.singletonList(extension));
|
||||
}
|
||||
Path currentDir = fileDialog.getCurrentDir();
|
||||
if (currentDir != null) {
|
||||
fileDialog.setSelectedFile(currentDir.resolve(resource.getName()));
|
||||
|
||||
Reference in New Issue
Block a user