diff --git a/compiled/FileMerger.jar b/compiled/FileMerger.jar index 9656649..c827712 100644 Binary files a/compiled/FileMerger.jar and b/compiled/FileMerger.jar differ diff --git a/src/FileMergerApp.java b/src/FileMergerApp.java index fd63297..bb720cd 100644 --- a/src/FileMergerApp.java +++ b/src/FileMergerApp.java @@ -26,13 +26,16 @@ public class FileMergerApp extends JFrame { textArea.setEditable(false); JButton selectButton = new JButton("Select"); + JButton selectAllButton = new JButton("SelectAll"); JButton mergeButton = new JButton("Merge"); selectButton.addActionListener(e -> selectFiles()); + selectAllButton.addActionListener(e -> selectAllFiles()); mergeButton.addActionListener(e -> mergeFiles()); JPanel buttonPanel = new JPanel(); buttonPanel.add(selectButton); + buttonPanel.add(selectAllButton); buttonPanel.add(mergeButton); add(buttonPanel, BorderLayout.NORTH); @@ -67,6 +70,57 @@ public class FileMergerApp extends JFrame { textArea.append(System.lineSeparator()); } } + + private void selectAllFiles() { + JFileChooser chooser = new JFileChooser(); + + if (lastDirectory != null) { + chooser.setCurrentDirectory(lastDirectory); + } + + chooser.setMultiSelectionEnabled(false); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + + int result = chooser.showOpenDialog(this); + if (result != JFileChooser.APPROVE_OPTION) { + return; + } + + File selectedDir = chooser.getSelectedFile(); + if (selectedDir == null || !selectedDir.isDirectory()) { + return; + } + + lastDirectory = selectedDir; + + List files = new ArrayList<>(); + collectFilesRecursively(selectedDir, files); + + if (files.isEmpty()) { + return; + } + + for (File file : files) { + selectedFiles.add(file); + textArea.append(file.getAbsolutePath()); + textArea.append(System.lineSeparator()); + } + } + + private void collectFilesRecursively(File dir, List result) { + File[] entries = dir.listFiles(); + if (entries == null) { + return; + } + + for (File entry : entries) { + if (entry.isDirectory()) { + collectFilesRecursively(entry, result); + } else { + result.add(entry); + } + } + } private void mergeFiles() { if (selectedFiles.isEmpty()) {