drag and drop, main argument autoload, autofixes
This commit is contained in:
		
					parent
					
						
							
								74bb277cf2
							
						
					
				
			
			
				commit
				
					
						1b832e2851
					
				
			
		
					 2 changed files with 48 additions and 9 deletions
				
			
		| 
						 | 
				
			
			@ -25,6 +25,7 @@
 | 
			
		|||
 | 
			
		||||
package es.kauron.estraba;
 | 
			
		||||
 | 
			
		||||
import es.kauron.estraba.controller.SplashController;
 | 
			
		||||
import javafx.application.Application;
 | 
			
		||||
import javafx.fxml.FXMLLoader;
 | 
			
		||||
import javafx.scene.Parent;
 | 
			
		||||
| 
						 | 
				
			
			@ -32,6 +33,7 @@ import javafx.scene.Scene;
 | 
			
		|||
import javafx.scene.image.Image;
 | 
			
		||||
import javafx.stage.Stage;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.ResourceBundle;
 | 
			
		||||
 | 
			
		||||
import static java.util.ResourceBundle.getBundle;
 | 
			
		||||
| 
						 | 
				
			
			@ -59,11 +61,13 @@ public class App extends Application {
 | 
			
		|||
        stage.setResizable(false);
 | 
			
		||||
        stage.setScene(new Scene(root));
 | 
			
		||||
 | 
			
		||||
        // Begin awesomewm code
 | 
			
		||||
        if (getParameters().getUnnamed().size() == 1) {
 | 
			
		||||
            loader.<SplashController>getController().loadGPXFile(new File(getParameters().getUnnamed().get(0)));
 | 
			
		||||
        }
 | 
			
		||||
        // fix rogue wm :)
 | 
			
		||||
        stage.setMinHeight(500);
 | 
			
		||||
        stage.setMinWidth(300);
 | 
			
		||||
        stage.setResizable(false);
 | 
			
		||||
        // End awesomewm code
 | 
			
		||||
 | 
			
		||||
        stage.show();
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -40,6 +40,8 @@ import javafx.scene.Scene;
 | 
			
		|||
import javafx.scene.control.Label;
 | 
			
		||||
import javafx.scene.image.Image;
 | 
			
		||||
import javafx.scene.image.ImageView;
 | 
			
		||||
import javafx.scene.input.Dragboard;
 | 
			
		||||
import javafx.scene.input.TransferMode;
 | 
			
		||||
import javafx.scene.layout.AnchorPane;
 | 
			
		||||
import javafx.stage.FileChooser;
 | 
			
		||||
import javafx.stage.Stage;
 | 
			
		||||
| 
						 | 
				
			
			@ -78,11 +80,6 @@ public class SplashController implements Initializable{
 | 
			
		|||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private void loadGPXFile(ActionEvent event) throws Exception {
 | 
			
		||||
        buttonLoad.setVisible(false);
 | 
			
		||||
        labelWelcome.setVisible(false);
 | 
			
		||||
        spinner.setVisible(true);
 | 
			
		||||
        snackbar.registerSnackbarContainer(root);
 | 
			
		||||
        snackbar.show("Loading file", 5000);
 | 
			
		||||
        FileChooser fileChooser = new FileChooser();
 | 
			
		||||
        fileChooser.getExtensionFilters().add(
 | 
			
		||||
                new FileChooser.ExtensionFilter(App.GENERAL_BUNDLE.getString("app.extension"), "*.gpx"));
 | 
			
		||||
| 
						 | 
				
			
			@ -91,7 +88,15 @@ public class SplashController implements Initializable{
 | 
			
		|||
            errorLoading();
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        loadGPXFile(file);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void loadGPXFile(File file) {
 | 
			
		||||
        buttonLoad.setVisible(false);
 | 
			
		||||
        labelWelcome.setVisible(false);
 | 
			
		||||
        spinner.setVisible(true);
 | 
			
		||||
        snackbar.registerSnackbarContainer(root);
 | 
			
		||||
        snackbar.show("Loading file", 5000);
 | 
			
		||||
        Thread th = new Thread(new Task<DataBundle>() {
 | 
			
		||||
            @Override
 | 
			
		||||
            protected DataBundle call() throws Exception {
 | 
			
		||||
| 
						 | 
				
			
			@ -114,11 +119,16 @@ public class SplashController implements Initializable{
 | 
			
		|||
                    errorLoading();
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            @Override
 | 
			
		||||
            protected void failed() {
 | 
			
		||||
                super.failed();
 | 
			
		||||
                errorLoading();
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        th.setDaemon(true);
 | 
			
		||||
        th.start();
 | 
			
		||||
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
| 
						 | 
				
			
			@ -133,6 +143,31 @@ public class SplashController implements Initializable{
 | 
			
		|||
                ioe.printStackTrace();
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        root.getScene().setOnDragOver(e -> {
 | 
			
		||||
            Dragboard db = e.getDragboard();
 | 
			
		||||
            if (db.hasFiles()) {
 | 
			
		||||
                e.acceptTransferModes(TransferMode.COPY);
 | 
			
		||||
            } else {
 | 
			
		||||
                e.consume();
 | 
			
		||||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        // Dropping over surface
 | 
			
		||||
        root.getScene().setOnDragDropped(e -> {
 | 
			
		||||
            Dragboard db = e.getDragboard();
 | 
			
		||||
            boolean success = false;
 | 
			
		||||
            if (db.hasFiles()) {
 | 
			
		||||
                success = true;
 | 
			
		||||
                String filePath = null;
 | 
			
		||||
                for (File file : db.getFiles()) {
 | 
			
		||||
                    filePath = file.getAbsolutePath();
 | 
			
		||||
                    System.out.println(filePath);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            e.setDropCompleted(success);
 | 
			
		||||
            e.consume();
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void errorLoading() {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue