diff --git a/src/main/java/id/amigogroup/posterminal/App.java b/src/main/java/id/amigogroup/posterminal/App.java index 7e73312..81a277d 100644 --- a/src/main/java/id/amigogroup/posterminal/App.java +++ b/src/main/java/id/amigogroup/posterminal/App.java @@ -23,7 +23,7 @@ public class App extends Application { // var label = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + "."); Locale.setDefault(Locale.forLanguageTag("in-ID")); - Parent root = FXMLLoader.load(getClass().getResource("/fxml/FormUtama.fxml")); + Parent root = FXMLLoader.load(getClass().getResource("/fxml/FormLogin.fxml")); Scene scene = new Scene(root); diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java index 3a13ad0..453e83e 100644 --- a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java +++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java @@ -1,20 +1,30 @@ package id.amigogroup.posterminal; +import id.amigogroup.posterminal.pencarian.DialogCariBarangController; +import id.amigogroup.posterminal.pencarian.DialogCariPelangganController; +import id.amigogroup.posterminal.util.Fucout; +import java.io.IOException; import java.net.URL; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; import javafx.application.Platform; import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.scene.Node; +import javafx.scene.Parent; +import javafx.scene.Scene; import javafx.scene.control.ScrollPane; +import javafx.scene.image.Image; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyCodeCombination; import javafx.scene.input.KeyCombination; import javafx.scene.layout.BorderPane; +import javafx.stage.Stage; public class FormUtamaController implements Initializable { @@ -38,15 +48,47 @@ public class FormUtamaController implements Initializable { private void initShorcuts() { Map listShortcuts = new HashMap<>(); + KeyCombination kcCariBarang = new KeyCodeCombination(KeyCode.F5); + Runnable rnCariBarang = () -> { + DialogCariBarangController dialogCariBarang = new DialogCariBarangController(); + dialogCariBarang.initOwner((Stage) bpMain.getScene().getWindow()); + + Optional result = dialogCariBarang.showAndWait(); + System.out.println(result); + }; + listShortcuts.put(kcCariBarang, rnCariBarang); + + KeyCombination kcCariPelanggan = new KeyCodeCombination(KeyCode.F6); + Runnable rnCariPelanggan = () -> { + DialogCariPelangganController dialogCariPelanggan = new DialogCariPelangganController(); + dialogCariPelanggan.initOwner((Stage) bpMain.getScene().getWindow()); + + Optional result = dialogCariPelanggan.showAndWait(); + System.out.println(result); + }; + listShortcuts.put(kcCariPelanggan, rnCariPelanggan); + KeyCombination kcCheckout = new KeyCodeCombination(KeyCode.F8); Runnable rnCheckout = () -> setContent(formFactory.getForm(FormConstanta.BAYAR, this)); listShortcuts.put(kcCheckout, rnCheckout); + KeyCombination kcLogout = new KeyCodeCombination(KeyCode.L,KeyCombination.CONTROL_DOWN); + Runnable rnLogout = () -> { + try { + generateNewWindow("/fxml/FormLogin.fxml").show(); + Stage thisStage = (Stage) bpMain.getScene().getWindow(); + thisStage.close(); + } catch (IOException ex) { + Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, ex); + } + }; + listShortcuts.put(kcLogout, rnLogout); + Platform.runLater(() -> { bpMain.getScene().getAccelerators().putAll(listShortcuts); }); } - + public void setContent(Node node) { try { spMainContent.setContent(node); @@ -56,4 +98,16 @@ public class FormUtamaController implements Initializable { // AlertGenerate.getAlert(AlertGenerate.FXML_FAIL).show(); } } + + public Stage generateNewWindow(String url) throws IOException { + Stage stage = new Stage(); + Parent root; + root = FXMLLoader.load(getClass().getResource(url)); + Scene scene = new Scene(root); + stage.setTitle(Fucout.APP_TITLE); + stage.getIcons().add(new Image(Fucout.APP_ICON)); + stage.setScene(scene); + + return stage; + } } diff --git a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java index b031782..717a6db 100644 --- a/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java +++ b/src/main/java/id/amigogroup/posterminal/bayar/FormBayarController.java @@ -8,8 +8,6 @@ package id.amigogroup.posterminal.bayar; import id.amigogroup.posterminal.util.Fucout; import java.net.URL; import java.util.ResourceBundle; -import javafx.beans.value.ChangeListener; -import javafx.beans.value.ObservableValue; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.TextField; diff --git a/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java b/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java new file mode 100644 index 0000000..bc8530d --- /dev/null +++ b/src/main/java/id/amigogroup/posterminal/keamanan/FormLoginController.java @@ -0,0 +1,66 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package id.amigogroup.posterminal.keamanan; + +import id.amigogroup.posterminal.util.Fucout; +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.scene.image.Image; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Stage; + +/** + * FXML Controller class + * + * @author ronal + */ +public class FormLoginController implements Initializable { + + @FXML + private AnchorPane apMain; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + + } + + public Stage generateNewWindow(String url) throws IOException { + Stage stage = new Stage(); + Parent root; + root = FXMLLoader.load(getClass().getResource(url)); + Scene scene = new Scene(root); + stage.setTitle(Fucout.APP_TITLE); + stage.getIcons().add(new Image(Fucout.APP_ICON)); + stage.setScene(scene); + + return stage; + } + + @FXML + public void btnLoginOnAction(ActionEvent event) { + try { + generateNewWindow("/fxml/FormUtama.fxml").show(); + Stage thisStage = (Stage) apMain.getScene().getWindow(); + //close current stage + thisStage.hide(); + } catch (IOException ex) { + Logger.getLogger(FormLoginController.class.getName()).log(Level.SEVERE, null, ex); + } + } + +} diff --git a/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariBarangController.java b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariBarangController.java new file mode 100644 index 0000000..fe040a4 --- /dev/null +++ b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariBarangController.java @@ -0,0 +1,100 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package id.amigogroup.posterminal.pencarian; + +import id.amigogroup.posterminal.FormUtamaController; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.control.Button; +import javafx.scene.control.ButtonType; +import javafx.scene.control.Dialog; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Window; + +/** + * FXML Controller class + * + * @author ronal + */ +public class DialogCariBarangController extends Dialog implements Initializable { + + @FXML + AnchorPane apContent; + + @FXML + private TableView tbvBarang; + @FXML + private TableColumn tcKode; + @FXML + private TableColumn tcNama; + @FXML + private TableColumn tcNo; + @FXML + private TableColumn tcHarga; + @FXML + private TableColumn tcBtnTambah; + + final ObservableList daftarTabelBarang = FXCollections.observableArrayList(); +// String str = "Halo"; + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + tcKode.setCellValueFactory(new PropertyValueFactory<>("kode")); + tcNama.setCellValueFactory(new PropertyValueFactory<>("nama")); + tcNo.setCellValueFactory(new PropertyValueFactory<>("nomor")); + tcBtnTambah.setCellValueFactory(new PropertyValueFactory<>("btnTambah")); + tbvBarang.setItems(daftarTabelBarang); + fillTable(new ArrayList<>()); + } + + public DialogCariBarangController(/*FormPresensiController parent*/) { + try { + FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCariBarang.fxml")); + loader.setController(this); +// DialogCariBarangController controller = loader.getController(); + Parent root = loader.load(); + getDialogPane().setContent(root); + setTitle("Cari Barang"); + +// getDialogPane().getButtonTypes().add(ButtonType.CANCEL); +// setResultConverter(buttonType -> { +// return str; +// }); + + Window window = getDialogPane().getScene().getWindow(); + window.setOnCloseRequest(event -> this.close()); + } catch (IOException e) { + Logger.getLogger(DialogCariBarangController.class + .getName()).log(Level.SEVERE, null, e); + } + } + + public void fillTable(List daftarBarang) { + Button btnTambah = new Button("Tambah"); + btnTambah.setOnAction((event) -> { + setResult("Barang x"); + this.close(); + }); + daftarTabelBarang.add(new TabelBarang("AACOBA001ABCDXL", "Barang x","79.900", "XL", btnTambah)); + } +} diff --git a/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java new file mode 100644 index 0000000..79a2ed7 --- /dev/null +++ b/src/main/java/id/amigogroup/posterminal/pencarian/DialogCariPelangganController.java @@ -0,0 +1,94 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package id.amigogroup.posterminal.pencarian; + +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.List; +import java.util.ResourceBundle; +import java.util.logging.Level; +import java.util.logging.Logger; +import javafx.collections.FXCollections; +import javafx.collections.ObservableList; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; +import javafx.fxml.Initializable; +import javafx.scene.Parent; +import javafx.scene.control.Dialog; +import javafx.scene.control.TableColumn; +import javafx.scene.control.TableView; +import javafx.scene.control.cell.PropertyValueFactory; +import javafx.scene.layout.AnchorPane; +import javafx.stage.Window; + +/** + * FXML Controller class + * + * @author ronal + */ +public class DialogCariPelangganController extends Dialog implements Initializable { + @FXML + AnchorPane apContent; + + @FXML + private TableView tbvPelanggan; + @FXML + private TableColumn tcKode; + @FXML + private TableColumn tcNama; + @FXML + private TableColumn tcAlamat; + @FXML + private TableColumn tcUpline; + + final ObservableList daftarTabelPelanggan = FXCollections.observableArrayList(); + + /** + * Initializes the controller class. + */ + @Override + public void initialize(URL url, ResourceBundle rb) { + tcKode.setCellValueFactory(new PropertyValueFactory<>("kode")); + tcNama.setCellValueFactory(new PropertyValueFactory<>("nama")); + tcAlamat.setCellValueFactory(new PropertyValueFactory<>("nomor")); + tcUpline.setCellValueFactory(new PropertyValueFactory<>("upline")); + tbvPelanggan.setItems(daftarTabelPelanggan); + fillTable(new ArrayList<>()); + } + + public DialogCariPelangganController(/*FormPresensiController parent*/) { + try { + FXMLLoader loader = new FXMLLoader(getClass().getResource("/fxml/DialogCariPelanggan.fxml")); + loader.setController(this); +// DialogCariBarangController controller = loader.getController(); + Parent root = loader.load(); + getDialogPane().setContent(root); + setTitle("Cari Barang"); + +// getDialogPane().getButtonTypes().add(ButtonType.CANCEL); +// setResultConverter(buttonType -> { +// return str; +// }); + + Window window = getDialogPane().getScene().getWindow(); + window.setOnCloseRequest(event -> this.close()); + } catch (IOException e) { + Logger.getLogger(DialogCariBarangController.class + .getName()).log(Level.SEVERE, null, e); + } + } + + public void fillTable(List daftarBarang) { +// Button btnTambah = new Button("Tambah"); +// btnTambah.setOnAction((event) -> { +// setResult("Pak Coba"); +// this.close(); +// }); + daftarTabelPelanggan.add(new TabelPelanggan("0103201401", "Pak Coba","Jl. Wates Percobaan", "-")); + } + +} diff --git a/src/main/java/id/amigogroup/posterminal/pencarian/TabelBarang.java b/src/main/java/id/amigogroup/posterminal/pencarian/TabelBarang.java new file mode 100644 index 0000000..1ca3d8b --- /dev/null +++ b/src/main/java/id/amigogroup/posterminal/pencarian/TabelBarang.java @@ -0,0 +1,100 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package id.amigogroup.posterminal.pencarian; + +import javafx.beans.property.SimpleObjectProperty; +import javafx.beans.property.SimpleStringProperty; +import javafx.scene.control.Button; + +/** + * + * @author ronal + */ +public class TabelBarang { + private final SimpleStringProperty kode; + private final SimpleStringProperty nama; + private final SimpleStringProperty nomor; + private final SimpleStringProperty harga; + private final SimpleObjectProperty