diff --git a/src/main/java/app/controllers/FiletreeController.java b/src/main/java/app/controllers/FiletreeController.java index 475663c..379815d 100644 --- a/src/main/java/app/controllers/FiletreeController.java +++ b/src/main/java/app/controllers/FiletreeController.java @@ -62,9 +62,9 @@ public class FiletreeController implements Initializable, Controller { } catch (Exception e) { Model.setProjectPath(Optional.empty()); DialogBoxes.showErrorMessage( - "Could not open folder.\n\n" - + "Do you have the right permissions for this folder?\n" - + "Or does the folder contain any shortcut to somewhere within itself?" + "Could not open directory.\n\n" + + "Do you have the right permissions for this directory?\n" + + "Or does the directory contain any shortcut to somewhere within itself?" ); } } diff --git a/src/main/java/app/controllers/MenubarController.java b/src/main/java/app/controllers/MenubarController.java index 34bafd9..4952a72 100644 --- a/src/main/java/app/controllers/MenubarController.java +++ b/src/main/java/app/controllers/MenubarController.java @@ -100,7 +100,7 @@ public class MenubarController implements Initializable, Controller { Stage stage = (Stage) menubar.getScene().getWindow(); try { - File dir = FileOperations.openFolderWithDialog(stage); + File dir = FileOperations.openDirectoryWithDialog(stage); this.eventBus.post(new OpenProjectEvent(Optional.of(dir.toPath()))); } catch (FileNotFoundException e) {} diff --git a/src/main/java/app/events/OpenProjectEvent.java b/src/main/java/app/events/OpenProjectEvent.java index 51e857d..7076b56 100644 --- a/src/main/java/app/events/OpenProjectEvent.java +++ b/src/main/java/app/events/OpenProjectEvent.java @@ -6,15 +6,15 @@ import java.util.Optional; import app.model.Model; /** - * Event signalizing that a folder is supposed to be opened in the filetree. + * Event signalizing that a directory is supposed to be opened in the filetree. */ public class OpenProjectEvent extends Event { private Optional path; /** - * Event signalizing that a folder is supposed to be opened in the filetree. - * @param path The path of the folder to be opened + * Event signalizing that a directory is supposed to be opened in the filetree. + * @param path The path of the directory to be opened */ public OpenProjectEvent(Optional path) { this.path = path; @@ -22,7 +22,7 @@ public class OpenProjectEvent extends Event { } /** - * @return The path of the folder to be opened + * @return The path of the directory to be opened */ public Optional getPath() { return this.path; diff --git a/src/main/java/app/service/DialogBoxes.java b/src/main/java/app/service/DialogBoxes.java index f438db4..741da20 100644 --- a/src/main/java/app/service/DialogBoxes.java +++ b/src/main/java/app/service/DialogBoxes.java @@ -9,6 +9,10 @@ import javafx.stage.DirectoryChooser; import javafx.stage.FileChooser; import javafx.stage.Stage; +/** + * Class containing static methods for different kinds of popup window interactions + * with the user. + */ public class DialogBoxes { private DialogBoxes() {} @@ -16,11 +20,24 @@ public class DialogBoxes { private static DirectoryChooser dc = new DirectoryChooser(); private static Alert error = new Alert(AlertType.ERROR); + /** + * Shows a specified message to the user with an error icon. + * + * @param errorMessage The message to show the user + */ public static void showErrorMessage(String errorMessage) { error.setContentText(errorMessage); error.showAndWait(); } + /** + * Shows an OS specific file chooser to choose a file on the disk + * + * @param stage The JavaFX stage to connect to the dialog box. This is needed + * for the window to be able to run on the JavaFX thread. + * + * @return The file chosen through the dialog window + */ public static File showopenFileWithDialog(Stage stage) { fc.setTitle("Open File"); File chosenFile = fc.showOpenDialog(stage); @@ -28,13 +45,29 @@ public class DialogBoxes { return chosenFile; } - public static File showOpenFolderWithDialog(Stage stage) { + /** + * Shows an OS specific directory chooser to choose a directory on the disk + * + * @param stage The JavaFX stage to connect to the dialog box. This is needed + * for the window to be able to run on the JavaFX thread. + * + * @return The file chosen through the dialog window + */ + public static File showOpenDirectoryWithDialog(Stage stage) { dc.setTitle("Open Project"); File dir = dc.showDialog(stage); return dir; } + /** + * Shows an OS specific file chooser to specifyy a new path on the disk + * + * @param stage The JavaFX stage to connect to the dialog box. This is needed + * for the window to be able to run on the JavaFX thread. + * + * @return The filepath chosen through the dialog window + */ public static File showSaveFileWithDialog(Stage stage) { FileChooser fc = new FileChooser(); fc.setTitle("Save as"); diff --git a/src/main/java/app/service/FileOperations.java b/src/main/java/app/service/FileOperations.java index 6215aca..64b6200 100644 --- a/src/main/java/app/service/FileOperations.java +++ b/src/main/java/app/service/FileOperations.java @@ -15,9 +15,13 @@ public class FileOperations { private FileOperations() {} - // TODO: Needs documentation and cleanup - // TODO: This class needs to be extensively error checked - + /** + * A function to get a file through a dialog + * + * @param stage A JavaFX stage is required to show the dialog + * @return The chosen file + * @throws FileNotFoundException + */ public static File openFileWithDialog(Stage stage) throws FileNotFoundException { File chosenFile = DialogBoxes.showopenFileWithDialog(stage); @@ -28,8 +32,15 @@ public class FileOperations { } - public static File openFolderWithDialog(Stage stage) throws FileNotFoundException { - File dir = DialogBoxes.showOpenFolderWithDialog(stage); + /** + * A function to get a file through a dialog + * + * @param stage A JavaFX stage is required to show the dialog + * @return The chosen file + * @throws FileNotFoundException + */ + public static File openDirectoryWithDialog(Stage stage) throws FileNotFoundException { + File dir = DialogBoxes.showOpenDirectoryWithDialog(stage); if (dir == null) throw new FileNotFoundException(); diff --git a/src/main/java/app/service/FiletreeOperations.java b/src/main/java/app/service/FiletreeOperations.java index b3fd749..5d64efe 100644 --- a/src/main/java/app/service/FiletreeOperations.java +++ b/src/main/java/app/service/FiletreeOperations.java @@ -71,7 +71,7 @@ public class FiletreeOperations { } /** - * A helping function to sort the files/folders in the fileTree so that it shows + * A helping function to sort the files/directories in the fileTree so that it shows * in the correct order. */ private static void sortFiles(List dirList, List fileList, File file) { @@ -119,13 +119,13 @@ public class FiletreeOperations { .getProjectPath() .orElseThrow(() -> new IllegalStateException()); - final String rootFolderName = + final String rootDirName = projectPath .getFileName() .toString(); String path = ""; - while (!rootFolderName.equals(item.getValue())) { + while (!rootDirName.equals(item.getValue())) { path = File.separator + item.getValue() + path; item = item.getParent(); if (item == null) diff --git a/src/test/java/app/service/FileOperationsTest.java b/src/test/java/app/service/FileOperationsTest.java index 2ccedaa..d69d0ab 100644 --- a/src/test/java/app/service/FileOperationsTest.java +++ b/src/test/java/app/service/FileOperationsTest.java @@ -78,20 +78,20 @@ public class FileOperationsTest { // @Test - // @DisplayName("Test openFolderWithDialog") - // public void testOpenFolderWithDialog() { + // @DisplayName("Test openDirectoryWithDialog") + // public void testOpenDirectoryWithDialog() { // try (MockedStatic mocked = mockStatic(DialogBoxes.class)) { // Stage stage = mock(Stage.class); - // mocked.when(() -> DialogBoxes.showOpenFolderWithDialog(any())) + // mocked.when(() -> DialogBoxes.showOpenDirectoryWithDialog(any())) // .thenReturn(null); - // assertThrows(FileNotFoundException.class, () -> FileOperations.openFolderWithDialog(stage)); + // assertThrows(FileNotFoundException.class, () -> FileOperations.openDirectoryWithDialog(stage)); // File file = mock(File.class); - // mocked.when(() -> DialogBoxes.showOpenFolderWithDialog(any())) + // mocked.when(() -> DialogBoxes.showOpenDirectoryWithDialog(any())) // .thenReturn(file); // try { - // assertEquals(file, FileOperations.openFolderWithDialog(stage)); + // assertEquals(file, FileOperations.openDirectoryWithDialog(stage)); // } catch (FileNotFoundException e) { // fail("Chosen file was null when it was expected to be mock file"); // } diff --git a/src/test/java/app/service/FileTreeOperationsTest.java b/src/test/java/app/service/FileTreeOperationsTest.java index 6782fc9..bbc4013 100644 --- a/src/test/java/app/service/FileTreeOperationsTest.java +++ b/src/test/java/app/service/FileTreeOperationsTest.java @@ -41,8 +41,8 @@ public class FileTreeOperationsTest { } private void createRecursiveSymlink() throws IOException { - File folders = new File(tmp, "test/innerFolder/"); - folders.mkdirs(); + File dirs = new File(tmp, "test/innerFolder/"); + dirs.mkdirs(); Path target = Paths.get(tmp.toPath().toString(), "test"); Path link = Paths.get(tmp.toPath().toString(), "test/innerFolder/test");