Skip to content
Snippets Groups Projects
Commit 36d3eff3 authored by Harry Linrui XU's avatar Harry Linrui XU
Browse files

Added piecharts. Split initialize into smaller methods. Filled returnToMainMenu() body

parent cc421438
No related branches found
No related tags found
8 merge requests!43Merging frontend-testing into master,!38"Made progressbar dynamic in accordance to spending. Added balance field....,!37Made the sub progress bars respond to changes in expense,!32Added input validation to add dialog boxes.,!30Redesigned scenes,!29Redesigned scenes,!28Redesigned scenes,!26Redesigned Main menu and expense/income windows
......@@ -3,9 +3,17 @@ package no.ntnu.idatt1002.demo.controller;
import java.awt.event.ActionEvent;
import java.io.IOException;
import java.util.Optional;
import javafx.beans.binding.Bindings;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Side;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.chart.PieChart;
import javafx.scene.chart.PieChart.Data;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.ComboBox;
......@@ -16,6 +24,7 @@ import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.text.Text;
import javafx.stage.Stage;
import no.ntnu.idatt1002.demo.data.Budget.FileHandlingBudget;
import no.ntnu.idatt1002.demo.data.Budget.GeneralBudget;
import no.ntnu.idatt1002.demo.data.Economics.Expense;
......@@ -108,12 +117,45 @@ public class IncomeExpenseController implements FinanceController {
private ObservableList<Expense> expenses;
@FXML
private PieChart expensePieChart;
@FXML
private PieChart incomePieChart;
FileHandling fileHandling;
@FXML
public void initialize() throws IOException {
fileHandling = new FileHandling();
//Initialize columns
setColumns();
//Initialize registers and tableview
incomeRegister = loadIncomeDataFromFile("Income");
income = FXCollections.observableArrayList(incomeRegister.getItems());
incomeTableView.setItems(income);
expenseRegister = loadExpenseDataFromFile("Expense");
expenses = FXCollections.observableArrayList(expenseRegister.getItems());
expenseTableView.setItems(expenses);
incomePieChart.getData().addAll(createIncomePyChart());
expensePieChart.getData().addAll(createExpensePyChart());
incomePieChart.setLegendSide(Side.LEFT);
expensePieChart.setTitle("Expenses");
expensePieChart.setLegendSide(Side.LEFT);
expensePieChart.setLabelLineLength(10);
//Initialize sum field under the tableview
// inSum.setText(String.valueOf(incomeRegister.getTotalSum()));
//expSum.setText(String.valueOf(expenseRegister.getTotalSum()));
}
private void setColumns() {
inDateCol.setCellValueFactory(new PropertyValueFactory<Income, String>("date"));
inAmountCol.setCellValueFactory(new PropertyValueFactory<Income, Double>("amount"));
inCategoryCol.setCellValueFactory(new PropertyValueFactory<Income, IncomeCategory>("category"));
......@@ -125,21 +167,36 @@ public class IncomeExpenseController implements FinanceController {
expCategoryCol.setCellValueFactory(new PropertyValueFactory<Expense, ExpenseCategory>("category"));
expDescriptionCol.setCellValueFactory(new PropertyValueFactory<Expense, String>("description"));
expRecurringCol.setCellValueFactory(new PropertyValueFactory<Expense, Boolean>("recurring"));
}
//Initialize registers and tableview
incomeRegister = loadIncomeDataFromFile("Income");
income = FXCollections.observableArrayList(incomeRegister.getItems());
incomeTableView.setItems(income);
expenseRegister = loadExpenseDataFromFile("Expense");
expenses = FXCollections.observableArrayList(expenseRegister.getItems());
expenseTableView.setItems(expenses);
//Initialize sum field under the tableview
inSum.setText(String.valueOf(incomeRegister.getTotalSum()));
expSum.setText(String.valueOf(expenseRegister.getTotalSum()));
private ObservableList<PieChart.Data> createExpensePyChart() {
ObservableList<PieChart.Data> expensePieChartData =
FXCollections.observableArrayList(
new PieChart.Data("Food", expenseRegister.getExpenseByCategory(ExpenseCategory.FOOD).getTotalSum()),
new PieChart.Data("Books", expenseRegister.getExpenseByCategory(ExpenseCategory.BOOKS).getTotalSum()),
new PieChart.Data("Clothes", expenseRegister.getExpenseByCategory(ExpenseCategory.CLOTHES).getTotalSum()),
new PieChart.Data("Other", expenseRegister.getExpenseByCategory(ExpenseCategory.OTHER).getTotalSum())
);
expensePieChartData.forEach(data ->
data.nameProperty().bind(
Bindings.concat(
data.getName() + " " + data.pieValueProperty())
));
return expensePieChartData;
}
fileHandling = new FileHandling();
private ObservableList<PieChart.Data> createIncomePyChart() {
ObservableList<PieChart.Data> incomePieChartData =
FXCollections.observableArrayList(
new PieChart.Data("Food", incomeRegister.getIncomeByCategory(IncomeCategory.GIFT).getTotalSum()),
new PieChart.Data("Books", incomeRegister.getIncomeByCategory(IncomeCategory.SALARY).getTotalSum())
);
incomePieChartData.forEach(data ->
data.nameProperty().bind(
Bindings.concat(
data.getName() + " " + data.pieValueProperty())
));
return incomePieChartData;
}
/**
......@@ -268,7 +325,15 @@ public class IncomeExpenseController implements FinanceController {
/**
* Switches the scene to the Main Menu scene.
*/
private void returnToMainMenu() {
@FXML
private void returnToMainMenu(javafx.event.ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader();
loader.setLocation(getClass().getResource("/view/MainMenuNew.fxml"));
Parent root = loader.load();
Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment