From c14054b1709020f1e0ce4af2f98915b1c1a89294 Mon Sep 17 00:00:00 2001 From: Seelenoede Date: Fri, 16 Aug 2019 14:19:27 +0200 Subject: [PATCH] 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; }