From 00e0cee162bd27038c123bbe9aeeea6aed3b5dee Mon Sep 17 00:00:00 2001 From: Brian Patino Date: Thu, 11 Feb 2016 15:07:32 -0500 Subject: [PATCH] Add Second Level * add second level to generate files * extend File in IronFile --- src/main/java/Controller.java | 51 +++++++++++++----------------- src/main/java/IronFile.java | 58 +++++++++++++++++++++++++++++++++++ src/main/java/Main.java | 2 +- 3 files changed, 81 insertions(+), 30 deletions(-) create mode 100644 src/main/java/IronFile.java diff --git a/src/main/java/Controller.java b/src/main/java/Controller.java index cb7b918..7797482 100644 --- a/src/main/java/Controller.java +++ b/src/main/java/Controller.java @@ -20,14 +20,14 @@ import java.util.ResourceBundle; public class Controller{ - private TreeItem root = new TreeItem<>(); + private TreeItem root = new TreeItem<>(); private final Image hddIcon = new Image("/main/resources/icons/hdd.png"); @FXML private MenuItem fileOpen; @FXML private MenuItem fileNew; @FXML private MenuItem fileTag; @FXML private MenuItem fileExit; @FXML private MenuItem editPreferences; - @FXML private TreeView dirTree; + @FXML private TreeView dirTree; @FXML private ResourceBundle resources; @FXML private void initialize() { @@ -37,13 +37,12 @@ public class Controller{ // Create the directory Tree private void createTree() { - // Get the hard disk drives and 2 level down - File[] roots = File.listRoots(); - for (File hdd : roots) { - TreeItem parentTreeItem = new TreeItem<>(hdd); + // Get the hard disk drives and 2 levels down + IronFile[] roots = IronFile.listRoots(); + for (IronFile hdd : roots) { + TreeItem parentTreeItem = new TreeItem<>(hdd); parentTreeItem.setGraphic(new ImageView(hddIcon)); -// setChildOfParent(parentTreeItem); - parentTreeItem.getChildren().add(new TreeItem<>(new File("Users"))); // test + setChildOfParent(hdd, parentTreeItem); root.getChildren().add(parentTreeItem); // set hdd to root } @@ -57,27 +56,21 @@ public TreeCell call(TreeView param) { } });*/ } - - private void setChildOfParent(TreeItem parent) { -// String rootPath = parent.getPath(); - try { - // Loop through all of the files/folders from parent at depth 2 - Files.walkFileTree(Paths.get(parent.getValue().getAbsolutePath()), EnumSet.of(FileVisitOption.FOLLOW_LINKS), 2, new FolderViewManager()).forEach(filePath -> { - if (Files.isRegularFile(filePath)) { - File childFile = filePath.toFile(); // create a file from working path - TreeItem itemChild = new TreeItem<>(childFile); // create a tree item from child file - parent.getChildren().add(itemChild); - itemChild.setExpanded(false); - System.out.println(filePath); - } - }); - /*Files.walk(Paths.get("C:\\Users\\Brian")).forEach(filePath -> { - if (Files.isRegularFile(filePath)) { -// System.out.println(filePath); - } - });*/ - } catch (IOException e) { - e.printStackTrace(); + /** + * Set the child of a given parent TreeItem + * + * @param parent file of the parent node + * @param parentTreeItem TreeItem of the parent node + * */ + @SuppressWarnings("ConstantConditions") + private void setChildOfParent(final File parent, TreeItem parentTreeItem) { + for (final IronFile file : IronFile.convertFiles(parent.listFiles())) { + if (file.isDirectory()) { + System.out.println("This is a directory"); + } else { + parentTreeItem.getChildren().add(new TreeItem<>(file)); + System.out.println(file.getName()); + } } } diff --git a/src/main/java/IronFile.java b/src/main/java/IronFile.java new file mode 100644 index 0000000..c2cddbd --- /dev/null +++ b/src/main/java/IronFile.java @@ -0,0 +1,58 @@ + +package main.java; + +import java.io.File; + +/** + * This class extends the java File class and returns the filename for toString() + */ +public class IronFile extends File { + private boolean isRoot = true; + + public IronFile(String pathname) { + super(pathname); + isRoot = (getParent() == null); + + } + public IronFile(File file) { + super(file.getPath()); + isRoot = (getParent() == null); + } + + @Override + public IronFile[] listFiles() { + return convertFiles(super.listFiles()); + } + + /** + * Return the available hard drive disks. + * */ + public static IronFile[] listRoots() { + return convertFiles(File.listRoots()); + } + + public static IronFile[] convertFiles(File[] files) { + IronFile[] ironFiles = new IronFile[files.length]; + for (int i = 0; i < files.length; i++) { + ironFiles[i] = new IronFile(files[i]); + } + return ironFiles; + } + + public boolean isRoot() { + return isRoot; + } + + public void setRoot(boolean root) { + isRoot = root; + } + + @Override + public String toString() { + if (isRoot) { + return this.getAbsolutePath(); + } else { + return this.getName(); + } + } +} \ No newline at end of file diff --git a/src/main/java/Main.java b/src/main/java/Main.java index c1cde18..83a91ce 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -31,7 +31,7 @@ public void handle(ActionEvent event) { // Rectangle2D screenBounds = Screen.getPrimary().getVisualBounds(); primaryStage.setTitle("Iron-gate!"); - primaryStage.setScene(new Scene(root, 990, 785)); + primaryStage.setScene(new Scene(root, 990, 700)); Scene scene = primaryStage.getScene(); // we get the scene from above scene.getStylesheets().clear(); // clear any styles