Compare commits
No commits in common. "master" and "v0.2" have entirely different histories.
6 changed files with 216 additions and 217 deletions
Binary file not shown.
|
|
@ -1,56 +0,0 @@
|
||||||
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() {
|
|
||||||
filter = new SettingsFilter();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 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() == 0)
|
|
||||||
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) {
|
|
||||||
if(extensionString.equals("")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
String[] extensions = extensionString.split(",");
|
|
||||||
for(String extension:extensions) {
|
|
||||||
filter.extensions.add(extension.trim());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,58 +0,0 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
|
||||||
|
|
||||||
<?import javafx.geometry.Insets?>
|
|
||||||
<?import javafx.scene.control.Button?>
|
|
||||||
<?import javafx.scene.control.Label?>
|
|
||||||
<?import javafx.scene.control.TextField?>
|
|
||||||
<?import javafx.scene.layout.BorderPane?>
|
|
||||||
<?import javafx.scene.layout.ColumnConstraints?>
|
|
||||||
<?import javafx.scene.layout.GridPane?>
|
|
||||||
<?import javafx.scene.layout.RowConstraints?>
|
|
||||||
|
|
||||||
|
|
||||||
<BorderPane fx:controller="eu.seelenoede.getyourfilesoutthere.Main" xmlns:fx="http://javafx.com/fxml/1" xmlns="http://javafx.com/javafx/8.0.171">
|
|
||||||
<center>
|
|
||||||
<Label fx:id="lblDone" text="Done" visible="false" BorderPane.alignment="CENTER">
|
|
||||||
<BorderPane.margin>
|
|
||||||
<Insets bottom="5.0" />
|
|
||||||
</BorderPane.margin>
|
|
||||||
</Label>
|
|
||||||
</center>
|
|
||||||
<bottom>
|
|
||||||
<Button mnemonicParsing="false" onAction="#handleStartButtonAction" text="Start" BorderPane.alignment="CENTER" />
|
|
||||||
</bottom>
|
|
||||||
<top>
|
|
||||||
<GridPane BorderPane.alignment="CENTER">
|
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" />
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" />
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" />
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
</rowConstraints>
|
|
||||||
<children>
|
|
||||||
<TextField fx:id="textField_dirs" editable="false" GridPane.columnIndex="1">
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets />
|
|
||||||
</GridPane.margin>
|
|
||||||
</TextField>
|
|
||||||
<Label text="Path: " />
|
|
||||||
<Button alignment="CENTER" contentDisplay="CENTER" mnemonicParsing="false" onAction="#handleBrowseButtonAction" text="Browse" GridPane.columnIndex="2">
|
|
||||||
<GridPane.margin>
|
|
||||||
<Insets left="5.0" right="5.0" />
|
|
||||||
</GridPane.margin>
|
|
||||||
</Button>
|
|
||||||
<Label text="Extensions: " GridPane.rowIndex="1" />
|
|
||||||
<TextField fx:id="textField_extensions" GridPane.columnIndex="1" GridPane.rowIndex="1" text=""/>
|
|
||||||
</children>
|
|
||||||
<BorderPane.margin>
|
|
||||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
||||||
</BorderPane.margin>
|
|
||||||
</GridPane>
|
|
||||||
</top>
|
|
||||||
<padding>
|
|
||||||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
|
||||||
</padding>
|
|
||||||
</BorderPane>
|
|
||||||
|
|
@ -1,95 +0,0 @@
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
215
src/eu/seelenoede/getyourfilesoutthere/MainForm.java
Normal file
215
src/eu/seelenoede/getyourfilesoutthere/MainForm.java
Normal file
|
|
@ -0,0 +1,215 @@
|
||||||
|
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;
|
||||||
|
|
||||||
|
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 JLabel lblPath;
|
||||||
|
private boolean alreadyRunning;
|
||||||
|
private JPanel panel_progress;
|
||||||
|
private JButton btnBrowse;
|
||||||
|
private File[] dirs;
|
||||||
|
private JLabel lblDone;
|
||||||
|
static ArrayList<String> extensions;
|
||||||
|
private SettingsFilter filter;
|
||||||
|
private JPanel panel;
|
||||||
|
private JPanel panel_settings;
|
||||||
|
private JLabel lblSettings;
|
||||||
|
private JTextField textField_extensions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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() {
|
||||||
|
filter = new SettingsFilter();
|
||||||
|
extensions = new ArrayList<String>();
|
||||||
|
initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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));
|
||||||
|
|
||||||
|
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);
|
||||||
|
|
||||||
|
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);
|
||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
if ((!alreadyRunning) & (dirs!=null)) {
|
||||||
|
noBlock.start();
|
||||||
|
alreadyRunning = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,22 +2,15 @@ package eu.seelenoede.getyourfilesoutthere;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileFilter;
|
import java.io.FileFilter;
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class SettingsFilter implements FileFilter {
|
public class SettingsFilter implements FileFilter {
|
||||||
|
|
||||||
ArrayList<String> extensions;
|
|
||||||
|
|
||||||
SettingsFilter() {
|
|
||||||
extensions = new ArrayList<String>();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean accept(File pathname) {
|
public boolean accept(File pathname) {
|
||||||
String filePath = pathname.getAbsolutePath();
|
String filePath = pathname.getAbsolutePath();
|
||||||
String fileExtension = filePath.substring(filePath.lastIndexOf('.') + 1);
|
String fileExtension = filePath.substring(filePath.lastIndexOf('.') + 1);
|
||||||
|
|
||||||
if(extensions.contains(fileExtension))
|
if(MainForm.extensions.contains(fileExtension))
|
||||||
return true;
|
return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue