Aplikasi POS Amigo, dibangun dengan JavaFX dengan Maven
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
4.4 KiB

  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package id.amigogroup.posterminal.pos;
  7. import java.net.URL;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. import java.util.ResourceBundle;
  13. import javafx.application.Platform;
  14. import javafx.event.ActionEvent;
  15. import javafx.fxml.FXML;
  16. import javafx.fxml.Initializable;
  17. import javafx.scene.control.Button;
  18. import javafx.scene.control.TextField;
  19. import javafx.scene.input.KeyCode;
  20. import javafx.scene.input.KeyCodeCombination;
  21. import javafx.scene.input.KeyCombination;
  22. import javafx.scene.input.KeyEvent;
  23. import javafx.scene.text.Text;
  24. /**
  25. * FXML Controller class
  26. *
  27. * @author ronal
  28. */
  29. public class FormTransaksiController implements Initializable {
  30. @FXML
  31. private TextField fldScan;
  32. @FXML
  33. private Button btnTunai;
  34. @FXML
  35. private Button btnBawaDulu;
  36. @FXML
  37. private Button btnBon;
  38. @FXML
  39. private Button btnRetur;
  40. @FXML
  41. private Text lblGrandTotal;
  42. private final String BTN_TUNAI = "tunai";
  43. private final String BTN_BAWA_DULU = "bawa dulu";
  44. private final String BTN_BON = "bon";
  45. private final String BTN_RETUR = "retur";
  46. private String tableState = BTN_TUNAI;
  47. private List<Button> navigasi = new ArrayList<>();
  48. /**
  49. * Initializes the controller class.
  50. */
  51. @Override
  52. public void initialize(URL url, ResourceBundle rb) {
  53. navigasi.add(btnTunai);
  54. navigasi.add(btnBawaDulu);
  55. navigasi.add(btnBon);
  56. navigasi.add(btnRetur);
  57. initShortcuts();
  58. }
  59. public void initShortcuts() {
  60. Map<KeyCombination, Runnable> listShortcuts = new HashMap<>();
  61. KeyCombination kcBtnTunai = new KeyCodeCombination(KeyCode.S);
  62. Runnable rnBtnTunai = () -> btnTunai.fire();
  63. listShortcuts.put(kcBtnTunai, rnBtnTunai);
  64. KeyCombination kcBtnBawa = new KeyCodeCombination(KeyCode.F2);
  65. Runnable rnBtnBawa = () -> btnBawaDulu.fire();
  66. listShortcuts.put(kcBtnBawa, rnBtnBawa);
  67. KeyCombination kcBon = new KeyCodeCombination(KeyCode.F3);
  68. Runnable rnBon = () -> btnBon.fire();
  69. listShortcuts.put(kcBon, rnBon);
  70. KeyCombination kcRetur = new KeyCodeCombination(KeyCode.F4);
  71. Runnable rnRetur = () -> btnRetur.fire();
  72. listShortcuts.put(kcRetur, rnRetur);
  73. Platform.runLater(() -> {
  74. fldScan.getScene().getAccelerators().putAll(listShortcuts);
  75. });
  76. }
  77. @FXML
  78. void btnNavigasiOnAction(ActionEvent event) {
  79. Button buttonSource = (Button) event.getSource();
  80. if (!tableState.equals(buttonSource.getText().toLowerCase())) {
  81. switch (buttonSource.getText().toLowerCase()) {
  82. case BTN_TUNAI:
  83. //ambil data tunai
  84. tableState = BTN_TUNAI;
  85. System.out.println("ambil data tunai");
  86. break;
  87. case BTN_BAWA_DULU:
  88. //ambil data bawa dulu
  89. tableState = BTN_BAWA_DULU;
  90. System.out.println("ambil data bawa dulu");
  91. break;
  92. case BTN_BON:
  93. //ambil data bon
  94. tableState = BTN_BON;
  95. System.out.println("ambil data bon");
  96. break;
  97. case BTN_RETUR:
  98. //ambil data retur
  99. tableState = BTN_RETUR;
  100. System.out.println("ambil data retur");
  101. break;
  102. }
  103. }
  104. for (Button button : navigasi) {
  105. if (button.equals(buttonSource)) {
  106. if (!button.getStyleClass().contains("button-navigasi-transaksi-selected")) {
  107. button.getStyleClass().add("button-navigasi-transaksi-selected");
  108. }
  109. } else {
  110. if (button.getStyleClass().contains("button-navigasi-transaksi-selected")) {
  111. button.getStyleClass().remove("button-navigasi-transaksi-selected");
  112. }
  113. }
  114. }
  115. fldScan.requestFocus();
  116. }
  117. @FXML
  118. void fldScanOnKeyPressed(KeyEvent event) {
  119. if (event.getCode() == KeyCode.ENTER) {
  120. //proses scan
  121. System.out.println("Scan");
  122. }
  123. }
  124. }