From 66b177c767e2b21d660263b8a916c00d22e385b1 Mon Sep 17 00:00:00 2001 From: Brian Patino Date: Tue, 1 Mar 2016 23:37:45 -0500 Subject: [PATCH] Clean up * clean up and format various lines of code * redo code sections into more compactness --- .../java/directory/FolderViewManager.java | 121 +++--------------- src/main/java/launcher/Controller.java | 57 +++++---- src/main/resources/StartPage.fxml | 4 +- 3 files changed, 47 insertions(+), 135 deletions(-) diff --git a/src/main/java/directory/FolderViewManager.java b/src/main/java/directory/FolderViewManager.java index 4cddcb1..ae6ddd5 100644 --- a/src/main/java/directory/FolderViewManager.java +++ b/src/main/java/directory/FolderViewManager.java @@ -34,23 +34,18 @@ */ public class FolderViewManager { private final Image hddIcon = new Image("/icons/hdd.png"); -// private directory.IronFileVisitor ironVisitor; // might be used later private TreeView view; - private CmdExecutor command; - private List> selectedFiles; - private ObservableList> taggedItems = FXCollections.observableArrayList(); + private ObservableList taggedItems = FXCollections.observableArrayList(); + /** + * Folder View Manager constructor, initializes the view for the file browser + * */ public FolderViewManager(TreeView dirTree) { - /*ironVisitor = new directory.IronFileVisitor(); // save this for later - ironVisitor.setRoot(new TreeItem<>());*/ // save this for later -// OSDetection.getOS(); view = dirTree; view.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE); // enable multi-select -// command = new CmdExecutor(); } /** * Sets the root directory of the file browser to the specified folder. - * * @param file root folder/file to start browser view **/ public void setRootDirectory(IronFile file) { @@ -59,7 +54,6 @@ public void setRootDirectory(IronFile file) { } /** * Overloaded method that sets a collection of folders/files as file browser view. - * * @param hardDrives a collection of hard drives to being from root * */ public void setRootDirectory(IronFile[] hardDrives) { @@ -72,95 +66,10 @@ public void setRootDirectory(IronFile[] hardDrives) { view.setShowRoot(false); // hide the blank file } - public void setSelectedFiles(List> files) { - selectedFiles = files; - } - - public void setFileAttrForSelected() { - for(TreeItem item : selectedFiles) { - setFileAttr(item.getValue(), "test_attr_key", "test_attr_value"); - } - } - - public void getFileAttrForSelected() { - for(TreeItem item : selectedFiles) { - getFileAttr(item.getValue(), "test_attr_key"); - } - } - - public void deleteFileAttrForSelected() { - for(TreeItem item : selectedFiles) { - deleteFileAttr(item.getValue(), "test_attr_key"); - } - } - - public void setFileAttr(IronFile file, String key, String value) { - if(OSDetection.OSType == OSDetection.OS.WINDOWS) { - try { - UserDefinedFileAttributeView view = Files.getFileAttributeView(file.toPath(), UserDefinedFileAttributeView.class); - //might want to give unique prefix to tag keys to avoid collision with system metadata - view.write(key, Charset.defaultCharset().encode(value)); - } catch(IOException e) { - e.printStackTrace(); - } - } else if(OSDetection.OSType == OSDetection.OS.MAC) { - String option = ""; - if(file.isDirectory()) { - option = "-r"; - } - String cmd = "xattr -w " + option + " " + key + " " + value + " " + file.getAbsolutePath(); - try { - String output = command.run(cmd); - } catch(IOException e) { e.printStackTrace(); } - } - } - - public String getFileAttr(IronFile file, String key) { - if(OSDetection.OSType == OSDetection.OS.WINDOWS) { - try { - UserDefinedFileAttributeView view = Files.getFileAttributeView(file.toPath(), UserDefinedFileAttributeView.class); - ByteBuffer buf = ByteBuffer.allocate(view.size(key)); - view.read(key, buf); - buf.flip(); - return Charset.defaultCharset().decode(buf).toString(); - } catch(IOException e) { - e.printStackTrace(); - } - - } else if(OSDetection.OSType == OSDetection.OS.MAC) { - System.out.println("file path: " + file.getAbsolutePath()); - String option = ""; - if(file.isDirectory()) { - //option = "-r"; - } - String cmd = "xattr -p " + option + " " + key + " " + file.getAbsolutePath(); //then append the attr command - try { - String output = command.run(cmd); - } catch(IOException e) { e.printStackTrace(); } - } - return null; - } - - public void deleteFileAttr(IronFile file, String key) { - if(OSDetection.OSType == OSDetection.OS.WINDOWS) { - try { - UserDefinedFileAttributeView view = Files.getFileAttributeView(file.toPath(), UserDefinedFileAttributeView.class); - view.delete(key); - } catch(IOException e) { e.printStackTrace(); } - } else if(OSDetection.OSType == OSDetection.OS.MAC) { - System.out.println("file path: " + file.getAbsolutePath()); - String cmd = "xattr -d " + key + " " + file.getAbsolutePath(); //then append the attr command - try { - String output = command.run(cmd); - } catch(IOException e) { e.printStackTrace(); } - } - } - - public void setTags(ObservableList> selectedItems, String tag) { - for (TreeItem selectedItem : selectedItems) { - selectedItem.getValue().setTag(tag); - taggedItems.add(selectedItem); // add tagged item to list -// System.out.println(selectedItem.getValue().getTag()); + public void setTags(ObservableList selectedItems, String tag) { + for (IronFile selectedIronFile : selectedItems) { + selectedIronFile.setTag(tag); + taggedItems.add(selectedIronFile); // add tagged item to list } } @@ -170,12 +79,14 @@ public void deleteAllTags(ObservableList> selectedItems) { } } - public ObservableList> getTagedItems(String searchTag) { - ObservableList> listTagFiles = FXCollections.observableArrayList(); - for (TreeItem taggedItem : taggedItems) { - IronFile currentFile = taggedItem.getValue(); - if (currentFile.getTag().equals(searchTag)) { - listTagFiles.add(taggedItem); + /** + * Retrieves an Observable list of TreeItem of tagged items. + * */ + public ObservableList getTaggedItems(String searchTag) { + ObservableList listTagFiles = FXCollections.observableArrayList(); + for (IronFile taggedIronFile : taggedItems) { + if (taggedIronFile.getTag().equals(searchTag)) { + listTagFiles.add(taggedIronFile); } } return listTagFiles; diff --git a/src/main/java/launcher/Controller.java b/src/main/java/launcher/Controller.java index 1ca7f05..8153b32 100644 --- a/src/main/java/launcher/Controller.java +++ b/src/main/java/launcher/Controller.java @@ -2,6 +2,7 @@ import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; +import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.event.Event; @@ -21,6 +22,7 @@ import java.util.List; import java.util.ResourceBundle; +import java.util.stream.Collectors; public class Controller{ @FXML private MenuItem fileOpen; @@ -37,39 +39,38 @@ public class Controller{ @FXML private TextField txtAddTag; @FXML private TextField txtTagSearch; @FXML private Button btnSearchTag; - @FXML private ListView> viewTags; + @FXML private ListView viewTags; + private FolderViewManager manager; @FXML private void initialize() { - final FolderViewManager manager = new FolderViewManager(dirTree); // 2 statements in 1 line is best + manager = new FolderViewManager(dirTree); // 2 statements in 1 line is best IronFile[] hardDrives = IronFile.listRoots(); // an array of hard drives manager.setRootDirectory(hardDrives); - setEvents(manager); } - - private void setEvents(FolderViewManager manager) { - /*dirTree.setOnMouseClicked(new EventHandler() { - @Override - public void handle(MouseEvent args) { - ObservableList> selectedItems = dirTree.getSelectionModel().getSelectedItems(); - manager.setSelectedFiles(selectedItems); - } - });*/ - - btnAddTag.setOnAction((event) -> { // new java 8 set mouse event - ObservableList> selectedItems = dirTree.getSelectionModel().getSelectedItems(); // get list of selected files -// manager.setSelectedFiles(selectedItems); - manager.setTags(selectedItems, txtAddTag.getText()); - }); - btnSearchTag.setOnAction(event -> { - ObservableList> taggedItems = manager.getTagedItems(txtTagSearch.getText()); - viewTags.setItems(taggedItems); -// manager.displayTagedFiles(txtTagSearch.getText()); - }); - toolsDeleteTags.setOnAction(event -> { - ObservableList> selectedItems = dirTree.getSelectionModel().getSelectedItems(); // get list of selected files - manager.deleteAllTags(selectedItems); -// manager.deleteFileAttrForSelected(); - }); + /** + * Action event triggered when user clicks. This method will add tag directly to IronFile + * Method name must match StartPage.fxml assigned `on Action` + * */ + @FXML private void eventAddTag() { + ObservableList> treeIronFileList = dirTree.getSelectionModel().getSelectedItems(); + ObservableList selectedIronFiles = FXCollections.observableArrayList(); + /** The following line converts ObservableList into ObservableList which is needed to display just the names.**/ + selectedIronFiles.addAll(treeIronFileList.stream().map(TreeItem::getValue).collect(Collectors.toList())); + manager.setTags(selectedIronFiles, txtAddTag.getText()); + } + /** + * On Click event that will search and display files based on entered tag + * */ + @FXML private void eventSearchTag() { + ObservableList taggedItems = manager.getTaggedItems(txtTagSearch.getText()); + viewTags.setItems(taggedItems); + } + /** + * Action on click event that will delete all tag information from selected files. + * */ + @FXML private void eventDeleteTags() { + ObservableList> selectedItems = dirTree.getSelectionModel().getSelectedItems(); // get list of selected files + manager.deleteAllTags(selectedItems); } } diff --git a/src/main/resources/StartPage.fxml b/src/main/resources/StartPage.fxml index 802d6ff..33aeb28 100644 --- a/src/main/resources/StartPage.fxml +++ b/src/main/resources/StartPage.fxml @@ -87,7 +87,7 @@ -