Newer
Older
package no.ntnu.idatt1002.demo.controller;
import java.io.IOException;
import java.time.LocalDate;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.DatePicker;
import javafx.scene.control.Label;
import javafx.scene.control.ProgressBar;
import javafx.scene.layout.AnchorPane;
Harry Linrui XU
committed
import javafx.scene.paint.Color;
import javafx.stage.Stage;
import no.ntnu.idatt1002.demo.data.Budget.FileHandlingBudget;
import no.ntnu.idatt1002.demo.data.Budget.GeneralBudget;
Harry Linrui XU
committed
import no.ntnu.idatt1002.demo.data.Economics.ExpenseRegister;
import no.ntnu.idatt1002.demo.data.Economics.IncomeRegister;
public class MainMenu {
@FXML
private Label balanceLbl;
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
@FXML
private ProgressBar bookBar;
@FXML
private Label bookLbl;
@FXML
private Button budgetBtn;
@FXML
private ProgressBar clothesBar;
@FXML
private Label clothesLbl;
@FXML
private DatePicker date;
@FXML
private Button expenseBtn;
@FXML
private ProgressBar foodBar;
@FXML
private Button foodBtn;
@FXML
private Label foodLbl;
@FXML
private Button incomeBtn;
@FXML
private ProgressBar mainBar;
@FXML
private ProgressBar otherBar;
@FXML
private Label otherLbl;
@FXML
private Button returnBtn;
@FXML
private Label title;
@FXML
private Label usageLbl;
@FXML
private AnchorPane root;
Harry Linrui XU
committed
@FXML
private Label daysLeftLbl;
GeneralBudget generalBudget;
Harry Linrui XU
committed
ExpenseRegister expenseRegister;
IncomeRegister incomeRegister;
Harry Linrui XU
committed
public void initialize() throws IOException { //TODO NEED TO SET STATUSBAR VALUES
//Initialize all controllers
initializeControllers();
Harry Linrui XU
committed
double incomeSum = incomeRegister.getTotalSum();
double expenseSum = expenseRegister.getTotalSum();
Harry Linrui XU
committed
//Set progress
mainBar.setProgress(expenseSum/incomeSum);
Harry Linrui XU
committed
//Displaying month
title.setText("BUDGET " + (LocalDate.now().getMonth()));
double balance = incomeSum - expenseSum;
//Set balance
balanceLbl.setText("Balance: " + (balance));
//Displaying how much of the monthly budget has been spent.
usageLbl.setText("Used " + expenseSum + " out of " + 1000);
Harry Linrui XU
committed
if (balance < 0) {
balanceLbl.setTextFill(Color.RED);
}
//Make calendar uneditable
formatDatePicker();
daysLeftLbl.setText("Days left: 31");
//date.restrict
}
/**
Harry Linrui XU
committed
* Method for initializing all controllers in order to load all necessary data for this screen.
* Made this a separate method in order to make initialize() less cluttered.
* @throws IOException If there is an error with reading the files.
*/
private void initializeControllers() throws IOException {
//Instantiate income controller and register
IncomeController incomeController = new IncomeController();
incomeRegister = incomeController.loadIncomeDataFromFile("Income");
Harry Linrui XU
committed
//Instantiate expense controller and register
ExpensesController expensesController = new ExpensesController();
expenseRegister = expensesController.loadExpenseDataFromFile("Expense");
Harry Linrui XU
committed
//Instantiate budget controller and register
BudgetController budgetController = new BudgetController();
generalBudget = budgetController.loadBudgetDataFromFile("Budget");
}
/**
Harry Linrui XU
committed
* Method for disabling the date picker, yet having its opacity at max.
*/
private void formatDatePicker() {
date.setValue(LocalDate.now());
date.setDisable(true);
date.setStyle("-fx-opacity: 1");
date.getEditor().setStyle("-fx-opacity: 1");
}
@FXML
private void switchScene(ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader();
if (event.getSource() == foodBtn) {
System.out.println("Food button pressed");
} else if (event.getSource() == expenseBtn) {
Harry Linrui XU
committed
loader.setLocation(getClass().getResource("/view/IncomeAndExpenses.fxml"));
} else if (event.getSource() == incomeBtn) {
Harry Linrui XU
committed
loader.setLocation(getClass().getResource("/view/IncomeAndExpenses.fxml"));
} else if (event.getSource() == budgetBtn) {
Harry Linrui XU
committed
loader.setLocation(getClass().getResource("/view/BudgetNew.fxml"));
} else if (event.getSource() == returnBtn) {
Harry Linrui XU
committed
loader.setLocation(getClass().getResource("/view/FirstMenu.fxml"));