Merge remote-tracking branch 'origin/master'
This commit is contained in:
		
				commit
				
					
						5c09e8b074
					
				
			
		
					 5 changed files with 66 additions and 74 deletions
				
			
		| 
						 | 
				
			
			@ -38,16 +38,14 @@ import javafx.fxml.FXMLLoader;
 | 
			
		|||
import javafx.fxml.Initializable;
 | 
			
		||||
import javafx.scene.Parent;
 | 
			
		||||
import javafx.scene.Scene;
 | 
			
		||||
import javafx.scene.control.Button;
 | 
			
		||||
import javafx.scene.control.Dialog;
 | 
			
		||||
import javafx.scene.control.Label;
 | 
			
		||||
import javafx.scene.control.*;
 | 
			
		||||
import javafx.scene.control.Spinner;
 | 
			
		||||
import javafx.scene.control.SpinnerValueFactory;
 | 
			
		||||
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.scene.layout.GridPane;
 | 
			
		||||
import javafx.scene.text.Text;
 | 
			
		||||
import javafx.stage.FileChooser;
 | 
			
		||||
import javafx.stage.Stage;
 | 
			
		||||
| 
						 | 
				
			
			@ -81,6 +79,12 @@ public class SplashController implements Initializable{
 | 
			
		|||
    @FXML
 | 
			
		||||
    private JFXButton buttonLoad;
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private Text textHR, textAge;
 | 
			
		||||
 | 
			
		||||
    @FXML
 | 
			
		||||
    private Spinner<Integer> spinnerAge, spinnerHR;
 | 
			
		||||
 | 
			
		||||
    private JFXSnackbar snackbar;
 | 
			
		||||
    private File file;
 | 
			
		||||
    private int maxHR;
 | 
			
		||||
| 
						 | 
				
			
			@ -99,9 +103,11 @@ public class SplashController implements Initializable{
 | 
			
		|||
    }
 | 
			
		||||
 | 
			
		||||
    public void loadGPXFile(File file) {
 | 
			
		||||
        maxHR = showHRDialog();
 | 
			
		||||
        if (maxHR < 0) errorLoading();
 | 
			
		||||
        buttonLoad.setVisible(false);
 | 
			
		||||
        textAge.setVisible(false);
 | 
			
		||||
        textHR.setVisible(false);
 | 
			
		||||
        spinnerAge.setVisible(false);
 | 
			
		||||
        spinnerHR.setVisible(false);
 | 
			
		||||
        labelWelcome.setVisible(false);
 | 
			
		||||
        spinner.setVisible(true);
 | 
			
		||||
        snackbar.show("Loading file", 5000);
 | 
			
		||||
| 
						 | 
				
			
			@ -110,7 +116,7 @@ public class SplashController implements Initializable{
 | 
			
		|||
            protected DataBundle call() throws Exception {
 | 
			
		||||
                DataBundle db = null;
 | 
			
		||||
                try {
 | 
			
		||||
                    db = DataBundle.loadFrom(file, maxHR);
 | 
			
		||||
                    db = DataBundle.loadFrom(file, spinnerHR.getValue());
 | 
			
		||||
                } catch (Exception e) {
 | 
			
		||||
                    e.printStackTrace();
 | 
			
		||||
                }
 | 
			
		||||
| 
						 | 
				
			
			@ -160,65 +166,46 @@ public class SplashController implements Initializable{
 | 
			
		|||
            }
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        Platform.runLater(() -> root.setOnDragOver(e -> {
 | 
			
		||||
            Dragboard db = e.getDragboard();
 | 
			
		||||
            if (db.hasFiles()) {
 | 
			
		||||
                e.acceptTransferModes(TransferMode.COPY);
 | 
			
		||||
            } else {
 | 
			
		||||
        Platform.runLater(() -> {
 | 
			
		||||
            root.setOnDragOver(e -> {
 | 
			
		||||
                Dragboard db = e.getDragboard();
 | 
			
		||||
                if (db.hasFiles()) {
 | 
			
		||||
                    e.acceptTransferModes(TransferMode.COPY);
 | 
			
		||||
                } else {
 | 
			
		||||
                    e.consume();
 | 
			
		||||
                }
 | 
			
		||||
            });
 | 
			
		||||
            root.setOnDragDropped(e -> {
 | 
			
		||||
                Dragboard db = e.getDragboard();
 | 
			
		||||
                boolean success = false;
 | 
			
		||||
                if (db.hasFiles()) {
 | 
			
		||||
                    success = true;
 | 
			
		||||
                    loadGPXFile(db.getFiles().get(0).getAbsoluteFile());
 | 
			
		||||
                }
 | 
			
		||||
                e.setDropCompleted(success);
 | 
			
		||||
                e.consume();
 | 
			
		||||
            }
 | 
			
		||||
        }));
 | 
			
		||||
 | 
			
		||||
        // Dropping over surface
 | 
			
		||||
        Platform.runLater(() -> root.setOnDragDropped(e -> {
 | 
			
		||||
            Dragboard db = e.getDragboard();
 | 
			
		||||
            boolean success = false;
 | 
			
		||||
            if (db.hasFiles()) {
 | 
			
		||||
                success = true;
 | 
			
		||||
                loadGPXFile(db.getFiles().get(0).getAbsoluteFile());
 | 
			
		||||
            }
 | 
			
		||||
            e.setDropCompleted(success);
 | 
			
		||||
            e.consume();
 | 
			
		||||
        }));
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
        snackbar.registerSnackbarContainer(root);
 | 
			
		||||
        spinnerAge.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(18, 99, 25, 1));
 | 
			
		||||
        spinnerHR.setValueFactory(new SpinnerValueFactory.IntegerSpinnerValueFactory(60, 202, 195, 5));
 | 
			
		||||
        spinnerAge.valueProperty().addListener((obs, oldV, newV) ->
 | 
			
		||||
                spinnerHR.setValueFactory(new SpinnerValueFactory
 | 
			
		||||
                        .IntegerSpinnerValueFactory(60, 202, 220 - newV, 5)));
 | 
			
		||||
        spinnerHR.valueProperty().addListener((obs, old, newV) ->
 | 
			
		||||
                spinnerAge.setValueFactory(new SpinnerValueFactory
 | 
			
		||||
                        .IntegerSpinnerValueFactory(18, 99, 220 - newV, 1)));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void errorLoading() {
 | 
			
		||||
        textAge.setVisible(true);
 | 
			
		||||
        textHR.setVisible(true);
 | 
			
		||||
        spinnerHR.setVisible(true);
 | 
			
		||||
        spinnerAge.setVisible(true);
 | 
			
		||||
        buttonLoad.setVisible(true);
 | 
			
		||||
        labelWelcome.setVisible(true);
 | 
			
		||||
        spinner.setVisible(false);
 | 
			
		||||
        snackbar.show(App.GENERAL_BUNDLE.getString("error.file"), 3000);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private int showHRDialog() {
 | 
			
		||||
        Dialog<Integer> dialog = new Dialog<>();
 | 
			
		||||
        dialog.setTitle("Input your maximum heart rate or age");
 | 
			
		||||
        GridPane grid = new GridPane();
 | 
			
		||||
        grid.setHgap(5);
 | 
			
		||||
        grid.setVgap(2);
 | 
			
		||||
        grid.addColumn(0, new Text("Heart rate:"), new Text("Age:"));
 | 
			
		||||
        Spinner<Integer> spinnerAge = new Spinner<>(18, 99, 25, 1);
 | 
			
		||||
        Spinner<Integer> spinnerHR  = new Spinner<>(60, 202, 180, 5);
 | 
			
		||||
        spinnerAge.valueProperty().addListener((obs, oldV, newV) ->
 | 
			
		||||
            spinnerHR.setValueFactory(new SpinnerValueFactory
 | 
			
		||||
                    .IntegerSpinnerValueFactory(60, 202, 220 - newV, 5)));
 | 
			
		||||
        spinnerHR.valueProperty().addListener((obs, old, newV) ->
 | 
			
		||||
                spinnerAge.setValueFactory(new SpinnerValueFactory
 | 
			
		||||
                        .IntegerSpinnerValueFactory(18, 99, 220 - newV, 1)));
 | 
			
		||||
        grid.addColumn(1, spinnerHR, spinnerAge);
 | 
			
		||||
        Button buttonOk = new Button("Ok");
 | 
			
		||||
        buttonOk.setDefaultButton(true);
 | 
			
		||||
        buttonOk.setOnAction(event -> {
 | 
			
		||||
            dialog.setResult(spinnerHR.getValue());
 | 
			
		||||
            dialog.close();
 | 
			
		||||
        });
 | 
			
		||||
        grid.add(buttonOk, 1, 2);
 | 
			
		||||
        dialog.getDialogPane().setContent(grid);
 | 
			
		||||
        dialog.showAndWait();
 | 
			
		||||
        if (dialog.getResult() != null)
 | 
			
		||||
            return dialog.getResult();
 | 
			
		||||
        else
 | 
			
		||||
            return -1;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -29,24 +29,23 @@
 | 
			
		|||
<?import com.jfoenix.controls.JFXSpinner?>
 | 
			
		||||
<?import javafx.geometry.Insets?>
 | 
			
		||||
<?import javafx.scene.control.Label?>
 | 
			
		||||
<?import javafx.scene.control.Spinner?>
 | 
			
		||||
<?import javafx.scene.image.ImageView?>
 | 
			
		||||
<?import javafx.scene.layout.*?>
 | 
			
		||||
<AnchorPane xmlns:fx="http://javafx.com/fxml/1" fx:id="root" maxHeight="-Infinity" maxWidth="-Infinity"
 | 
			
		||||
            minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="300.0" styleClass="background"
 | 
			
		||||
            stylesheets="@../css/palette.css" xmlns="http://javafx.com/javafx/8.0.76-ea"
 | 
			
		||||
            fx:controller="es.kauron.estraba.controller.SplashController">
 | 
			
		||||
<?import javafx.scene.layout.AnchorPane?>
 | 
			
		||||
<?import javafx.scene.text.Text?>
 | 
			
		||||
 | 
			
		||||
<AnchorPane fx:id="root" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="300.0" prefWidth="300.0" styleClass="background" stylesheets="@../css/palette.css" xmlns="http://javafx.com/javafx/8.0.76-ea" xmlns:fx="http://javafx.com/fxml/1" fx:controller="es.kauron.estraba.controller.SplashController">
 | 
			
		||||
      <ImageView fx:id="imgLogo" fitHeight="150.0" fitWidth="200.0" pickOnBounds="true" preserveRatio="true" AnchorPane.leftAnchor="50.0" AnchorPane.rightAnchor="50.0" AnchorPane.topAnchor="25.0">
 | 
			
		||||
      </ImageView>
 | 
			
		||||
      <JFXSpinner fx:id="spinner" visible="false" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
 | 
			
		||||
      <Label fx:id="labelWelcome" alignment="CENTER" text="%label.welcome" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
 | 
			
		||||
      <StackPane layoutX="-1.0" layoutY="251.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0">
 | 
			
		||||
            <JFXButton fx:id="buttonLoad" maxHeight="-Infinity" maxWidth="-Infinity" onAction="#loadGPXFile" styleClass="accent-color" text="%label.loadGPX">
 | 
			
		||||
               <padding>
 | 
			
		||||
                  <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
 | 
			
		||||
               </padding>
 | 
			
		||||
               <StackPane.margin>
 | 
			
		||||
                  <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
 | 
			
		||||
               </StackPane.margin>
 | 
			
		||||
            </JFXButton>
 | 
			
		||||
      </StackPane>
 | 
			
		||||
      <Label fx:id="labelWelcome" alignment="CENTER" layoutX="101.0" layoutY="91.0" text="%label.welcome" />
 | 
			
		||||
         <JFXButton fx:id="buttonLoad" layoutX="87.0" layoutY="237.0" maxHeight="-Infinity" maxWidth="-Infinity" onAction="#loadGPXFile" styleClass="default-primary-color" text="%label.loadGPX">
 | 
			
		||||
            <padding>
 | 
			
		||||
               <Insets bottom="15.0" left="15.0" right="15.0" top="15.0" />
 | 
			
		||||
            </padding>
 | 
			
		||||
         </JFXButton>
 | 
			
		||||
   <Spinner fx:id="spinnerHR" layoutX="124.0" layoutY="118.0" />
 | 
			
		||||
   <Spinner fx:id="spinnerAge" layoutX="124.0" layoutY="150.0" />
 | 
			
		||||
   <Text fx:id="textHR" layoutX="14.0" layoutY="137.0" strokeType="OUTSIDE" strokeWidth="0.0" text="%label.maxHR" />
 | 
			
		||||
   <Text fx:id="textAge" layoutX="14.0" layoutY="169.0" strokeType="OUTSIDE" strokeWidth="0.0" text="%label.age" />
 | 
			
		||||
</AnchorPane>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@
 | 
			
		|||
app.extension=GPX data files
 | 
			
		||||
app.title=ESTRABA
 | 
			
		||||
error.file=Error loading file
 | 
			
		||||
label.age=Age
 | 
			
		||||
label.begin=Salida
 | 
			
		||||
label.cadence=Cadence
 | 
			
		||||
label.distance=Distance
 | 
			
		||||
| 
						 | 
				
			
			@ -33,6 +34,7 @@ label.elevation=Elevation
 | 
			
		|||
label.end=Meta
 | 
			
		||||
label.hr=Heart rate
 | 
			
		||||
label.loadGPX=Load GPX file
 | 
			
		||||
label.maxHR=Max. heart rate
 | 
			
		||||
label.motivation=Welcome!
 | 
			
		||||
label.speed=Speed
 | 
			
		||||
label.welcome=Welcome!
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,13 +26,15 @@
 | 
			
		|||
app.extension=Arxius GPX
 | 
			
		||||
app.title=ESTRABA
 | 
			
		||||
error.file=Error
 | 
			
		||||
label.age=Edat
 | 
			
		||||
label.begin=Salida
 | 
			
		||||
label.cadence=Cadencia
 | 
			
		||||
label.distance=Distancia
 | 
			
		||||
label.elevation=Elevacion
 | 
			
		||||
label.end=Meta
 | 
			
		||||
label.hr=YOLO
 | 
			
		||||
label.hr=Pulsacions
 | 
			
		||||
label.loadGPX=Obrir arxiu GPX
 | 
			
		||||
label.maxHR=Max. pulsacions/min
 | 
			
		||||
label.motivation=\u00a1Benvinguts!
 | 
			
		||||
label.speed=Speed
 | 
			
		||||
label.welcome=Benvingut!
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@
 | 
			
		|||
app.extension=Archivos de datos GPX
 | 
			
		||||
app.title=ESTRABA
 | 
			
		||||
error.file=Error al cargar el archivo
 | 
			
		||||
label.age=Edad
 | 
			
		||||
label.begin=Salida
 | 
			
		||||
label.cadence=Cadencia
 | 
			
		||||
label.distance=Distancia
 | 
			
		||||
| 
						 | 
				
			
			@ -33,6 +34,7 @@ label.elevation=Elevacion
 | 
			
		|||
label.end=Meta
 | 
			
		||||
label.hr=Pulsaci\u00f3nes
 | 
			
		||||
label.loadGPX=Abrir archivo GPX
 | 
			
		||||
label.maxHR=Max. pulsaciones/min
 | 
			
		||||
label.motivation=\u00a1Bienvenido!
 | 
			
		||||
label.speed=Velocidad
 | 
			
		||||
label.welcome=¡Bienvenido!
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Reference in a new issue