fix first start

This commit is contained in:
2026-02-21 18:22:25 +01:00
parent 02026633ed
commit c40be1c203
3 changed files with 1684 additions and 1633 deletions

View File

@ -1,122 +1,158 @@
package com.jFxKasse.application; package com.jFxKasse.application;
import javafx.application.Application; import javafx.application.Application;
import javafx.event.EventHandler; import javafx.event.EventHandler;
import java.io.File; import java.io.File;
import javafx.animation.Animation; import javafx.animation.Animation;
import javafx.animation.KeyFrame; import javafx.animation.KeyFrame;
import javafx.animation.Timeline; import javafx.animation.Timeline;
import javafx.fxml.FXMLLoader; import javafx.fxml.FXMLLoader;
import javafx.stage.Stage; import javafx.stage.Stage;
import javafx.util.Duration; import javafx.util.Duration;
import com.jFxKasse.controller.MainWindowController; import com.jFxKasse.controller.MainWindowController;
import com.jFxKasse.controller.PrinterController; import com.jFxKasse.controller.PrinterController;
import com.jFxKasse.controller.XMLController; import com.jFxKasse.controller.XMLController;
import com.jFxKasse.controller.DBController; import com.jFxKasse.controller.DBController;
import com.jFxKasse.controller.KeyController; import com.jFxKasse.controller.KeyController;
import javafx.scene.Scene; import javafx.scene.Scene;
import javafx.scene.input.KeyEvent; import javafx.scene.input.KeyEvent;
import javafx.scene.layout.AnchorPane; import javafx.scene.layout.AnchorPane;
public class Main extends Application { public class Main extends Application {
// Path to config.xml and the database // Path to config.xml and the database
public static String filepath; public static String filepath;
private static String osName = System.getProperty("os.name"); private static String osName = System.getProperty("os.name");
private static String userHome = System.getProperty("user.home"); private static String userHome = System.getProperty("user.home");
private MainWindowController mwc; private MainWindowController mwc;
private XMLController xmlc = new XMLController(filepath); // Initialized in start() after filepath is set by main()
private XMLController xmlc;
private DBController dbc = new DBController(filepath);
private DBController dbc;
private PrinterController pc = new PrinterController();
private PrinterController pc = new PrinterController();
private KeyController kc;
private KeyController kc;
private Stage primaryStage;
private Stage primaryStage;
@Override
public void start(Stage primaryStage) { @Override
this.primaryStage = primaryStage; public void start(Stage primaryStage) {
System.out.println("\nstarting jFxKasse\n"); this.primaryStage = primaryStage;
mainWindow(); // filepath is set by main() before launch(); initialize controllers here
} xmlc = new XMLController(filepath);
dbc = new DBController(filepath);
private void mainWindow() { System.out.println("\nstarting jFxKasse\n");
try { mainWindow();
FXMLLoader loader = new FXMLLoader( }
getClass().getResource("/fxml/MainWindow.fxml"));
private void mainWindow() {
AnchorPane pane = loader.load(); try {
primaryStage.setTitle("jFxKasse"); // Window title FXMLLoader loader = new FXMLLoader(
getClass().getResource("/fxml/MainWindow.fxml"));
mwc = loader.getController(); // Set the MainWindowController
pc.searchPrinters(); // Search for available printers AnchorPane pane = loader.load();
mwc.setMain(this, dbc, xmlc, pc); // Pass instances to the controller primaryStage.setTitle("jFxKasse"); // Window title
firstStart(); // Check if this is the first run mwc = loader.getController(); // Set the MainWindowController
pc.searchPrinters(); // Search for available printers
Scene scene = new Scene(pane); mwc.setMain(this, dbc, xmlc, pc); // Pass instances to the controller
scene.getStylesheets().add(
Main.class.getResource("/css/application.css").toExternalForm()); firstStart(); // Check if this is the first run
primaryStage.setScene(scene);
primaryStage.show(); // Show the stage Scene scene = new Scene(pane);
scene.getStylesheets().add(
// Attach the KeyController Main.class.getResource("/css/application.css").toExternalForm());
kc = new KeyController(scene, mwc); primaryStage.setScene(scene);
primaryStage.show(); // Show the stage
Timeline timeline = new Timeline(
new KeyFrame(Duration.seconds(1), ev -> { // Attach the KeyController
mwc.updateTimeLabel(); // Update time label on UI kc = new KeyController(scene, mwc);
}));
timeline.setCycleCount(Animation.INDEFINITE); Timeline timeline = new Timeline(
timeline.play(); new KeyFrame(Duration.seconds(1), ev -> {
} catch (Exception e) { mwc.updateTimeLabel(); // Update time label on UI
e.printStackTrace(); }));
} timeline.setCycleCount(Animation.INDEFINITE);
} timeline.play();
} catch (Exception e) {
public static void main(String[] args) { e.printStackTrace();
if (osName.contains("Windows")) { }
System.out.println("FCK Windows"); }
filepath = userHome + "/Documents/jFxKasse/";
} else { public static void main(String[] args) {
filepath = userHome + "/jFxKasse/"; if (osName.contains("Windows")) {
} System.out.println("FCK Windows");
launch(args); filepath = userHome + "/Documents/jFxKasse/";
} } else {
filepath = userHome + "/jFxKasse/";
/** }
* Checks if the config.xml is preset. launch(args);
*/ }
private void firstStart() throws Exception {
if (xmlc.loadSettings()) { /**
// config.xml found, app starting normal * Checks if the config.xml is present and initializes accordingly.
System.out.println("XML found!"); */
mwc.initUI(); // Initialize the UI elements private void firstStart() throws Exception {
mwc.setDBLabel(); // Set database labels if (xmlc.loadSettings()) {
dbc.setDbname(xmlc.getDatabaseName()); // Pass database name // config.xml found, app starting normally
dbc.connectDatabase(); // Establish DB connection System.out.println("XML found!");
mwc.fillTablePositionen(); // Fill TreeTable 'Positions' mwc.initUI(); // Initialize the UI elements
mwc.fillCategory(); mwc.setDBLabel(); // Set database labels
mwc.fillPrinterSettings(); dbc.setDbname(xmlc.getDatabaseName()); // Pass database name
mwc.fillTableJobs(); try {
mwc.loadGridButtons(); dbc.connectDatabase(); // Establish DB connection
mwc.getSelectedCat(); // Load DB entries in ChoiceBox } catch (Exception e) {
mwc.createNewJob(); e.printStackTrace();
} else { showErrorDialog("Datenbankfehler",
// config.xml NOT found, first start of app "Die Datenbank konnte nicht geöffnet werden.",
System.out.println("no XML found!"); "Datei: " + xmlc.getDatabaseName() + ".db\n\n"
xmlc.initXML(); // Set default values + "Bitte prüfen Sie, ob die Datei vorhanden und nicht beschädigt ist.\n"
mwc.blockUI(true); // Disable UI elements that need DB + "Fehlermeldung: " + e.getMessage());
mwc.blockUnlock(); return;
File dir = new File(filepath); }
dir.mkdir(); // Create new subfolder mwc.fillTablePositionen(); // Fill TreeTable 'Positions'
} mwc.fillCategory();
} mwc.fillPrinterSettings();
} mwc.fillTableJobs();
mwc.loadGridButtons();
mwc.getSelectedCat(); // Load DB entries in ChoiceBox
mwc.createNewJob();
} else {
// config.xml NOT found — first start of app
System.out.println("no XML found!");
xmlc.initXML(); // Set default values in memory
File dir = new File(filepath);
dir.mkdir(); // Create config directory
try {
xmlc.saveSettings(); // Persist defaults immediately so next start is normal
System.out.println("Default config.xml written.");
} catch (Exception e) {
e.printStackTrace();
showErrorDialog("Konfigurationsfehler",
"Die Konfigurationsdatei konnte nicht geschrieben werden.",
"Pfad: " + filepath + "config.xml\n\n"
+ "Bitte prüfen Sie die Schreibrechte.\n"
+ "Fehlermeldung: " + e.getMessage());
}
mwc.blockUI(true); // Disable UI elements that need a DB
mwc.blockUnlock(); // Show first-start hint, disable lock button
}
}
/** Shows a modal error alert dialog on the JavaFX thread. */
private void showErrorDialog(String title, String header, String content) {
javafx.scene.control.Alert alert = new javafx.scene.control.Alert(
javafx.scene.control.Alert.AlertType.ERROR);
alert.setTitle(title);
alert.setHeaderText(header);
alert.setContentText(content);
alert.setResizable(true);
alert.showAndWait();
}
}

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.CheckBox?>
<?import com.jfoenix.controls.JFXButton?>
<?import com.jfoenix.controls.JFXTextField?>
<?import com.jfoenix.controls.JFXToggleButton?>
<?import javafx.scene.control.Button?> <?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?> <?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.Label?> <?import javafx.scene.control.Label?>
@ -40,10 +40,10 @@
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftNewDBName" alignment="CENTER" layoutX="25.0" layoutY="10.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftNewDBName" alignment="CENTER" layoutX="25.0" layoutY="10.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
<Label fx:id="labelDBStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="1.0" layoutY="75.0" prefHeight="34.0" prefWidth="551.0" text="Keine Datenbank gefunden!"> <Label fx:id="labelDBStatus" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="1.0" layoutY="75.0" prefHeight="34.0" prefWidth="551.0" text="Keine Datenbank gefunden!">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
@ -59,6 +59,11 @@
<Font name="Cantarell Regular" size="13.0" /> <Font name="Cantarell Regular" size="13.0" />
</font> </font>
</Button> </Button>
<Label fx:id="labelFirstStart" alignment="CENTER" layoutX="1.0" layoutY="170.0" prefHeight="50.0" prefWidth="551.0" text="⚠ Erststart: Bitte geben Sie einen Datenbanknamen ein und klicken Sie auf 'Neue Datenbank anlegen'." textFill="#cc0000" visible="false" wrapText="true">
<font>
<Font name="Cantarell Bold" size="14.0" />
</font>
</Label>
</children> </children>
</AnchorPane> </AnchorPane>
</content> </content>
@ -95,26 +100,26 @@
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftKat01" alignment="CENTER" layoutX="50.0" layoutY="5.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftKat01" alignment="CENTER" layoutX="50.0" layoutY="5.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
<JFXTextField fx:id="tftKat02" alignment="CENTER" layoutX="50.0" layoutY="45.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftKat02" alignment="CENTER" layoutX="50.0" layoutY="45.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
<JFXTextField fx:id="tftKat03" alignment="CENTER" layoutX="50.0" layoutY="85.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftKat03" alignment="CENTER" layoutX="50.0" layoutY="85.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
<JFXTextField fx:id="tftKat04" alignment="CENTER" layoutX="50.0" layoutY="125.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftKat04" alignment="CENTER" layoutX="50.0" layoutY="125.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
<JFXTextField fx:id="tftKat05" alignment="CENTER" layoutX="50.0" layoutY="165.0" prefHeight="25.0" prefWidth="376.0"> <TextField fx:id="tftKat05" alignment="CENTER" layoutX="50.0" layoutY="165.0" prefHeight="25.0" prefWidth="376.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
<Button fx:id="btnSaveCat" layoutX="200.0" layoutY="204.0" mnemonicParsing="false" onAction="#btnSaveCatAction" text="Kategorien speichern"> <Button fx:id="btnSaveCat" layoutX="200.0" layoutY="204.0" mnemonicParsing="false" onAction="#btnSaveCatAction" text="Kategorien speichern">
<font> <font>
<Font name="Cantarell Regular" size="13.0" /> <Font name="Cantarell Regular" size="13.0" />
@ -133,15 +138,15 @@
<children> <children>
<ChoiceBox fx:id="printerChoise" layoutX="270.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="178.0" /> <ChoiceBox fx:id="printerChoise" layoutX="270.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="178.0" />
<Spinner fx:id="linesSpinner" layoutX="35.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0" /> <Spinner fx:id="linesSpinner" layoutX="35.0" layoutY="10.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0" />
<JFXTextField fx:id="tftheader" alignment="CENTER" layoutX="65.0" layoutY="90.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0"> <TextField fx:id="tftheader" alignment="CENTER" layoutX="65.0" layoutY="90.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
<JFXToggleButton fx:id="switchSeparate" layoutX="270.0" layoutY="170.0" text="Kategorien separat drucken"> <CheckBox fx:id="switchSeparate" layoutX="270.0" layoutY="170.0" text="Kategorien separat drucken">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font> </font>
</JFXToggleButton> </CheckBox>
<Label alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="450.0" layoutY="10.0" prefHeight="34.0" prefWidth="107.0" text="Drucker:"> <Label alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="450.0" layoutY="10.0" prefHeight="34.0" prefWidth="107.0" text="Drucker:">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
@ -179,10 +184,10 @@
</Button> </Button>
<Spinner fx:id="offsetHeaderSpinner" layoutX="324.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0" /> <Spinner fx:id="offsetHeaderSpinner" layoutX="324.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0" />
<Spinner fx:id="offsetFooterSpinner" layoutX="35.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0" /> <Spinner fx:id="offsetFooterSpinner" layoutX="35.0" layoutY="48.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="92.0" />
<JFXTextField fx:id="tftfooter" alignment="CENTER" layoutX="65.0" layoutY="130.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0"> <TextField fx:id="tftfooter" alignment="CENTER" layoutX="65.0" layoutY="130.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="25.0" prefWidth="377.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font></JFXTextField> </font></TextField>
</children> </children>
</AnchorPane> </AnchorPane>
</content> </content>
@ -227,21 +232,21 @@
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftNewPosition" alignment="CENTER" layoutX="307.0" layoutY="8.0" prefHeight="27.0" prefWidth="203.0"> <TextField fx:id="tftNewPosition" alignment="CENTER" layoutX="307.0" layoutY="8.0" prefHeight="27.0" prefWidth="203.0">
<font> <font>
<Font name="Cantarell Regular" size="13.0" /> <Font name="Cantarell Regular" size="13.0" />
</font> </font>
</JFXTextField> </TextField>
<Label fx:id="labelNewValue" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="504.0" layoutY="50.0" prefHeight="34.0" prefWidth="118.0" text="Preis in Euro:"> <Label fx:id="labelNewValue" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="504.0" layoutY="50.0" prefHeight="34.0" prefWidth="118.0" text="Preis in Euro:">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font> </font>
</Label> </Label>
<JFXTextField fx:id="tftNewValue" alignment="CENTER" labelFloat="true" layoutX="442.0" layoutY="42.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="27.0" prefWidth="66.0"> <TextField fx:id="tftNewValue" alignment="CENTER" layoutX="442.0" layoutY="42.0" nodeOrientation="LEFT_TO_RIGHT" prefHeight="27.0" prefWidth="66.0">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
</font> </font>
</JFXTextField> </TextField>
<Label fx:id="labelNewColor" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="517.0" layoutY="90.0" prefHeight="34.0" prefWidth="105.0" text="Farbe:"> <Label fx:id="labelNewColor" alignment="TOP_RIGHT" contentDisplay="RIGHT" layoutX="517.0" layoutY="90.0" prefHeight="34.0" prefWidth="105.0" text="Farbe:">
<font> <font>
<Font name="Cantarell Regular" size="18.0" /> <Font name="Cantarell Regular" size="18.0" />
@ -360,131 +365,131 @@
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" /> <RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints> </rowConstraints>
<children> <children>
<JFXButton fx:id="gridButton04" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton04Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1"> <Button fx:id="gridButton04" maxWidth="235.0" minWidth="179.0" onAction="#gridButton04Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton05" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton05Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true"> <Button fx:id="gridButton05" maxWidth="235.0" minWidth="179.0" onAction="#gridButton05Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton03" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton03Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2"> <Button fx:id="gridButton03" maxWidth="235.0" minWidth="179.0" onAction="#gridButton03Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton02" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton02Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3"> <Button fx:id="gridButton02" maxWidth="235.0" minWidth="179.0" onAction="#gridButton02Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton01" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton01Action" prefHeight="134.0" prefWidth="179.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4"> <Button fx:id="gridButton01" maxWidth="235.0" minWidth="179.0" onAction="#gridButton01Action" prefHeight="134.0" prefWidth="179.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton10" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton10Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="1"> <Button fx:id="gridButton10" maxWidth="235.0" minWidth="179.0" onAction="#gridButton10Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton09" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton09Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="1"> <Button fx:id="gridButton09" maxWidth="235.0" minWidth="179.0" onAction="#gridButton09Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton08" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton08Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="1"> <Button fx:id="gridButton08" maxWidth="235.0" minWidth="179.0" onAction="#gridButton08Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton07" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton07Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="1"> <Button fx:id="gridButton07" maxWidth="235.0" minWidth="179.0" onAction="#gridButton07Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton06" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton06Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="1"> <Button fx:id="gridButton06" maxWidth="235.0" minWidth="179.0" onAction="#gridButton06Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="1">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton15" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton15Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="2"> <Button fx:id="gridButton15" maxWidth="235.0" minWidth="179.0" onAction="#gridButton15Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton14" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton14Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="2"> <Button fx:id="gridButton14" maxWidth="235.0" minWidth="179.0" onAction="#gridButton14Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton13" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton13Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="2"> <Button fx:id="gridButton13" maxWidth="235.0" minWidth="179.0" onAction="#gridButton13Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton12" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton12Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="2"> <Button fx:id="gridButton12" maxWidth="235.0" minWidth="179.0" onAction="#gridButton12Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton11" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton11Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="2"> <Button fx:id="gridButton11" maxWidth="235.0" minWidth="179.0" onAction="#gridButton11Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="2">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton20" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton20Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="3"> <Button fx:id="gridButton20" maxWidth="235.0" minWidth="179.0" onAction="#gridButton20Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton19" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton19Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="3"> <Button fx:id="gridButton19" maxWidth="235.0" minWidth="179.0" onAction="#gridButton19Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton18" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton18Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="3"> <Button fx:id="gridButton18" maxWidth="235.0" minWidth="179.0" onAction="#gridButton18Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton17" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton17Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="3"> <Button fx:id="gridButton17" maxWidth="235.0" minWidth="179.0" onAction="#gridButton17Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton16" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton16Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="3"> <Button fx:id="gridButton16" maxWidth="235.0" minWidth="179.0" onAction="#gridButton16Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="3">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton25" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton25Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="4"> <Button fx:id="gridButton25" maxWidth="235.0" minWidth="179.0" onAction="#gridButton25Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton23" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton23Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="4"> <Button fx:id="gridButton23" maxWidth="235.0" minWidth="179.0" onAction="#gridButton23Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="2" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton22" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton22Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="4"> <Button fx:id="gridButton22" maxWidth="235.0" minWidth="179.0" onAction="#gridButton22Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="3" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton21" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton21Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="4"> <Button fx:id="gridButton21" maxWidth="235.0" minWidth="179.0" onAction="#gridButton21Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="4" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
<JFXButton fx:id="gridButton24" buttonType="RAISED" maxWidth="235.0" minWidth="179.0" onAction="#gridButton24Action" prefHeight="169.0" prefWidth="235.0" ripplerFill="#655252" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="4"> <Button fx:id="gridButton24" maxWidth="235.0" minWidth="179.0" onAction="#gridButton24Action" prefHeight="169.0" prefWidth="235.0" text="leer 0,00€" textAlignment="CENTER" wrapText="true" GridPane.columnIndex="1" GridPane.rowIndex="4">
<font> <font>
<Font name="Cantarell Regular" size="24.0" /> <Font name="Cantarell Regular" size="24.0" />
</font> </font>
</JFXButton> </Button>
</children> </children>
</GridPane> </GridPane>
<Button fx:id="btnPrintBill" contentDisplay="CENTER" focusTraversable="false" graphicTextGap="1.0" layoutX="75.0" layoutY="588.0" maxHeight="88.0" minHeight="75.0" mnemonicParsing="false" onAction="#btnPrintBillAction" prefHeight="88.0" prefWidth="258.0" text="Drucken" textAlignment="CENTER" wrapText="true"> <Button fx:id="btnPrintBill" contentDisplay="CENTER" focusTraversable="false" graphicTextGap="1.0" layoutX="75.0" layoutY="588.0" maxHeight="88.0" minHeight="75.0" mnemonicParsing="false" onAction="#btnPrintBillAction" prefHeight="88.0" prefWidth="258.0" text="Drucken" textAlignment="CENTER" wrapText="true">
@ -512,11 +517,11 @@
<Font name="Cantarell Regular" size="26.0" /> <Font name="Cantarell Regular" size="26.0" />
</font> </font>
</Label> </Label>
<JFXButton fx:id="btnLock" buttonType="RAISED" layoutX="1.0" layoutY="6.0" lineSpacing="2.0" onAction="#btnLockAction" prefHeight="42.0" prefWidth="180.0" ripplerFill="BLACK" text="Kasse sperren" textAlignment="CENTER" textFill="#c91c1c" textOverrun="LEADING_WORD_ELLIPSIS"> <Button fx:id="btnLock" layoutX="1.0" layoutY="6.0" lineSpacing="2.0" onAction="#btnLockAction" prefHeight="42.0" prefWidth="180.0" text="Kasse sperren" textAlignment="CENTER" textFill="#c91c1c" textOverrun="LEADING_WORD_ELLIPSIS">
<font> <font>
<Font name="Cantarell Regular" size="19.0" /> <Font name="Cantarell Regular" size="19.0" />
</font> </font>
</JFXButton> </Button>
<Line endX="800.0" layoutX="62.0" layoutY="465.0" rotate="90.0" startX="-100.0" strokeWidth="4.0" /> <Line endX="800.0" layoutX="62.0" layoutY="465.0" rotate="90.0" startX="-100.0" strokeWidth="4.0" />
</children> </children>
</AnchorPane> </AnchorPane>