-
Notifications
You must be signed in to change notification settings - Fork 0
/
GameController.java
141 lines (118 loc) · 4.28 KB
/
GameController.java
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
package practicumopdracht.controllers;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.control.Alert;
import javafx.scene.control.TextArea;
import practicumopdracht.MainApplication;
import practicumopdracht.data.GameDAO;
import practicumopdracht.models.Achievement;
import practicumopdracht.models.Game;
import practicumopdracht.views.AchievementView;
import practicumopdracht.views.GameView;
import practicumopdracht.views.View;
import java.util.ArrayList;
public class GameController extends Controller {
private GameDAO gameDAO = MainApplication.getGameDAO();
private GameView view;
public GameController()
{
view = new GameView();
initButtonHandling();
}
public void onSwitchView()
{
view.getListView().refresh();
}
private void addGame(Game game)
{
view.getListView().getItems().add(game);
}
public void initButtonHandling()
{
view.getClearButton().setOnAction(e -> handleClearButton());
view.getAddButton().setOnAction(e -> handleAddButton());
view.getOpenButton().setOnAction(e -> handleOpenButton());
}
private void refreshData() {
//Maak een list tot een observable list
ObservableList<Game> gameList = FXCollections.observableList(gameDAO.getAll());
//Koppel de ListView aan de dataset die het repostitory object levert.
view.getListView().setItems(gameList);
}
private void handleAddButton() {
String title = view.getTitleTextField().getText().trim();
String noOfAchievementsString = view.getNumAchievementsTextField().getText().trim();
int noOfAchievements = -1;
boolean tracked = view.getTrackingCheckBox().isSelected();
StringBuilder missingBuffer = new StringBuilder();
boolean filled = true;
if (title == null || title.isEmpty())
{
missingBuffer.append("\t-\tTitle\n");
filled = false;
}
if (noOfAchievementsString.isEmpty() || noOfAchievementsString == null)
{
missingBuffer.append("\t-\tNumber of Achievements\n");
filled = false;
}
else {
try {
noOfAchievements = Integer.parseInt(noOfAchievementsString);
} catch (NumberFormatException nfe) {
missingBuffer.append("\t-\t Number of Achievements (must be an integer!)\n");
filled = false;
}
}
if (filled)
{
Game game = new Game(title, noOfAchievements, tracked);
gameDAO.addOrUpdate(game);
refreshData();
}
else {
showMissingAlert(missingBuffer.toString());
}
}
private void showMissingAlert(String missingValues) {
Alert alert = new Alert(Alert.AlertType.WARNING);
alert.setTitle("Warning");
alert.setHeaderText("Values are missing!");
TextArea textArea = new TextArea();
textArea.setPrefColumnCount(30);
textArea.setPrefRowCount(10);
textArea.setEditable(false);
textArea.setWrapText(true);
textArea.setText("Not every required field has been filled, please ensure you fill the following fields:\n" + missingValues);
alert.getDialogPane().setContent(textArea);
alert.showAndWait();
}
private void handleClearButton() {
view.getTitleTextField().setText(null);
view.getNumAchievementsTextField().setText(null);
view.getTrackingCheckBox().setSelected(false);
}
public GameDAO getGameDAO() {
return gameDAO;
}
private void handleOpenButton()
{
Game gameToBeOpened = view.getListView().getSelectionModel().getSelectedItem();
if (gameToBeOpened != null)
{
AchievementController achievementController = (AchievementController) MainApplication.achievementController;
achievementController.setBelongsToGame(gameToBeOpened);
MainApplication.switchController(MainApplication.achievementController);
return;
}
showNotSelectedAlert();
}
//TODO alert
private void showNotSelectedAlert() {
System.out.println("not selected");
}
public View getView()
{
return view;
}
}