package application; import javafx.fxml.FXML; import javafx.geometry.Insets; import javafx.scene.control.Button; import javafx.scene.control.ButtonType; import javafx.scene.control.Dialog; import javafx.scene.control.TreeTableColumn; import javafx.scene.control.TreeTableView; import javafx.scene.control.TextField; import javafx.scene.control.TreeItem; import javafx.scene.control.TitledPane; import javafx.scene.control.Tooltip; import javafx.scene.control.ChoiceBox; import java.awt.Toolkit; import java.awt.datatransfer.Clipboard; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Properties; import com.jfoenix.controls.JFXTextField; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.scene.control.Label; import javafx.scene.control.Tab; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.GridPane; import javafx.util.Pair; public class MainWindowController { Toolkit toolkit = Toolkit.getDefaultToolkit(); Clipboard clipboard = toolkit.getSystemClipboard(); @FXML private AnchorPane mainAnchorpane; @FXML private AnchorPane paneDB; @FXML private Tab tapPosEdit; @FXML private TreeTableView tableCurrentOrder; @FXML private TreeTableColumn columnQuantity; @FXML private TreeTableColumn columnPosition; @FXML private TreeTableColumn idSpalte01 = new TreeTableColumn<>( "tableCurrentOrder"); @FXML private TreeTableView jobsTreeTable; @FXML private TreeTableColumn columnJobValue; @FXML private TreeTableColumn columnState; @FXML private TreeTableColumn columnPositions; @FXML private TreeTableColumn columnTime; @FXML private TreeTableColumn columnJobNumber; @FXML private TreeTableColumn idSpalte02 = new TreeTableColumn<>( "jobsTreeTable"); @FXML private TreeTableView entryTreeTable; @FXML private TreeTableColumn columnColor; @FXML private TreeTableColumn columnCat; @FXML private TreeTableColumn columnPrize; @FXML private TreeTableColumn columnPositionsEdit; @FXML private TreeTableColumn columnPosnumber; @FXML private ChoiceBox colorChoise; @FXML private ChoiceBox catChoise; @FXML private Button ueberbtn; @FXML private Button gridButton01; @FXML private Button gridButton02; @FXML private Button gridButton03; @FXML private Button gridButton04; @FXML private Button gridButton05; @FXML private Button gridButton06; @FXML private Button gridButton07; @FXML private Button gridButton08; @FXML private Button gridButton09; @FXML private Button gridButton10; @FXML private Button gridButton11; @FXML private Button gridButton12; @FXML private Button gridButton13; @FXML private Button gridButton14; @FXML private Button gridButton15; @FXML private Button gridButton16; @FXML private Button gridButton17; @FXML private Button gridButton18; @FXML private Button gridButton19; @FXML private Button gridButton20; @FXML private Button gridButton21; @FXML private Button gridButton22; @FXML private Button gridButton23; @FXML private Button gridButton24; @FXML private Button gridButton25; @FXML private Button btnDeleteSelectedPosition; @FXML private Button btnPrintBill; @FXML private Button btnLock; @FXML private Button btnReprintJob; @FXML private Button btnCancelJob; @FXML private Button btnCalcStats; @FXML private Button btnSaveEntry; @FXML private Button btnClearEntry; @FXML private Button btnCreateNewDatabase; @FXML private Button btnOpenFolder; @FXML private Label labelCat01; @FXML private Label labelCat02; @FXML private Label labelCat05; @FXML private Label labelCat04; @FXML private Label labelCat03; @FXML private JFXTextField tftKat01; @FXML private JFXTextField tftKat02; @FXML private JFXTextField tftKat03; @FXML private JFXTextField tftKat04; @FXML private JFXTextField tftKat05; @FXML private Button btnSaveCat; @FXML private Label labelAllPrize; @FXML private Label labelJobCounter; @FXML private Label labelTime; @FXML private Label labelJobCount; @FXML private Label labelAvgJob; @FXML private Label labelAllValue; @FXML private Label labelSelectCat; @FXML private Label labelNewPosition; @FXML private Label labelNewValue; @FXML private Label labelNewColor; @FXML private Label labelDBStatus; @FXML private Label labelDBName; @FXML private TitledPane titlePaneStats; @FXML private TitledPane titlePaneCat; @FXML private TitledPane titledPaneEntry; @FXML private TextField tftNewPosition; @FXML private TextField tftNewValue; @FXML private TextField tftNewDBName; @SuppressWarnings("unused") private Main main; private DBController dbc; private String filepathXMLLinux = System.getProperty("user.home") + "/bin/jFxKasse/config.xml"; // Pfad wo die XML liegt private int idPositionen = 0; private String selectedColorName; private String selectedCatName; private String databaseName; private boolean lockState = false; private boolean isPrintBtnDisabled = true; private Job currentJob = null; private String currentOrderPosName; private int selectedJobId; @FXML TreeItem rootCurrentJob = new TreeItem<>( new tableDataCurrentOrder("0", 0)); @FXML TreeItem rootJobs = new TreeItem<>( new tableDataJob(0, "0", "0", "0", "0")); @FXML TreeItem rootPositionen = new TreeItem<>( new tableDataPositionen(0, "0", "0", "0", "0")); Properties props = new Properties(); @FXML public void ueberbtnAction(ActionEvent event) { // opens the 'Über' dialog // creates a dialog Dialog> dialog = new Dialog<>(); dialog.setTitle("Über jFxKasse"); dialog.setHeaderText( "Informationen und Lizenzen - Version 0.1 - Without Printer"); dialog.getDialogPane().getButtonTypes().addAll(ButtonType.OK); GridPane grid = new GridPane(); grid.setHgap(10); grid.setVgap(10); grid.setPadding(new Insets(20, 150, 10, 10)); grid.add(new Label( "Einfaches Kassensystem für kleine bis mittel große Veranstaltungen mit Bon-Drucker\n" + "\nUnter Lizenz GPL-3.0 abrufbar auf https://git.mosad.xyz/localhorst/jFxKasse\n" + "\nDatenbank: sqlite.org - Public Domain" + " \nUI Design01: eclipse.org/efxclipse/install.html - Eclipse Public License 1.0" + " \nUI Design02: http://www.jfoenix.com/ - Apache License 2.0" + " \nUI - Datenbank Integration: basierend auf Project-HomeFlix - github.com/Seil0/Project-HomeFlix - GPLv3 \n" + " \nMaintainer: hendrik.schutter@coptersicht.de" + " \n(c) 2018 Hendrik Schutter"), 0, 0); dialog.getDialogPane().setContent(grid); // Setzt die GridPane auf die dialog.setResizable(true); // DialogPane dialog.showAndWait(); } @FXML public void btnOpenFolderAction(ActionEvent event) throws IOException { Runtime.getRuntime().exec( "xdg-open " + System.getProperty("user.home") + "/bin/jFxKasse"); } @FXML public void btnCreateNewDatabaseAction(ActionEvent event) throws Exception { if(!(tftNewDBName.getText().equals(""))) { setDatabaseName(tftNewDBName.getText()); dbc.dbname = getDatabaseName(); dbc.connectDatabase(); // establish DB connection dbc.createTablePositionen(); // Create new table dbc.erstelleTabelleJobs(); // Create new table dbc.createTableCategory(); // Create new table try { saveSettings(getDatabaseName()); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } setDBLabel(); // Set new databese labels blockUI(false); // unlock UI elements that need DB fillTablePositionen(); // fill TreeTable 'Positionen' fillCategory(); initUI(); // Starting the UI elements getSelectedCat(); createNewJob(); btnLock.setDisable(false); } } @FXML public void btnSaveEntryAction(ActionEvent event) { dbc.setName_Positionen(idPositionen, tftNewPosition.getText()); dbc.setValue_Positionen(idPositionen, tftNewValue.getText()); dbc.setColor_Positionen(idPositionen, getColorCodes(selectedColorName)); dbc.setCat_Positionen(idPositionen, getSelectedCat()); fillTablePositionen(); // fill TreeTable 'Positionen' loadGridButtons(); } @FXML public void btnClearEntryAction(ActionEvent event) { // set default values dbc.setName_Positionen(idPositionen, "Noch frei"); dbc.setValue_Positionen(idPositionen, "0.00"); dbc.setColor_Positionen(idPositionen, "#FAF0E6"); dbc.setCat_Positionen(idPositionen, 6); fillTablePositionen(); // fill TreeTable 'Positionen' } @FXML public void btnCalcStatsAction(ActionEvent event) { System.out.println(dbc.getAllJobValue_Job()); if(dbc.getAllJobValue_Job() != null) { float allValue = Float.valueOf(dbc.getAllJobValue_Job()); float avgJobValue = ((float) allValue / dbc.getLatestJobNumber_Job()); setJobStatLabel(dbc.getLatestJobNumber_Job(), avgJobValue, allValue); }else { setJobStatLabel(dbc.getLatestJobNumber_Job(), 0, 0); } titlePaneStats.setVisible(true); } @FXML public void btnReprintJobAction(ActionEvent event) { } @FXML public void btnCancelJobAction(ActionEvent event) { dbc.setStatus_Jobs(selectedJobId + 1, "storniert"); fillTableJobs(); } @FXML public void btnLockAction(ActionEvent event) { lockState = !lockState; blockUI(lockState); if (lockState) { btnLock.setText("Kasse entsperren"); } else { btnLock.setText("Kasse sperren"); } } @FXML public void btnSaveCatAction(ActionEvent event) { dbc.setName_Category(1, tftKat01.getText()); dbc.setName_Category(2, tftKat02.getText()); dbc.setName_Category(3, tftKat03.getText()); dbc.setName_Category(4, tftKat04.getText()); dbc.setName_Category(5, tftKat05.getText()); fillCategory(); fillTablePositionen(); getSelectedCat(); } @FXML public void btnDeleteSelectedPositionAction(ActionEvent event) { currentJob.deletePosName(currentOrderPosName); rootCurrentJob.getChildren().remove(0, rootCurrentJob.getChildren().size()); for (int i = 0; i < currentJob.getCurrentJobPositionen().size(); i++) { rootCurrentJob.getChildren().add(new TreeItem( currentJob.getCurrentJobPositionen().get(i))); } setJobPrizeLabel(currentJob.getJobValue()); // currentJob.printJobOnConsole(); if (rootCurrentJob.getChildren().size() == 0) { btnPrintBill.setDisable(true); isPrintBtnDisabled = true; tapPosEdit.setDisable(false); btnDeleteSelectedPosition.setDisable(true); } if (!currentJob.existsPosName(currentOrderPosName)) { btnDeleteSelectedPosition.setDisable(true); } } @FXML public void btnPrintBillAction(ActionEvent event) { // currentJob.printJobOnConsole(); btnPrintBill.setDisable(true); tapPosEdit.setDisable(false); btnDeleteSelectedPosition.setDisable(true); isPrintBtnDisabled = true; setJobPrizeLabel(0); rootCurrentJob.getChildren().remove(0, rootCurrentJob.getChildren().size()); dbc.fillJobs_Jobs(currentJob.getJobnumber(), currentJob.getJobtime(), currentJob.createPosQuantityDBString(), currentJob.createPosNameDBString(), currentJob.createPosValueDBString(), currentJob.createPosCatDBString(), "verbucht", String.valueOf(currentJob.getJobValue())); fillTableJobs(); currentJob = null; createNewJob(); } @FXML public void gridButton01Action(ActionEvent event) { handelGridButtons(1); } @FXML public void gridButton02Action(ActionEvent event) { handelGridButtons(2); } @FXML public void gridButton03Action(ActionEvent event) { handelGridButtons(3); } @FXML public void gridButton04Action(ActionEvent event) { handelGridButtons(4); } @FXML public void gridButton05Action(ActionEvent event) { handelGridButtons(5); } @FXML public void gridButton06Action(ActionEvent event) { handelGridButtons(6); } @FXML public void gridButton07Action(ActionEvent event) { handelGridButtons(7); } @FXML public void gridButton08Action(ActionEvent event) { handelGridButtons(8); } @FXML public void gridButton09Action(ActionEvent event) { handelGridButtons(9); } @FXML public void gridButton10Action(ActionEvent event) { handelGridButtons(10); } @FXML public void gridButton11Action(ActionEvent event) { handelGridButtons(11); } @FXML public void gridButton12Action(ActionEvent event) { handelGridButtons(12); } @FXML public void gridButton13Action(ActionEvent event) { handelGridButtons(13); } @FXML public void gridButton14Action(ActionEvent event) { handelGridButtons(14); } @FXML public void gridButton15Action(ActionEvent event) { handelGridButtons(15); } @FXML public void gridButton16Action(ActionEvent event) { handelGridButtons(16); } @FXML public void gridButton17Action(ActionEvent event) { handelGridButtons(17); } @FXML public void gridButton18Action(ActionEvent event) { handelGridButtons(18); } @FXML public void gridButton19Action(ActionEvent event) { handelGridButtons(19); } @FXML public void gridButton20Action(ActionEvent event) { handelGridButtons(20); } @FXML public void gridButton21Action(ActionEvent event) { handelGridButtons(21); } @FXML public void gridButton22Action(ActionEvent event) { handelGridButtons(22); } @FXML public void gridButton23Action(ActionEvent event) { handelGridButtons(23); } @FXML public void gridButton24Action(ActionEvent event) { handelGridButtons(24); } @FXML public void gridButton25Action(ActionEvent event) { handelGridButtons(25); } @FXML public void fillTablePositionen() { // loads the table in the TreeTableView rootPositionen.getChildren().remove(0, rootPositionen.getChildren().size()); for (int i = 0; i < dbc.ladeTabellePositionen().size(); i++) { float fValue = Float.valueOf(dbc.ladeTabellePositionen().get(i).getValue()); String strValue = String.format("%.02f", fValue); strValue.replace('.', ','); tableDataPositionen helpTableData = new tableDataPositionen( dbc.ladeTabellePositionen().get(i).getID(), dbc.ladeTabellePositionen().get(i).getName(), (strValue + "€") , dbc.getCategoryNameFromPositionen(i + 1), getColorNames(dbc.ladeTabellePositionen().get(i).getColor())); rootPositionen.getChildren() .add(new TreeItem(helpTableData)); } } public void initUI() { System.out.println("initUI"); for (int i = 0; i < 25; i++) { getButtonByID(i).setVisible(false); } tftNewDBName.setText(getDatabaseName()); tftKat05.setDisable(true); titlePaneStats.setVisible(false); btnPrintBill.setDisable(true); btnDeleteSelectedPosition.setDisable(true); isPrintBtnDisabled = true; initPositionen(); initCurrentOrderTreeTableView(); initJobTreeTableView(); } public int getSelectedCat() { ObservableList cats = FXCollections.observableArrayList(); for (int i = 1; i < 5; i++) { if (dbc.getName_Category(i).equals("Standard")) { } else { cats.add(dbc.getName_Category(i)); } } /* * cats.add(dbc.getName_Category(1)); * * cats.add(dbc.getName_Category(2)); cats.add(dbc.getName_Category(3)); * cats.add(dbc.getName_Category(4)); */ cats.add(dbc.getName_Category(5)); catChoise.setItems(cats); catChoise.getSelectionModel().selectedIndexProperty() .addListener(new ChangeListener() { @Override public void changed(ObservableValue ov, Number value, Number new_value) { selectedCatName = catChoise.getItems().get((int) new_value) .toString(); } }); for (int i = 1; i < 6; i++) { if (dbc.getName_Category(i).equals(selectedCatName)) { return i; } } return 5; } public void fillCategory() { tftKat01.setText(dbc.getName_Category(1)); tftKat02.setText(dbc.getName_Category(2)); tftKat03.setText(dbc.getName_Category(3)); tftKat04.setText(dbc.getName_Category(4)); tftKat05.setText(dbc.getName_Category(5)); } private void initPositionen() { entryTreeTable.setRoot(rootPositionen); entryTreeTable.setShowRoot(false); entryTreeTable.setEditable(false); columnPosnumber.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnPositionsEdit.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnPrize.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnCat.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnColor.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); ObservableList color = FXCollections.observableArrayList("Rot", "Orange", "Braun", "Weiß", "Gelb", "Gr\u00fcn", "Blau", "Indigo"); colorChoise.setItems(color); colorChoise.getSelectionModel().selectedIndexProperty() .addListener(new ChangeListener() { @Override public void changed(ObservableValue ov, Number value, Number new_value) { selectedColorName = colorChoise.getItems() .get((int) new_value).toString(); } }); columnPosnumber.setCellValueFactory( cellData -> cellData.getValue().getValue().idProperty().asObject()); columnPositionsEdit.setCellValueFactory( cellData -> cellData.getValue().getValue().nameProperty()); columnPrize.setCellValueFactory( cellData -> cellData.getValue().getValue().valueProperty()); columnCat.setCellValueFactory( cellData -> cellData.getValue().getValue().catProperty()); columnColor.setCellValueFactory( cellData -> cellData.getValue().getValue().colorProperty()); entryTreeTable.getSelectionModel().selectedItemProperty() .addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldVal, Object newVal) { // last = selected; //for auto-play int selected = entryTreeTable.getSelectionModel() .getSelectedIndex(); // get selected item idPositionen = columnPosnumber.getCellData(selected); try { tftNewPosition .setText(dbc.getName_Positionen(idPositionen)); tftNewValue.setText(dbc.getValue_Positionen(idPositionen)); colorChoise.getSelectionModel().select( getColorID(dbc.getColor_Positionen(idPositionen))); catChoise.getSelectionModel().select( dbc.getCategoryNameFromPositionen(idPositionen)); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }); tftNewValue.textProperty().addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, String oldValue, String newValue) { if (!newValue.matches("\\d{0,7}([\\.]\\d{0,2})?")) { tftNewValue.setText(oldValue); } } }); final Tooltip tooltipName = new Tooltip(); tooltipName.setText("Name der neuen Position"); tooltipName.setStyle("-fx-font: normal bold 20 Cantarell; " + "-fx-base: #AE3522; " + "-fx-text-fill: orange;"); tftNewPosition.setTooltip(tooltipName); final Tooltip tooltipValue = new Tooltip(); tooltipValue .setText("Preis der neuen Position.\nPunkt als Trennzeichen!"); tooltipValue.setStyle("-fx-font: normal bold 20 Cantarell; " + "-fx-base: #AE3522; " + "-fx-text-fill: orange;"); tftNewValue.setTooltip(tooltipValue); labelNewValue.setTooltip(tooltipValue); } public void setMain(Main main, DBController dbc) { this.main = main; this.dbc = dbc; } public String getSystemTime() { DateFormat dateFormat = new SimpleDateFormat("HH:mm"); Date date = new Date(); String time = dateFormat.format(date); return time; } public String getSystemDate() { DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy"); Date date = new Date(); String dateStr = dateFormat.format(date); return dateStr; } public void saveSettings(String databasename) throws Exception { // Save settings to config.xml OutputStream outputStream; try { props.setProperty("databasename", databasename); outputStream = new FileOutputStream(filepathXMLLinux); props.storeToXML(outputStream, "jFxKasse settings"); outputStream.close(); } catch (IOException e) { } } public boolean loadSettings() throws Exception { // reads the settings from config.xml InputStream inputStream; try { inputStream = new FileInputStream(filepathXMLLinux); props.loadFromXML(inputStream); setDatabaseName(props.getProperty("databasename")); inputStream.close(); return true; } catch (IOException e) { e.printStackTrace(); return false; } } public String getDatabaseName() { return databaseName; } public void setDatabaseName(String NewDatabaseName) { databaseName = NewDatabaseName; } public void setDBLabel() throws Exception { if (loadSettings() == true) { labelDBStatus .setText("Geladene Datenbank: " + getDatabaseName() + ".db"); btnCreateNewDatabase.setDisable(true); tftNewDBName.setDisable(true); labelDBName.setTooltip(new Tooltip( "Um eine neue Datenbank zu erzeugen muss die vorherige config.xml und " + getDatabaseName() + ".db gelöscht werden! Anwendung danach neustarten!")); labelDBStatus.setTooltip(new Tooltip( "Um eine neue Datenbank zu erzeugen muss die vorherige config.xml und " + getDatabaseName() + ".db gelöscht werden! Anwendung danach neustarten!")); } else { labelDBStatus.setText("Keine Datenbank gefunden!"); } } private String getColorCodes(String pColorName) { switch (pColorName) { case "Rot": return "#ad0000"; case "Orange": return "#FF4500"; case "Braun": return "#8B4513"; case "Weiß": return "#FAF0E6"; case "Gelb": return "#FFD700"; case "Gr\u00fcn": return "#556B2F"; case "Blau": return "#00BFFF"; case "Indigo": return "#4B0082"; default: return "#FFFFFF"; } } private String getColorNames(String pColorCode) { switch (pColorCode) { case "#ad0000": return "Rot"; case "#FF4500": return "Orange"; case "#8B4513": return "Braun"; case "#FAF0E6": return "Weiß"; case "#FFD700": return "Gelb"; case "#556B2F": return "Gr\u00fcn"; case "#00BFFF": return "Blau"; case "#4B0082": return "Indigo"; default: return "Farbe"; } } private Integer getColorID(String pColorCode) { switch (pColorCode) { case "#ad0000": return 0; case "#FF4500": return 1; case "#8B4513": return 2; case "#FAF0E6": return 3; case "#FFD700": return 4; case "#556B2F": return 5; case "#00BFFF": return 6; case "#4B0082": return 7; default: return 0; } } public void blockUI(boolean pState) { btnCalcStats.setDisable(pState); btnClearEntry.setDisable(pState); if ((!isPrintBtnDisabled) && (!pState)) { // print was not disabled and will be enabled again btnPrintBill.setDisable(pState); btnDeleteSelectedPosition.setDisable(pState); } if (pState) { // disable allways btnPrintBill.setDisable(pState); btnDeleteSelectedPosition.setDisable(pState); } btnReprintJob.setDisable(pState); btnSaveEntry.setDisable(pState); btnCancelJob.setDisable(pState); for (int i = 0; i < 25; i++) { getButtonByID(i).setDisable(pState); } tftNewPosition.setDisable(pState); tftNewValue.setDisable(pState); colorChoise.setDisable(pState); catChoise.setDisable(pState); tableCurrentOrder.setDisable(pState); jobsTreeTable.setDisable(pState); entryTreeTable.setDisable(pState); labelAllPrize.setVisible(!pState); labelJobCounter.setVisible(!pState); if(pState) { titlePaneStats.setVisible(!pState); } titledPaneEntry.setDisable(pState); titlePaneCat.setDisable(pState); } public void loadGridButtons() { for (int i = 0; i < 25; i++) { getButtonByID(i).setText(dbc.getName_Positionen(i + 1)); if ((getColorID(dbc.getColor_Positionen(i + 1)) == 0) || (getColorID(dbc.getColor_Positionen(i + 1)) == 7)) { getButtonByID(i).setStyle("-fx-background-color: " + dbc.getColor_Positionen(i + 1) + "; -fx-text-fill: white;"); } else { getButtonByID(i).setStyle("-fx-background-color: " + dbc.getColor_Positionen(i + 1) + "; -fx-text-fill: black;"); } } for (int i = 0; i < 25; i++) { if (dbc.getName_Positionen(i + 1).equals("Noch frei")) { getButtonByID(i).setVisible(false); } else { getButtonByID(i).setVisible(true); } } } public Button getButtonByID(int pID) { switch (pID) { case 0: return gridButton01; case 1: return gridButton02; case 2: return gridButton03; case 3: return gridButton04; case 4: return gridButton05; case 5: return gridButton06; case 6: return gridButton07; case 7: return gridButton08; case 8: return gridButton09; case 9: return gridButton10; case 10: return gridButton11; case 11: return gridButton12; case 12: return gridButton13; case 13: return gridButton14; case 14: return gridButton15; case 15: return gridButton16; case 16: return gridButton17; case 17: return gridButton18; case 18: return gridButton19; case 19: return gridButton20; case 20: return gridButton21; case 21: return gridButton22; case 22: return gridButton23; case 23: return gridButton24; case 24: return gridButton25; default: return gridButton01; } } private void handelGridButtons(int pID) { currentJob.addPosition(dbc.getName_Positionen(pID), Float.parseFloat(dbc.getValue_Positionen(pID)), dbc.getCategoryNameFromPositionen(pID)); btnPrintBill.setDisable(false); isPrintBtnDisabled = false; tapPosEdit.setDisable(true); rootCurrentJob.getChildren().remove(0, rootCurrentJob.getChildren().size()); for (int i = 0; i < currentJob.getCurrentJobPositionen().size(); i++) { rootCurrentJob.getChildren().add(new TreeItem( currentJob.getCurrentJobPositionen().get(i))); } setJobPrizeLabel(currentJob.getJobValue()); } private void initCurrentOrderTreeTableView() { columnQuantity .setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnPosition .setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); tableCurrentOrder.setRoot(rootCurrentJob); tableCurrentOrder.setShowRoot(false); tableCurrentOrder.setEditable(false); columnQuantity.setCellValueFactory(cellData -> cellData.getValue() .getValue().quantityProperty().asObject()); columnPosition.setCellValueFactory( cellData -> cellData.getValue().getValue().positionProperty()); tableCurrentOrder.getSelectionModel().selectedItemProperty() .addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldVal, Object newVal) { // last = selected; //for auto-play int selected = tableCurrentOrder.getSelectionModel() .getSelectedIndex(); // get selected item if (columnPosition.getCellData(selected) != null) { currentOrderPosName = columnPosition.getCellData(selected); // Ausgewählte btnDeleteSelectedPosition.setDisable(false); } } }); } private void initJobTreeTableView() { columnJobNumber .setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnTime.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnPositions .setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnState.setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); columnJobValue .setStyle("-fx-alignment: CENTER; -fx-font: 17px Cantarell;"); jobsTreeTable.setRoot(rootJobs); jobsTreeTable.setShowRoot(false); jobsTreeTable.setEditable(false); columnJobNumber.setCellValueFactory(cellData -> cellData.getValue() .getValue().numberProperty().asObject()); columnTime.setCellValueFactory( cellData -> cellData.getValue().getValue().timeProperty()); columnPositions.setCellValueFactory( cellData -> cellData.getValue().getValue().positionProperty()); columnState.setCellValueFactory( cellData -> cellData.getValue().getValue().statusProperty()); columnJobValue.setCellValueFactory( cellData -> cellData.getValue().getValue().valueProperty()); jobsTreeTable.getSelectionModel().selectedItemProperty() .addListener(new ChangeListener() { @Override public void changed(ObservableValue observable, Object oldVal, Object newVal) { selectedJobId = jobsTreeTable.getSelectionModel() .getSelectedIndex(); // get selected item if(dbc.getState_Job(selectedJobId+1).equals("storniert")) { btnCancelJob.setDisable(true); }else { btnCancelJob.setDisable(false); } } }); } @FXML public void fillTableJobs() { // loads the table in the TreeTableView rootJobs.getChildren().remove(0, rootJobs.getChildren().size()); for (int i = 0; i < dbc.loadTableJobs_Job().size(); i++) { float fValue = Float .valueOf(dbc.loadTableJobs_Job().get(i).getValue()); String strValue = String.format("%.02f", fValue); strValue.replace('.', ','); strValue = (strValue + "€"); String strJobDescription = createJobDescription( dbc.loadTableJobs_Job().get(i).getPosition(), dbc.getQuantity_Job(dbc.loadTableJobs_Job().get(i).getNumber())); tableDataJob tmp = new tableDataJob( dbc.loadTableJobs_Job().get(i).getNumber(), dbc.loadTableJobs_Job().get(i).getTime(), strJobDescription, dbc.loadTableJobs_Job().get(i).getStatus(), strValue); rootJobs.getChildren().add(new TreeItem(tmp)); } } public void createNewJob() { currentJob = new Job(dbc.getLatestJobNumber_Job() + 1, getSystemTime() + " " + getSystemDate()); labelJobCounter.setText("Auftragsnummer: " + String.valueOf(dbc.getLatestJobNumber_Job() + 1)); } private static String createJobDescription(String pNames, String pQuantities) { String line = pQuantities; int size = line.length() - line.replace(";", "").length() + 1; String[] namesArray = new String[size]; String[] quantitiesArray = new String[size]; namesArray = pNames.split(";"); quantitiesArray = pQuantities.split(";"); String tmp = quantitiesArray[0] + "x " + namesArray[0]; for (int i = 1; i < namesArray.length; i++) { tmp = tmp + ", " + quantitiesArray[i] + "x " + namesArray[i]; } return tmp; } private void setJobPrizeLabel(float pPrize) { String str = String.format("%.02f", pPrize); str.replace('.', ','); labelAllPrize.setText(str + "€"); } private void setJobStatLabel(int pCounter, float pAvgValue, float pAllValue) { labelJobCount.setText("Anzahl Aufträge: " + pCounter); String str = String.format("%.02f", pAvgValue); str.replace('.', ','); labelAvgJob.setText("Durchschnittlicher Auftragswert: " + str + "€"); str = String.format("%.02f", pAllValue); str.replace('.', ','); labelAllValue.setText("Gesamt: " + str + "€"); titlePaneStats.setText("Statistik - " + getSystemTime() + " " + getSystemDate()); } public void updateTimeLabel() { labelTime.setText("Uhrzeit: " + getSystemTime()); } public void blockUnlock() { btnLock.setDisable(true); } }