diff --git a/src/main/java/Controller.java b/src/main/java/Controller.java index 742115b..b5c8a6f 100644 --- a/src/main/java/Controller.java +++ b/src/main/java/Controller.java @@ -8,13 +8,14 @@ import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.scene.Node; -import javafx.scene.control.MenuItem; -import javafx.scene.control.TreeCell; -import javafx.scene.control.TreeItem; -import javafx.scene.control.TreeView; +import javafx.scene.Scene; +import javafx.scene.control.*; import javafx.scene.image.Image; import javafx.scene.image.ImageView; +import javafx.scene.input.DragEvent; +import javafx.scene.input.Dragboard; import javafx.scene.input.MouseEvent; +import javafx.scene.input.TransferMode; import sun.misc.Resource; import sun.reflect.generics.tree.Tree; @@ -32,16 +33,27 @@ public class Controller{ @FXML private MenuItem fileTag; @FXML private MenuItem fileExit; @FXML private MenuItem editPreferences; + @FXML private MenuBar menubar; @FXML private TreeView dirTree; @FXML private MenuItem toolsTagFiles; @FXML private MenuItem toolsDeleteTags; @FXML private ResourceBundle resources; + @FXML private Label dragHereLabel; + + FolderViewManager manager; @FXML private void initialize() { - final FolderViewManager manager = new FolderViewManager(dirTree); // 2 statements in 1 line is best + + manager = new FolderViewManager(dirTree); + IronFile[] hardDrives = IronFile.listRoots(); // an array of hard drives - manager.setRootDirectory(hardDrives); + // manager.setRootDirectory(hardDrives); + + menubar.setUseSystemMenuBar(true); //allows use of native menu bars, luckily an easy 1 liner + /** + * Tell the manager that new files have been selected + */ dirTree.setOnMouseClicked(new EventHandler() { @Override @@ -78,6 +90,57 @@ public void handle(ActionEvent event) { }); + } + + public void initializeSceneEvents() { + + Scene scene = dirTree.getScene(); + + scene.setOnDragOver(new EventHandler() { + + @Override + public void handle(DragEvent args) { + + Dragboard db = args.getDragboard(); + //System.out.println("dragging over"); + + if(db.hasFiles()) { + + args.acceptTransferModes(TransferMode.COPY); + + } else { args.consume(); } + } + + }); + + + scene.setOnDragDropped(new EventHandler() { + + @Override + public void handle(DragEvent args) { + + Dragboard db = args.getDragboard(); + args.acceptTransferModes(TransferMode.COPY); + + boolean success = false; + + if(db.hasFiles()) { + + System.out.println("dropped file(s)"); + + IronFile[] roots = IronFile.convertFiles(db.getFiles()); + manager.setRootDirectory(roots); + success = true; + dragHereLabel.setText(""); + dragHereLabel.setMaxWidth(0); + + } + + args.setDropCompleted(success); + + } + + }); } } diff --git a/src/main/java/IronFile.java b/src/main/java/IronFile.java index ce9d6f3..5f64ed6 100644 --- a/src/main/java/IronFile.java +++ b/src/main/java/IronFile.java @@ -2,6 +2,7 @@ package main.java; import java.io.File; +import java.util.List; /** * This class extends the java File class and returns the filename for toString() @@ -43,6 +44,14 @@ public static IronFile[] convertFiles(File[] files) { return ironFiles; } + public static IronFile[] convertFiles(List files) { + IronFile[] ironFiles = new IronFile[files.size()]; + for (int i = 0; i < files.size(); i++) { + ironFiles[i] = new IronFile(files.get(i)); + } + return ironFiles; + } + public boolean isRoot() { return isRoot; } diff --git a/src/main/java/Main.java b/src/main/java/Main.java index 151fb3b..54c90e4 100644 --- a/src/main/java/Main.java +++ b/src/main/java/Main.java @@ -18,13 +18,21 @@ public class Main extends Application { @Override public void start(Stage primaryStage) throws Exception{ // setUserAgentStylesheet(STYLESHEET_CASPIAN); - Parent root = FXMLLoader.load(getClass().getResource("/main/resources/StartPage.fxml")); + + FXMLLoader loader = new FXMLLoader(); + Parent root = loader.load(getClass().getResource("/main/resources/StartPage.fxml").openStream()); primaryStage.setTitle("Iron-gate!"); primaryStage.setScene(new Scene(root, 990, 700)); Scene scene = primaryStage.getScene(); // we get the scene from above scene.getStylesheets().clear(); // clear any styles + + Controller controller = loader.getController(); + + controller.initializeSceneEvents(); + // scene.getStylesheets().add("/main/resources/mainStyle.css"); // absolute path primaryStage.show(); + } public static void main(String[] args) { launch(args); diff --git a/src/main/resources/StartPage.fxml b/src/main/resources/StartPage.fxml index 9b538e3..9f88f79 100644 --- a/src/main/resources/StartPage.fxml +++ b/src/main/resources/StartPage.fxml @@ -2,17 +2,26 @@ - - - - - - - + + + + + + + + + + + + + + + + - + - + @@ -42,124 +51,103 @@
- + + + + +
+ + + + + + +
+
- - -
- - - - - - - - - - - - - - - - -
- -
-
-
-
- - - - - -
- - - - -
- - - -
-
- -
- - -
- - - - - -
- -
- - - - - - - -
- - - -
-
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
+ + + +
+
+ + +
+ +
+ + + + + +
+ + + + + + + +
+ + + +
+