diff --git a/jadx-gui/src/main/java/jadx/gui/ui/filedialog/CustomFileChooser.java b/jadx-gui/src/main/java/jadx/gui/ui/filedialog/CustomFileChooser.java index b5fc19cd9..16224e051 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/filedialog/CustomFileChooser.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/filedialog/CustomFileChooser.java @@ -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 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 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()); diff --git a/jadx-gui/src/main/java/jadx/gui/ui/filedialog/FileDialogWrapper.java b/jadx-gui/src/main/java/jadx/gui/ui/filedialog/FileDialogWrapper.java index cf0f8fea9..4a6381fdd 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/filedialog/FileDialogWrapper.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/filedialog/FileDialogWrapper.java @@ -23,7 +23,7 @@ public class FileDialogWrapper { private boolean isOpen; private String title; - private List fileExtList; + private List fileExtList = new ArrayList<>(); private int selectionMode = JFileChooser.FILES_AND_DIRECTORIES; private @Nullable Path currentDir; private @Nullable Path selectedFile; diff --git a/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JResourcePopupMenu.java b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JResourcePopupMenu.java index b618d7f1e..fd5db53a3 100644 --- a/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JResourcePopupMenu.java +++ b/jadx-gui/src/main/java/jadx/gui/ui/popupmenu/JResourcePopupMenu.java @@ -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()));