From 935c7eda3ea8be177f7643b60d7ceeb279c9c5ad Mon Sep 17 00:00:00 2001 From: Seelenoede Date: Tue, 6 Aug 2019 15:26:32 +0200 Subject: [PATCH 1/5] Added a first rudimentary file filter --- .../getyourfilesoutthere/MainForm.java | 62 +++++++++++++++---- .../getyourfilesoutthere/SettingsFilter.java | 18 ++++++ 2 files changed, 69 insertions(+), 11 deletions(-) create mode 100644 src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java diff --git a/src/eu/seelenoede/getyourfilesoutthere/MainForm.java b/src/eu/seelenoede/getyourfilesoutthere/MainForm.java index 7bdca1c..1d491b2 100644 --- a/src/eu/seelenoede/getyourfilesoutthere/MainForm.java +++ b/src/eu/seelenoede/getyourfilesoutthere/MainForm.java @@ -6,6 +6,7 @@ import java.nio.file.FileSystems; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.StandardCopyOption; +import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JTextField; @@ -22,6 +23,8 @@ import java.awt.event.ActionEvent; import java.awt.Color; import javax.swing.JFileChooser; +import javax.swing.BoxLayout; +import java.awt.FlowLayout; public class MainForm { @@ -33,6 +36,12 @@ public class MainForm { private JButton btnBrowse; private File[] dirs; private JLabel lblDone; + static ArrayList extensions; + private SettingsFilter filter; + private JPanel panel; + private JPanel panel_settings; + private JLabel lblSettings; + private JTextField textField_extensions; /** * Launch the application. @@ -54,6 +63,8 @@ public class MainForm { * Create the application. */ public MainForm() { + filter = new SettingsFilter(); + extensions = new ArrayList(); initialize(); } @@ -72,9 +83,13 @@ public class MainForm { frmGetYourFiles.setLocationRelativeTo(null); frmGetYourFiles.getContentPane().setLayout(new BorderLayout(0, 0)); + panel = new JPanel(); + frmGetYourFiles.getContentPane().add(panel, BorderLayout.NORTH); + panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); + JPanel panel_path = new JPanel(); + panel.add(panel_path); panel_path.setBackground(Color.WHITE); - frmGetYourFiles.getContentPane().add(panel_path, BorderLayout.NORTH); lblPath = new JLabel("Path: "); panel_path.add(lblPath); @@ -109,16 +124,30 @@ public class MainForm { }); panel_path.add(btnBrowse); + panel_settings = new JPanel(); + panel_settings.setBackground(Color.WHITE); + panel.add(panel_settings); + panel_settings.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); + + lblSettings = new JLabel("Extensions: "); + panel_settings.add(lblSettings); + + textField_extensions = new JTextField(); + panel_settings.add(textField_extensions); + textField_extensions.setColumns(35); + JButton btnStart = new JButton("Start"); + frmGetYourFiles.getContentPane().add(btnStart, BorderLayout.SOUTH); btnStart.setSelected(true); btnStart.setBackground(Color.LIGHT_GRAY); frmGetYourFiles.getRootPane().setDefaultButton(btnStart); - + btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Thread noBlock = new Thread() { public void run() { + setExtensionSettings(); resetElements(); extractFiles(); } @@ -131,27 +160,29 @@ public class MainForm { } }); - frmGetYourFiles.getContentPane().add(btnStart, BorderLayout.SOUTH); - panel_progress = new JPanel(); panel_progress.setBackground(Color.WHITE); frmGetYourFiles.getContentPane().add(panel_progress, BorderLayout.CENTER); - + lblDone = new JLabel(""); panel_progress.add(lblDone); } - + private void extractFiles() { - + for(File dir:dirs) { try { String parentDir = dir.getCanonicalFile().getParent(); - + File[] files; - files = dir.listFiles(); + if(MainForm.extensions.size() == 1 && MainForm.extensions.get(0).equals("")) + files = dir.listFiles(); + else + files = dir.listFiles(filter); + for(File file:files) { Path target = FileSystems.getDefault().getPath(parentDir + "\\" + file.getName()); - + Files.move(file.toPath(), target, StandardCopyOption.REPLACE_EXISTING); } } @@ -171,5 +202,14 @@ public class MainForm { //progressBar_Extraction.setValue(0); //progressBar_Zip.setValue(0); } - + + private void setExtensionSettings() { + String[] extensions = textField_extensions.getText().split(","); + if (extensions.length == 0) + return; + for(String extension:extensions) { + MainForm.extensions.add(extension.trim()); + } + } + } \ No newline at end of file diff --git a/src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java b/src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java new file mode 100644 index 0000000..ea1095e --- /dev/null +++ b/src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java @@ -0,0 +1,18 @@ +package eu.seelenoede.getyourfilesoutthere; + +import java.io.File; +import java.io.FileFilter; + +public class SettingsFilter implements FileFilter { + + @Override + public boolean accept(File pathname) { + String filePath = pathname.getAbsolutePath(); + String fileExtension = filePath.substring(filePath.lastIndexOf('.') + 1); + + if(MainForm.extensions.contains(fileExtension)) + return true; + return false; + } + +} From cb712e1b22176e0a869877d75287f43e28ee237d Mon Sep 17 00:00:00 2001 From: Seelenoede Date: Tue, 6 Aug 2019 15:29:51 +0200 Subject: [PATCH 2/5] Added small manual to readme --- README.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 54ffec2..69fd4b5 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,8 @@ Extracts files from one or multiple folders and moves them to the parent folder. +How to use the extension filter: +Add file extensions into the text field and separate extensions with comma. +If you didn't write anything or whitespaces the program will extract all files. + TODOS: -- improve GUI -- add file filter \ No newline at end of file +- improve GUI \ No newline at end of file From 666db013ce6237c88cd89727b4c6fbbef16dc230 Mon Sep 17 00:00:00 2001 From: Seelenoede Date: Tue, 6 Aug 2019 15:31:55 +0200 Subject: [PATCH 3/5] Add new release --- releases/GetYourFilesOutThere 0.2.jar | Bin 0 -> 8527 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 releases/GetYourFilesOutThere 0.2.jar diff --git a/releases/GetYourFilesOutThere 0.2.jar b/releases/GetYourFilesOutThere 0.2.jar new file mode 100644 index 0000000000000000000000000000000000000000..c5aa1cd71118fb5f009328c4fcf24f967434858a GIT binary patch literal 8527 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 Ciq0DV literal 0 HcmV?d00001 From c14054b1709020f1e0ce4af2f98915b1c1a89294 Mon Sep 17 00:00:00 2001 From: Seelenoede Date: Fri, 16 Aug 2019 14:19:27 +0200 Subject: [PATCH 4/5] Separated GUI from Logic. No new features --- .../getyourfilesoutthere/Engine.java | 55 +++++++ .../getyourfilesoutthere/MainForm.java | 138 ++++++------------ .../getyourfilesoutthere/SettingsFilter.java | 9 +- 3 files changed, 108 insertions(+), 94 deletions(-) create mode 100644 src/eu/seelenoede/getyourfilesoutthere/Engine.java diff --git a/src/eu/seelenoede/getyourfilesoutthere/Engine.java b/src/eu/seelenoede/getyourfilesoutthere/Engine.java new file mode 100644 index 0000000..39cc175 --- /dev/null +++ b/src/eu/seelenoede/getyourfilesoutthere/Engine.java @@ -0,0 +1,55 @@ +package eu.seelenoede.getyourfilesoutthere; + +import java.io.File; +import java.io.IOException; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardCopyOption; + +public class Engine { + + private SettingsFilter filter; + + public Engine() { + + } + + /** + * Extract files from the directories + * + * @author Seelenoede + */ + protected void extractFiles(File[] dirs) { + + for(File dir:dirs) { + try { + String parentDir = dir.getCanonicalFile().getParent(); + + File[] files; + if(filter.extensions.size() == 1 && filter.extensions.get(0).equals("")) + files = dir.listFiles(); + else + files = dir.listFiles(filter); + + for(File file:files) { + Path target = FileSystems.getDefault().getPath(parentDir + "\\" + file.getName()); + + Files.move(file.toPath(), target, StandardCopyOption.REPLACE_EXISTING); + } + } + catch (IOException e) { + e.printStackTrace(); + } + } + } + + protected void setExtensionSettings(String extensionString) { + String[] extensions = extensionString.split(","); + if (extensions.length == 0) + return; + for(String extension:extensions) { + filter.extensions.add(extension.trim()); + } + } +} diff --git a/src/eu/seelenoede/getyourfilesoutthere/MainForm.java b/src/eu/seelenoede/getyourfilesoutthere/MainForm.java index 1d491b2..11121a6 100644 --- a/src/eu/seelenoede/getyourfilesoutthere/MainForm.java +++ b/src/eu/seelenoede/getyourfilesoutthere/MainForm.java @@ -1,12 +1,6 @@ package eu.seelenoede.getyourfilesoutthere; import java.io.File; -import java.io.IOException; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; -import java.nio.file.StandardCopyOption; -import java.util.ArrayList; import javax.swing.JFrame; import javax.swing.JTextField; @@ -30,19 +24,15 @@ public class MainForm { private JFrame frmGetYourFiles; private JTextField textField; - private JLabel lblPath; - private boolean alreadyRunning; - private JPanel panel_progress; - private JButton btnBrowse; - private File[] dirs; - private JLabel lblDone; - static ArrayList extensions; - private SettingsFilter filter; - private JPanel panel; - private JPanel panel_settings; - private JLabel lblSettings; private JTextField textField_extensions; + private JButton btnBrowse; + private JButton btnStart; + private JLabel lblDone; + private boolean alreadyRunning; + private File[] dirs; + private Engine engine; + /** * Launch the application. */ @@ -63,9 +53,9 @@ public class MainForm { * Create the application. */ public MainForm() { - filter = new SettingsFilter(); - extensions = new ArrayList(); + engine = new Engine(); initialize(); + initActions(); } /** @@ -83,7 +73,7 @@ public class MainForm { frmGetYourFiles.setLocationRelativeTo(null); frmGetYourFiles.getContentPane().setLayout(new BorderLayout(0, 0)); - panel = new JPanel(); + JPanel panel = new JPanel(); frmGetYourFiles.getContentPane().add(panel, BorderLayout.NORTH); panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); @@ -91,7 +81,7 @@ public class MainForm { panel.add(panel_path); panel_path.setBackground(Color.WHITE); - lblPath = new JLabel("Path: "); + JLabel lblPath = new JLabel("Path: "); panel_path.add(lblPath); textField = new JTextField(); @@ -101,6 +91,36 @@ public class MainForm { btnBrowse = new JButton("Browse"); btnBrowse.setBackground(Color.LIGHT_GRAY); + panel_path.add(btnBrowse); + + JPanel panel_settings = new JPanel(); + panel_settings.setBackground(Color.WHITE); + panel.add(panel_settings); + panel_settings.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); + + JLabel lblSettings = new JLabel("Extensions: "); + panel_settings.add(lblSettings); + + textField_extensions = new JTextField(); + panel_settings.add(textField_extensions); + textField_extensions.setColumns(35); + + btnStart = new JButton("Start"); + frmGetYourFiles.getContentPane().add(btnStart, BorderLayout.SOUTH); + btnStart.setSelected(true); + btnStart.setBackground(Color.LIGHT_GRAY); + + frmGetYourFiles.getRootPane().setDefaultButton(btnStart); + + JPanel panel_progress = new JPanel(); + panel_progress.setBackground(Color.WHITE); + frmGetYourFiles.getContentPane().add(panel_progress, BorderLayout.CENTER); + + lblDone = new JLabel(""); + panel_progress.add(lblDone); + } + + private void initActions() { btnBrowse.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { if(alreadyRunning){ @@ -122,34 +142,14 @@ public class MainForm { } } }); - panel_path.add(btnBrowse); - - panel_settings = new JPanel(); - panel_settings.setBackground(Color.WHITE); - panel.add(panel_settings); - panel_settings.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); - - lblSettings = new JLabel("Extensions: "); - panel_settings.add(lblSettings); - - textField_extensions = new JTextField(); - panel_settings.add(textField_extensions); - textField_extensions.setColumns(35); - - JButton btnStart = new JButton("Start"); - frmGetYourFiles.getContentPane().add(btnStart, BorderLayout.SOUTH); - btnStart.setSelected(true); - btnStart.setBackground(Color.LIGHT_GRAY); - - frmGetYourFiles.getRootPane().setDefaultButton(btnStart); - + btnStart.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent arg0) { Thread noBlock = new Thread() { public void run() { - setExtensionSettings(); + engine.setExtensionSettings(textField_extensions.getText()); resetElements(); - extractFiles(); + engine.extractFiles(dirs); } }; if ((!alreadyRunning) & (dirs!=null)) { @@ -159,57 +159,9 @@ public class MainForm { } }); - - panel_progress = new JPanel(); - panel_progress.setBackground(Color.WHITE); - frmGetYourFiles.getContentPane().add(panel_progress, BorderLayout.CENTER); - - lblDone = new JLabel(""); - panel_progress.add(lblDone); } - - private void extractFiles() { - - for(File dir:dirs) { - try { - String parentDir = dir.getCanonicalFile().getParent(); - - File[] files; - if(MainForm.extensions.size() == 1 && MainForm.extensions.get(0).equals("")) - files = dir.listFiles(); - else - files = dir.listFiles(filter); - - for(File file:files) { - Path target = FileSystems.getDefault().getPath(parentDir + "\\" + file.getName()); - - Files.move(file.toPath(), target, StandardCopyOption.REPLACE_EXISTING); - } - } - catch (IOException e) { - e.printStackTrace(); - } - } - lblDone.setText("Done"); - alreadyRunning = false; - } - + private void resetElements() { - //lblExtract.setText(""); - //lblZip.setText(""); lblDone.setText(""); - - //progressBar_Extraction.setValue(0); - //progressBar_Zip.setValue(0); } - - private void setExtensionSettings() { - String[] extensions = textField_extensions.getText().split(","); - if (extensions.length == 0) - return; - for(String extension:extensions) { - MainForm.extensions.add(extension.trim()); - } - } - } \ No newline at end of file diff --git a/src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java b/src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java index ea1095e..f331dab 100644 --- a/src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java +++ b/src/eu/seelenoede/getyourfilesoutthere/SettingsFilter.java @@ -2,15 +2,22 @@ package eu.seelenoede.getyourfilesoutthere; import java.io.File; import java.io.FileFilter; +import java.util.ArrayList; public class SettingsFilter implements FileFilter { + + ArrayList extensions; + SettingsFilter() { + extensions = new ArrayList(); + } + @Override public boolean accept(File pathname) { String filePath = pathname.getAbsolutePath(); String fileExtension = filePath.substring(filePath.lastIndexOf('.') + 1); - if(MainForm.extensions.contains(fileExtension)) + if(extensions.contains(fileExtension)) return true; return false; } From bf24ecdab09e3b7772b34bac2b87b264d83092cd Mon Sep 17 00:00:00 2001 From: Seelenoede Date: Wed, 21 Aug 2019 15:00:31 +0200 Subject: [PATCH 5/5] - Fixed things GUIn the Engine class - changed from Swing GUI to JavaFX GUI - added release 0.3 --- releases/GetYourFilesOutThere 0.3.jar | Bin 0 -> 6909 bytes .../getyourfilesoutthere/Engine.java | 9 +- .../seelenoede/getyourfilesoutthere/GUI.fxml | 58 ++++++ .../seelenoede/getyourfilesoutthere/Main.java | 95 ++++++++++ .../getyourfilesoutthere/MainForm.java | 167 ------------------ 5 files changed, 158 insertions(+), 171 deletions(-) create mode 100644 releases/GetYourFilesOutThere 0.3.jar create mode 100644 src/eu/seelenoede/getyourfilesoutthere/GUI.fxml create mode 100644 src/eu/seelenoede/getyourfilesoutthere/Main.java delete mode 100644 src/eu/seelenoede/getyourfilesoutthere/MainForm.java diff --git a/releases/GetYourFilesOutThere 0.3.jar b/releases/GetYourFilesOutThere 0.3.jar new file mode 100644 index 0000000000000000000000000000000000000000..db0800c5e503895a268d261fb100a46914a21a63 GIT binary patch literal 6909 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 I!+rktKej6Ol>h($ literal 0 HcmV?d00001 diff --git a/src/eu/seelenoede/getyourfilesoutthere/Engine.java b/src/eu/seelenoede/getyourfilesoutthere/Engine.java index 39cc175..4371c34 100644 --- a/src/eu/seelenoede/getyourfilesoutthere/Engine.java +++ b/src/eu/seelenoede/getyourfilesoutthere/Engine.java @@ -12,7 +12,7 @@ public class Engine { private SettingsFilter filter; public Engine() { - + filter = new SettingsFilter(); } /** @@ -27,7 +27,7 @@ public class Engine { String parentDir = dir.getCanonicalFile().getParent(); File[] files; - if(filter.extensions.size() == 1 && filter.extensions.get(0).equals("")) + if(filter.extensions.size() == 0) files = dir.listFiles(); else files = dir.listFiles(filter); @@ -45,9 +45,10 @@ public class Engine { } protected void setExtensionSettings(String extensionString) { - String[] extensions = extensionString.split(","); - if (extensions.length == 0) + if(extensionString.equals("")) { return; + } + String[] extensions = extensionString.split(","); for(String extension:extensions) { filter.extensions.add(extension.trim()); } diff --git a/src/eu/seelenoede/getyourfilesoutthere/GUI.fxml b/src/eu/seelenoede/getyourfilesoutthere/GUI.fxml new file mode 100644 index 0000000..8f91c17 --- /dev/null +++ b/src/eu/seelenoede/getyourfilesoutthere/GUI.fxml @@ -0,0 +1,58 @@ + + + + + + + + + + + + + +
+ +
+ + +
diff --git a/src/eu/seelenoede/getyourfilesoutthere/Main.java b/src/eu/seelenoede/getyourfilesoutthere/Main.java new file mode 100644 index 0000000..62684e3 --- /dev/null +++ b/src/eu/seelenoede/getyourfilesoutthere/Main.java @@ -0,0 +1,95 @@ +package eu.seelenoede.getyourfilesoutthere; + +import java.io.File; +import java.io.IOException; + +import javax.swing.JFileChooser; + +import javafx.application.Application; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.control.Label; +import javafx.scene.control.TextField; +import javafx.stage.Stage; + +public class Main extends Application { + + private boolean alreadyRunning; + private File[] dirs; + private Engine engine; + + @FXML Label lblDone; + @FXML TextField textField_dirs; + @FXML TextField textField_extensions; + + @FXML + public void initialize() { + engine = new Engine(); + alreadyRunning = false; + } + + @Override + public void start(Stage primaryStage) throws IOException { + Parent root = FXMLLoader.load(getClass().getResource("GUI.fxml")); + + Scene scene = new Scene(root); + primaryStage.setTitle("Get Your Files Out There"); + primaryStage.setScene(scene); + primaryStage.show(); + } + + public static void main(String[] args) { + launch(args); + } + + @FXML + private void handleBrowseButtonAction(ActionEvent event) { + selectDirs(); + } + + @FXML + private void handleStartButtonAction(ActionEvent event) { + Thread noBlock = new Thread() { + public void run() { + engine.setExtensionSettings(textField_extensions.getText()); + resetElements(); + engine.extractFiles(dirs); + alreadyRunning = false; + lblDone.setVisible(true); + } + }; + if ((!alreadyRunning) & (dirs!=null)) { + noBlock.start(); + alreadyRunning = true; + } + } + + private void resetElements() { + lblDone.setVisible(false); + } + + private void selectDirs() { + if(alreadyRunning){ + return; + } + JFileChooser chooser = new JFileChooser(); + chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); + chooser.setMultiSelectionEnabled(true); + int val = chooser.showOpenDialog(null); + + if (val == JFileChooser.APPROVE_OPTION) { + dirs = chooser.getSelectedFiles(); + String selectedDirs = ""; + for (File dir:dirs) + { + selectedDirs = selectedDirs + "\"" + dir.getAbsolutePath() + "\"; "; + } + textField_dirs.setText(selectedDirs); + } + } + + +} diff --git a/src/eu/seelenoede/getyourfilesoutthere/MainForm.java b/src/eu/seelenoede/getyourfilesoutthere/MainForm.java deleted file mode 100644 index 11121a6..0000000 --- a/src/eu/seelenoede/getyourfilesoutthere/MainForm.java +++ /dev/null @@ -1,167 +0,0 @@ -package eu.seelenoede.getyourfilesoutthere; - -import java.io.File; - -import javax.swing.JFrame; -import javax.swing.JTextField; - -import java.awt.BorderLayout; - -import javax.swing.JPanel; -import javax.swing.JLabel; -import javax.swing.JButton; -import javax.swing.SwingUtilities; - -import java.awt.event.ActionListener; -import java.awt.event.ActionEvent; -import java.awt.Color; - -import javax.swing.JFileChooser; -import javax.swing.BoxLayout; -import java.awt.FlowLayout; - -public class MainForm { - - private JFrame frmGetYourFiles; - private JTextField textField; - private JTextField textField_extensions; - private JButton btnBrowse; - private JButton btnStart; - private JLabel lblDone; - - private boolean alreadyRunning; - private File[] dirs; - private Engine engine; - - /** - * Launch the application. - */ - public static void main(String[] args) { - SwingUtilities.invokeLater(new Runnable() { - public void run() { - try { - MainForm window = new MainForm(); - window.frmGetYourFiles.setVisible(true); - } catch (Exception e) { - e.printStackTrace(); - } - } - }); - } - - /** - * Create the application. - */ - public MainForm() { - engine = new Engine(); - initialize(); - initActions(); - } - - /** - * Initialize the contents of the frame. - */ - private void initialize() { - alreadyRunning = false; - frmGetYourFiles = new JFrame("Get Your Files Out There"); - frmGetYourFiles.setTitle("Get Your Files Out There"); - frmGetYourFiles.getContentPane().setBackground(Color.LIGHT_GRAY); - frmGetYourFiles.setResizable(false); - frmGetYourFiles.setBackground(Color.WHITE); - frmGetYourFiles.setBounds(100, 100, 489, 150); - frmGetYourFiles.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frmGetYourFiles.setLocationRelativeTo(null); - frmGetYourFiles.getContentPane().setLayout(new BorderLayout(0, 0)); - - JPanel panel = new JPanel(); - frmGetYourFiles.getContentPane().add(panel, BorderLayout.NORTH); - panel.setLayout(new BoxLayout(panel, BoxLayout.Y_AXIS)); - - JPanel panel_path = new JPanel(); - panel.add(panel_path); - panel_path.setBackground(Color.WHITE); - - JLabel lblPath = new JLabel("Path: "); - panel_path.add(lblPath); - - textField = new JTextField(); - textField.setEditable(false); - panel_path.add(textField); - textField.setColumns(30); - - btnBrowse = new JButton("Browse"); - btnBrowse.setBackground(Color.LIGHT_GRAY); - panel_path.add(btnBrowse); - - JPanel panel_settings = new JPanel(); - panel_settings.setBackground(Color.WHITE); - panel.add(panel_settings); - panel_settings.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5)); - - JLabel lblSettings = new JLabel("Extensions: "); - panel_settings.add(lblSettings); - - textField_extensions = new JTextField(); - panel_settings.add(textField_extensions); - textField_extensions.setColumns(35); - - btnStart = new JButton("Start"); - frmGetYourFiles.getContentPane().add(btnStart, BorderLayout.SOUTH); - btnStart.setSelected(true); - btnStart.setBackground(Color.LIGHT_GRAY); - - frmGetYourFiles.getRootPane().setDefaultButton(btnStart); - - JPanel panel_progress = new JPanel(); - panel_progress.setBackground(Color.WHITE); - frmGetYourFiles.getContentPane().add(panel_progress, BorderLayout.CENTER); - - lblDone = new JLabel(""); - panel_progress.add(lblDone); - } - - private void initActions() { - btnBrowse.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - if(alreadyRunning){ - return; - } - JFileChooser chooser = new JFileChooser(); - chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); - chooser.setMultiSelectionEnabled(true); - int val = chooser.showOpenDialog(null); - - if (val == JFileChooser.APPROVE_OPTION) { - dirs = chooser.getSelectedFiles(); - String selectedDirs = ""; - for (File dir:dirs) - { - selectedDirs = selectedDirs + "\"" + dir.getAbsolutePath() + "\"; "; - } - textField.setText(selectedDirs); - } - } - }); - - btnStart.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent arg0) { - Thread noBlock = new Thread() { - public void run() { - engine.setExtensionSettings(textField_extensions.getText()); - resetElements(); - engine.extractFiles(dirs); - } - }; - if ((!alreadyRunning) & (dirs!=null)) { - noBlock.start(); - alreadyRunning = true; - } - - } - }); - } - - private void resetElements() { - lblDone.setText(""); - } -} \ No newline at end of file