-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMainMenu.java
More file actions
149 lines (123 loc) · 4.78 KB
/
Copy pathMainMenu.java
File metadata and controls
149 lines (123 loc) · 4.78 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
/*
* The main menu that the user sees after authenticating
*/
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.control.TextField;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.text.Text;
import javafx.stage.Stage;
final class MainMenu implements EventHandler<ActionEvent> {
private final TextField cardNumberField;
private final PasswordField pinField;
private final Text actiontarget;
private final Controller controller = ATM.getController();
public static Scene mainMenu;
MainMenu(TextField cardNumberField, PasswordField pinField, Text actiontarget) {
this.cardNumberField = cardNumberField;
this.pinField = pinField;
this.actiontarget = actiontarget;
}
@Override
public void handle(ActionEvent e) {
verifyCard(cardNumberField, pinField, actiontarget);
if (controller.isAuthenticated()) {
// create a new card from the user entered values
Card card = new Card();
card.setNumber(this.cardNumberField.getText());
card.setPin(this.pinField.getText());
// lookup the account associated with card
Account acc = controller.findAccount(card);
Stage primaryStage = View.primaryStage;
primaryStage.setTitle(Utilities.ATMName + " - Menu");
// initialize GUI
GridPane grid = new GridPane();
grid.setAlignment(Pos.CENTER);
grid.setHgap(10);
grid.setVgap(10);
grid.setPadding(new Insets(25, 25, 25, 25));
Scene scene = new Scene(grid, 640, 480);
BorderPane border = new BorderPane();
border.setPadding(new Insets(20, 0, 20, 20));
Button accActivity = new Button("Account Activity; Balances");
Button paymentsTrans = new Button("Payments & Transfers");
Button moreTrans = new Button("More Transactions");
Button funcFour = new Button("Func 4");
accActivity.setMaxWidth(Double.MAX_VALUE);
paymentsTrans.setMaxWidth(Double.MAX_VALUE);
moreTrans.setMaxWidth(Double.MAX_VALUE);
funcFour.setMaxWidth(Double.MAX_VALUE);
VBox vbButtons = new VBox();
vbButtons.setSpacing(10);
vbButtons.setPadding(new Insets(0, 20, 10, 20));
vbButtons.getChildren().addAll(accActivity, paymentsTrans, moreTrans, funcFour);
Button cashWithdraw = new Button("Cash Withdrawal");
Button fastCash = new Button("Fast Cash");
Button funcThree = new Button("Func 3");
Button returnCard = new Button("Return Card");
cashWithdraw.setMaxWidth(Double.MAX_VALUE);
fastCash.setMaxWidth(Double.MAX_VALUE);
funcThree.setMaxWidth(Double.MAX_VALUE);
returnCard.setMaxWidth(Double.MAX_VALUE);
VBox vbButtons2 = new VBox();
vbButtons2.setSpacing(10);
vbButtons2.setPadding(new Insets(0, 20, 10, 0));
vbButtons2.getChildren().addAll(cashWithdraw, fastCash, funcThree, returnCard);
Text txt = new Text("What would you like to do today?");
grid.add(txt, 1, 0);
grid.add(vbButtons, 0, 0);
grid.add(vbButtons2, 2, 0);
cashWithdraw.setOnAction(new WithdrawCash(acc));
primaryStage.setScene(scene);
primaryStage.show();
fastCash.setOnAction(j -> fastCashView());
returnCard.setOnAction(h -> System.exit(0));
accActivity.setOnAction(g -> funcFour.setText("" + (acc.getBalance())));
MainMenu.setScene(scene);
} else {
System.out.println("Not authenticated.");
}
}
private static void setScene(Scene scene) {
MainMenu.mainMenu = scene;
}
private Object fastCashView() {
// TODO Auto-generated method stub
return null;
}
/**
* Verifies if the card is valid or not
* @param cardNumberField The card number
* @param pinField The pin
* @param actiontarget What text field to update
*/
private void verifyCard(final TextField cardNumberField, final PasswordField pinField,
final Text actiontarget) {
actiontarget.setFill(Color.BLACK);
// get the text from the GUI, and see if the pin is valid or not
ViewEventResult event =
controller.verifyCCNumber(cardNumberField.getText(), pinField.getText(), View.controller);
if (event == null || !event.didSucceed()) {
// card is invalid; clear pin and card number fields
cardNumberField.clear();
pinField.clear();
assert event != null;
if (event.getMessage() != null) {
actiontarget.setText(event.getMessage());
}
controller.setAuthenticated(false);
} else {
// card is valid
actiontarget.setText(event.getMessage());
controller.setAuthenticated(true);
}
}
}