diff --git a/nbactions.xml b/nbactions.xml
new file mode 100644
index 0000000..6c3593c
--- /dev/null
+++ b/nbactions.xml
@@ -0,0 +1,17 @@
+
+
+
+ run
+
+ jar
+
+
+ process-classes
+ org.codehaus.mojo:exec-maven-plugin:1.5.0:exec
+
+
+ -classpath %classpath id.amigogroup.posterminal.ShadeApp
+ java
+
+
+
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..02bdc5c
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,96 @@
+
+ 4.0.0
+ id.amigogroup
+ PosTerminal
+ 1.0.0
+
+ UTF-8
+ 11
+ 11
+ 11.0.2
+ id.amigogroup.posterminal.ShadeApp
+
+
+
+ org.openjfx
+ javafx-controls
+ ${javafx.version}
+
+
+ org.openjfx
+ javafx-fxml
+ ${javafx.version}
+
+
+ org.openjfx
+ javafx-graphics
+ ${javafx.version}
+ win
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-shade-plugin
+ 3.2.1
+
+
+
+ package
+
+ shade
+
+
+
+
+
+ ${mainClass}
+
+
+
+
+ *:*
+
+ META-INF/*.SF
+ META-INF/*.DSA
+ META-INF/*.RSA
+
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.0
+
+ 11
+
+
+
+ org.openjfx
+ javafx-maven-plugin
+ 0.0.3
+
+ ${mainClass}
+
+
+
+
+
\ No newline at end of file
diff --git a/src/main/java/id/amigogroup/posterminal/App.java b/src/main/java/id/amigogroup/posterminal/App.java
new file mode 100644
index 0000000..7e73312
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/App.java
@@ -0,0 +1,44 @@
+package id.amigogroup.posterminal;
+
+import id.amigogroup.posterminal.util.Fucout;
+import java.util.Locale;
+import javafx.application.Application;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.image.Image;
+import javafx.scene.layout.StackPane;
+import javafx.stage.Stage;
+
+/**
+ * JavaFX App
+ */
+public class App extends Application {
+
+ @Override
+ public void start(Stage stage) throws Exception {
+// var javaVersion = SystemInfo.javaVersion();
+// var javafxVersion = SystemInfo.javafxVersion();
+//
+// 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"));
+
+ Scene scene = new Scene(root);
+
+ stage.setScene(scene);
+ stage.setTitle(Fucout.APP_TITLE);
+ stage.getIcons().add(new Image(Fucout.APP_ICON));
+ stage.show();
+
+// var scene = new Scene(new StackPane(label), 640, 480);
+// stage.setScene(scene);
+// stage.show();
+ }
+
+ public static void main(String[] args) {
+ launch();
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/id/amigogroup/posterminal/FormConstanta.java b/src/main/java/id/amigogroup/posterminal/FormConstanta.java
new file mode 100644
index 0000000..5268bdd
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/FormConstanta.java
@@ -0,0 +1,7 @@
+package id.amigogroup.posterminal;
+
+public class FormConstanta {
+
+ //daftarkan halaman disini
+ public static final String TRANSAKSI = "Transaksi";
+}
diff --git a/src/main/java/id/amigogroup/posterminal/FormFactory.java b/src/main/java/id/amigogroup/posterminal/FormFactory.java
new file mode 100644
index 0000000..8616356
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/FormFactory.java
@@ -0,0 +1,34 @@
+package id.amigogroup.posterminal;
+
+import id.amigogroup.posterminal.pos.FormTransaksiController;
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.fxml.FXMLLoader;
+import javafx.scene.Node;
+
+public class FormFactory {
+
+ public Node getForm(String form, FormUtamaController parent) {
+ Node node = null;
+ FXMLLoader loader = new FXMLLoader();
+ try {
+ switch (form) {
+ //daftarkan halaman yang implement mainContenInterface disini
+ case FormConstanta.TRANSAKSI:
+ loader.setLocation(getClass().getResource("/fxml/FormTransaksi.fxml"));
+ {
+ node = loader.load();
+
+ }
+ FormTransaksiController fetc = loader.getController();
+// fetc.initData(parent);
+ break;
+
+ }
+ } catch (IOException ex) {
+ Logger.getLogger(FormFactory.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ return node;
+ }
+}
diff --git a/src/main/java/id/amigogroup/posterminal/FormUtamaController.java b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java
new file mode 100644
index 0000000..5f5b0a1
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/FormUtamaController.java
@@ -0,0 +1,33 @@
+package id.amigogroup.posterminal;
+
+import java.net.URL;
+import java.util.ResourceBundle;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.Node;
+import javafx.scene.control.ScrollPane;
+
+public class FormUtamaController implements Initializable {
+ @FXML
+ private ScrollPane spMainContent;
+
+ private FormFactory formFactory = new FormFactory();
+ /**
+ * Initializes the controller class.
+ */
+ @Override
+ public void initialize(URL url, ResourceBundle rb) {
+ setContent(formFactory.getForm(FormConstanta.TRANSAKSI, this));
+ }
+
+ public void setContent(Node node) {
+ try {
+ spMainContent.setContent(node);
+ } catch (NullPointerException npe) {
+ Logger.getLogger(FormUtamaController.class.getName()).log(Level.SEVERE, null, npe);
+// AlertGenerate.getAlert(AlertGenerate.FXML_FAIL).show();
+ }
+ }
+}
diff --git a/src/main/java/id/amigogroup/posterminal/ShadeApp.java b/src/main/java/id/amigogroup/posterminal/ShadeApp.java
new file mode 100644
index 0000000..53d6197
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/ShadeApp.java
@@ -0,0 +1,16 @@
+/*
+ * 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;
+
+/**
+ *
+ * @author ronal
+ */
+public class ShadeApp {
+ public static void main(String[] args) {
+ App.main(args);
+ }
+}
diff --git a/src/main/java/id/amigogroup/posterminal/SystemInfo.java b/src/main/java/id/amigogroup/posterminal/SystemInfo.java
new file mode 100644
index 0000000..48ffff1
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/SystemInfo.java
@@ -0,0 +1,13 @@
+package id.amigogroup.posterminal;
+
+public class SystemInfo {
+
+ public static String javaVersion() {
+ return System.getProperty("java.version");
+ }
+
+ public static String javafxVersion() {
+ return System.getProperty("javafx.version");
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/java/id/amigogroup/posterminal/pos/FormTransaksiController.java b/src/main/java/id/amigogroup/posterminal/pos/FormTransaksiController.java
new file mode 100644
index 0000000..43cc1f8
--- /dev/null
+++ b/src/main/java/id/amigogroup/posterminal/pos/FormTransaksiController.java
@@ -0,0 +1,99 @@
+/*
+ * 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.pos;
+
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.ResourceBundle;
+import javafx.event.ActionEvent;
+import javafx.fxml.FXML;
+import javafx.fxml.Initializable;
+import javafx.scene.control.Button;
+import javafx.scene.control.TextField;
+import javafx.scene.input.KeyCode;
+import javafx.scene.input.KeyEvent;
+import javafx.scene.text.Text;
+
+/**
+ * FXML Controller class
+ *
+ * @author ronal
+ */
+public class FormTransaksiController implements Initializable {
+
+ @FXML
+ private TextField fldScan;
+ @FXML
+ private Button btnTunai;
+ @FXML
+ private Button btnBawaDulu;
+ @FXML
+ private Button btnBon;
+ @FXML
+ private Button btnRetur;
+ @FXML
+ private Text lblGrandTotal;
+
+ private final String BTN_TUNAI = "tunai";
+ private final String BTN_BAWA_DULU = "bawa dulu";
+ private final String BTN_BON = "bon";
+ private final String BTN_RETUR = "retur";
+
+ private List