import javafx.application.Platform; import javafx.stage.Stage; import javafx.stage.StageStyle; import javafx.fxml.FXML; import javafx.stage.FileChooser; import javafx.stage.DirectoryChooser; import javafx.scene.control.ScrollPane; import javafx.scene.layout.TilePane; import javafx.event.ActionEvent; import javafx.scene.control.Button; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.scene.input.KeyEvent; import javafx.scene.input.KeyCode; import javafx.scene.input.MouseEvent; import javafx.scene.image.ImageView; import javafx.concurrent.Task; import java.io.*; import java.lang.Runtime; import javafx.scene.control.Tooltip; import javafx.application.Platform; public class Controller { @FXML private ScrollPane stackPane; @FXML private TextField pathTxt; @FXML private Button fileBttn, clearBttn; @FXML private TilePane tilePane; @FXML private Label dir; private DirectoryChooser folderChooser = new DirectoryChooser(); private FileChooser fileChooser = new FileChooser(); private Stage fileChrStage = new Stage(), dirChrStage = new Stage(); private File file, loaded, directory = new File("."), thumbs = new File("thumbs/"); private File[] filesList, thumbsList; private Opener open = new Opener(); // Open book with proper program private CleanPath cleaner = new CleanPath(); // Cleans thumbnail names private String textAreaPth, filePth; private ImageView thumbImgView; private Process pb; // Process runner private Tooltip tooltip; @FXML void initialize() { folderChooser.setTitle("Open Directory"); fileChooser.setTitle("Open Epub or Pdf File"); } @FXML void Enter(KeyEvent event) { // on enter in txt field if (event.getCode().equals(KeyCode.ENTER)) getFiles(); } @FXML void setNewDir(MouseEvent event) { scanDir(); } @FXML void setJarUse(ActionEvent event) { open.setWinSetting(); } void scanDir() { tilePane.getChildren().clear(); textAreaPth = pathTxt.getText(); if (textAreaPth.isEmpty()) { directory = folderChooser.showDialog(dirChrStage); if (directory != null) { System.out.println("Directory: " + directory); filesList = directory.listFiles(); thumbsList = thumbs.listFiles(); pathTxt.setText("" + directory); Task getThumb = new Task() { @Override public Void call() { scanDirP2(); return null; }}; new Thread(getThumb).start(); } else { System.out.println("No directory selected...."); tilePane.getChildren().add(dir); } } else directory = new File(textAreaPth); } void scanDirP2() { for (int i=0; i { if (mouse.getClickCount() == 2 && !mouse.isConsumed()) { mouse.consume(); pathTxt.setText(file); getFiles(); } }); } } } @FXML void openFile(ActionEvent event) { // file bttn click getFiles(); } void getFiles() { // opens epub/pdf textAreaPth = pathTxt.getText(); if (textAreaPth.isEmpty()) { file = fileChooser.showOpenDialog(fileChrStage); pathTxt.setText(textAreaPth = "" + file); filePth = pathTxt.getText(); dir.setText(":Reading:\n" + filePth); } else { filePth = textAreaPth; } open.fileOpener(filePth); } @FXML void clearBttnClick(ActionEvent event) { dir.setText("Choose Dir"); pathTxt.setText(""); tilePane.getChildren().clear(); tilePane.getChildren().add(dir); } @FXML void close(ActionEvent event) { Platform.exit(); } }