Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • team13/tdat1006
  • eivindrt/tdat1006
  • alexholt/idatt1002
  • elinang/idatt1002
  • surya/idatt1002
  • kjellit/idata-1002-demo-project
  • eskillr/idatt1002
  • G1-06/idatt-1002-2022-1-06
  • emillaa/idatt1002
  • andreksv/idatt-1002-2023-9
  • melane/idatt-1002-2023-5
  • ramtinfs/idatt1002
  • surya/idatx1005
  • itatt1005_2024_group15/purchase-planner
  • systemutvikling-gruppe-19/idatt-1005-2024-group-19
15 results
Show changes
Commits on Source (35)
Showing
with 669 additions and 141 deletions
......@@ -88,7 +88,7 @@ loadScripts(document, 'script');</script>
<h1 title="Class MyApp" class="title">Class MyApp</h1>
</div>
<div class="inheritance" title="Inheritance Tree"><a href="https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Object.html" title="class or interface in java.lang" class="external-link">java.lang.Object</a>
<div class="inheritance">no.ntnu.idatt1002.demo.MyApp</div>
<div class="inheritance">no.ntnu.idatt1002.demo.view.MyApp</div>
</div>
<section class="class-description" id="class-description">
<hr>
......
......@@ -2,7 +2,7 @@
<html lang="en">
<head>
<!-- Generated by javadoc (19) on Thu Feb 02 10:19:17 CET 2023 -->
<title>Uses of Class no.ntnu.idatt1002.demo.MyApp (demo 1.0-SNAPSHOT API)</title>
<title>Uses of Class no.ntnu.idatt1002.demo.view.MyApp (demo 1.0-SNAPSHOT API)</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2023-02-02">
......@@ -50,9 +50,9 @@ loadScripts(document, 'script');</script>
<div class="flex-content">
<main role="main">
<div class="header">
<h1 title="Uses of Class no.ntnu.idatt1002.demo.MyApp" class="title">Uses of Class<br>no.ntnu.idatt1002.demo.MyApp</h1>
<h1 title="Uses of Class no.ntnu.idatt1002.demo.view.MyApp" class="title">Uses of Class<br>no.ntnu.idatt1002.demo.view.MyApp</h1>
</div>
No usage of no.ntnu.idatt1002.demo.MyApp</main>
No usage of no.ntnu.idatt1002.demo.view.MyApp</main>
<footer role="contentinfo">
<hr>
<p class="legal-copy"><small>Copyright &#169; 2023. All rights reserved.</small></p>
......
......@@ -152,7 +152,7 @@
<archive>
<manifest>
<mainClass>
no.ntnu.idatt1002.demo.MyApp
no.ntnu.idatt1002.demo.view.MyApp
</mainClass>
</manifest>
</archive>
......@@ -172,7 +172,7 @@
<!-- Default configuration for running with: mvn clean javafx:run -->
<id>default-cli</id>
<configuration>
<mainClass>no.ntnu.idatt1002.demo/no.ntnu.idatt1002.demo.MyApp</mainClass>
<mainClass>no.ntnu.idatt1002.demo/no.ntnu.idatt1002.demo.view.MyApp</mainClass>
<launcher>app</launcher>
<jlinkZipName>app</jlinkZipName>
<jlinkImageName>app</jlinkImageName>
......
package no.ntnu.idatt1002.demo;
import no.ntnu.idatt1002.demo.view.MyWindow;
/**
* Use this class to start the application
* @author nilstes
*/
public class MyApp {
/**
* Main method for my application
*/
public static void main(String[] args) throws Exception {
MyWindow window = new MyWindow("The Window");
window.setVisible(true);
}
}
package no.ntnu.idatt1002.demo.data;
public class Expense extends Item{
private ExpenseCategory category;
/**
* This constructor uses the super constructor to set the fields for 'amount' and 'recurring' and then sets the
* category. A IllegalArgumentException from this constructor if the category is left blank. The description
* field is left to the default blank string.
*
* @param amount The amount of the current Expense object as a double.
* @param recurring True if the current Expense repeats at regular intervals.
* @param category The category to which the Expense belongs to, provided as a value of ExpenseCategory.
* @param date The date of the Expense at format "dd.mm.yy".
*/
public Expense(double amount, boolean recurring, ExpenseCategory category, String date) {
super(amount, recurring, date);
if(category == null) {
throw new IllegalArgumentException("The income must belong to a category.");
}
this.category = category;
}
/**
* This constructor uses the super constructor to set the fields for 'amount', 'description' and 'recurring'
* and then sets the category. A IllegalArgumentException from this constructor if the category is left blank.
* @param description A description of the Expense as a String.
* @param amount The amount of the current Expense object as a double.
* @param recurring True if the current income repeats at regular intervals.
* @param category The category to which the Expense belongs to, provided as a value of ExpenseCategory
* @param date The date of the Expense at format "dd.mm.yy".
*/
public Expense(String description, double amount, boolean recurring, ExpenseCategory category, String date) {
super(description, amount, recurring, date);
if(category == null) {
throw new IllegalArgumentException("The income must belong to a category.");
}
this.category = category;
}
/**
* The method returns the category to which the Expense belongs as a value of the ExpenseCategory enum class.
* @return The category the Expense belongs to as a value of the ExpenseCategory enum class.
*/
public ExpenseCategory getCategory() {
return category;
}
/**
* The method sets the category of an expense to a value of the ExpenseCategory enum class.
* @param expenseCategory The category to which the expense belongs as a value of the ExpenseCategory enum.
*/
public void setCategory(ExpenseCategory expenseCategory) {
if(expenseCategory == null) {
throw new IllegalArgumentException("The income must belong to a category.");
}
this.category = expenseCategory;
}
}
package no.ntnu.idatt1002.demo.data;
public enum ExpenseCategory {
FOOD,
CLOTHES,
BOOKS,
OTHER,
}
package no.ntnu.idatt1002.demo.data;
/**
* The Income class inherits from the Item class. The Item class additionally has a private field for an
* enum value of IncomeCategory.
*
* @author Hanne-Sofie
*/
public class Income extends Item{
private IncomeCategory category;
/**
* This constructor uses the super constructor to set the fields for 'amount' and 'recurring' and then sets the
* category. A IllegalArgumentException from this constructor if the category is left blank. The description
* field is left to the default blank string.
*
* @param amount The amount of the current income object as a double.
* @param recurring True if the current income repeats at regular intervals.
* @param category The category to which the Income belongs to, provided as a value of IncomeCategory.
* @param date The date of the Income at format "dd.mm.yy".
*/
public Income(double amount, boolean recurring, IncomeCategory category, String date) {
super(amount, recurring, date);
if(category == null) {
throw new IllegalArgumentException("The income must belong to a category.");
}
this.category = category;
}
/**
* This constructor uses the super constructor to set the fields for 'amount', 'description' and 'recurring'
* and then sets the category. A IllegalArgumentException from this constructor if the category is left blank.
* @param description A description of the income as a String.
* @param amount The amount of the current income object as a double.
* @param recurring True if the current income repeats at regular intervals.
* @param category The category to which the income belongs to, provided as a value of IncomeCategory.
* @param date The date of the Income at format "dd.mm.yy".
*/
public Income(String description, double amount, boolean recurring, IncomeCategory category, String date) {
super(description, amount, recurring, date);
if(category == null) {
throw new IllegalArgumentException("The income must belong to a category.");
}
this.category = category;
}
/**
* The method returns the category to which the Income belongs as a value of the IncomeCategory enum.
* @return The category to which the Income belongs to as a value of the IncomeCategory enum.
*/
public IncomeCategory getCategory() {
return category;
}
/**
* The method sets the category of an item to a value of the Category enum class.
* @param category The category to which the Income belongs to as a value of the IncomeCategory enum.
*/
public void setCategory(IncomeCategory category) {
if(category == null) {
throw new IllegalArgumentException("The income must belong to a category.");
}
this.category = category;
}
}
package no.ntnu.idatt1002.demo.data;
public enum IncomeCategory {
SALARY,
STUDENT_LOAN,
GIFT
}
package no.ntnu.idatt1002.demo.data;
/**
* The Item class represents a good or service purchased in real life. The item belongs to a category and
* has an amount, description and a date. The description may be left blank, but the Item must belong to a category and must
* have a price.
* @author HanneSofie
*
*/
public class Item {
private String description = "";
private double amount;
private boolean recurring;
private String date; // Format example: 09.08.23
/**
* The constructor of a new Item object takes in an amount as a double. If the amount is left blank, an
* IllegalArgumentException is thrown.
* @param amount price of an Item as a float.
*/
public Item (double amount, boolean recurring, String date){
if(amount <= 1.0f || date.isBlank()) {
throw new IllegalArgumentException("Both amount and date must be provided.");
} else {
this.amount = amount;
this.recurring = recurring;
this.date = date;
}
}
/**
* The constructor instantiates a new Item object with a category, a description and a price as arguments. It
* overloads the first constructor to set the category and price and then sets the description of the item.
* If either 0category or price is left blank, an IllegalArgumentException is thrown.
* @param description A description of the item as a String.
* @param amount The price of the item as a float.
*/
public Item (String description, double amount, boolean recurring, String date){
this(amount, recurring, date);
this.description=description;
}
/**
* The method returns the description of the given Item object as a String.
* @return The description of the Item as a String.
*/
public String getDescription() {
return description;
}
/**
* The method sets the description of the Item object equal to the passed String. The String may be empty.
* @param description The new description of the Item object as a String.
*/
public void setDescription(String description) {
this.description = description;
}
/**
* The method returns the price of the given Item object as a float.
* @return The amount of the Item as a float.
*/
public double getAmount() {
return amount;
}
/**
* The method changes the price of the given Item to the passed price as a float.
* @param amount The new price of the Item as a float.
*/
public void setAmount(double amount) {
if(amount <= 1.0f ) {
throw new IllegalArgumentException("A positive amount must be provided.");
}
this.amount = amount;
}
/**
* The method returns true if the transaction is recurring, false otherwise.
* @return True if the transaction is a recurring one, false otherwise.
*/
public boolean isRecurring() {
return recurring;
}
/**
* The method changes the boolean value of the 'recurring' field of the Item object.
* @param recurring A boolean value being true if the Item is recurring and false otherwise.
*/
public void setRecurring(boolean recurring) {
this.recurring = recurring;
}
/**
* The method returns the date of the item object (income/expense).
* @return The date of the transaction.
*/
public String getDate() {
return date;
}
/**
* Sets the date field of the Item object to a new String provided as an argument.
* @param newDate The new date with which to record the Item.
*/
public void setDate(String newDate) {
if(date.isBlank()) {
throw new IllegalArgumentException("A date must be provided.");
}
this.date = newDate;
}
/* @Override
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null) {
return false;
}
if (obj.getClass() != this.getClass()) {
return false;
}
final Item otherItem = (Item) obj;
return true;
*//*return Objects.equals(true);*//*
}*/
}
package no.ntnu.idatt1002.demo.data;
import java.util.ArrayList;
/**
* RevenueOverview is a class for storing and getting
* information on your total income and expense.
*/
public class ItemOverview {
ArrayList<Income> income;
ArrayList<Expense> expense;
/**
* The class constructor.
*/
public ItemOverview(){
this.income = new ArrayList<>(); //ArrayList for storing income
this.expense = new ArrayList<>(); //ArrayList for storing expense
}
/**
* Get an ArrayList of every income.
* @return Income ArrayList.
*/
public ArrayList<Income> getIncome() {
return income;
}
/**
* Get an ArrayList of every expense.
* @return Expense ArrayList.
*/
public ArrayList<Expense> getExpense() {
return expense;
}
/**
* Add an Income object to income.
* @param newIncome The Income you want to add.
*/
public void addIncome(Income newIncome){
if(income.contains(newIncome)){
throw new IllegalArgumentException("This income is already registered");
}
income.add(newIncome);
}
/**
* Add an Expense object to income.
* @param newExpense The Expense you want to add.
*/
public void addExpense(Expense newExpense){
if(expense.contains(newExpense)){
throw new IllegalArgumentException("This expense is already registered");
}
expense.add(newExpense);
}
/**
* Get the sum of all Income in income.
* @return Sum of all Income.
*/
public double getTotalIncome(){
return income.stream().map(Item::getAmount).mapToDouble(Double::doubleValue).sum();
}
/**
* Get the sum of all Expense in expense.
* @return Sum of all Expense.
*/
public double getTotalExpense(){
return expense.stream().map(Item::getAmount).mapToDouble(Double::doubleValue).sum();
}
}
package no.ntnu.idatt1002.demo.data;
import java.util.Date;
import java.util.List;
/**
* This is just a simple Java-bean
* @author nilstes
*/
public class MyEntity {
private String id;
private String name;
public MyEntity() {
}
public MyEntity(String id, String name) {
this.id = id;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
package no.ntnu.idatt1002.demo.repo;
import no.ntnu.idatt1002.demo.data.MyEntity;
import java.util.Arrays;
import java.util.List;
/**
* Repository for the MyEntity-entity
*
* @author nilstes
*/
public class MyEntityRepo {
/**
* Get object with given id
*
* @param id the entity id
* @return an instance of MyEntity
*/
public MyEntity getMyEntity(String id) {
// Get connection (maybe use pool?)
// Do some SQL
// Return som real data
return new MyEntity("id", "name");
}
public List<MyEntity> findMyEntities(String someParameter) {
// Get connection (maybe use pool?)
// Do some SQL
// Return som real data
return Arrays.asList(new MyEntity("id1", "name1"), new MyEntity("id2", "name2"));
}
public void addMyEntity(MyEntity obj) {
// Get connection (maybe use pool?)
// Do some SQL
}
public void deleteMyEntity(String id) {
// Get connection (maybe use pool?)
// Do some SQL
}
}
package no.ntnu.idatt1002.demo.view;
public class App {
public static void main(String[] args) {
MyApp.main(args);
}
}
package no.ntnu.idatt1002.demo.view;
import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.stage.Stage;
import javafx.scene.Parent;
import javafx.scene.Scene;
import java.io.IOException;
public class MyApp extends Application {
@Override
public void start(Stage stage) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/FirstMenu.fxml"));
Parent root = loader.load();
Scene scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
\ No newline at end of file
package no.ntnu.idatt1002.demo.view;
import no.ntnu.idatt1002.demo.repo.MyEntityRepo;
import no.ntnu.idatt1002.demo.data.MyEntity;
import java.awt.*;
import javax.swing.*;
/**
* Main window for my application!
*
* @author nilstes
*/
public class MyWindow extends JFrame {
/**
* Constructor for window
*
* @param title Title ow the window
* @see Image
*/
public MyWindow(String title) {
super(title);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setLayout(new GridLayout(1, 1, 1, 1));
MyEntityRepo dao = new MyEntityRepo();
MyEntity object = dao.getMyEntity("id");
add(new JLabel(object.getName()));
pack();
}
}
package no.ntnu.idatt1002.demo.view;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.text.Font;
import javafx.scene.text.FontPosture;
import javafx.scene.text.FontWeight;
import javafx.stage.Stage;
import java.io.FileInputStream;
import java.io.IOException;
public class NewBudget {
private static StackPane root;
public static Pane getRoot() throws IOException {
TextArea income = new TextArea();
TextArea income2 = new TextArea();
income.setMaxSize(200, 20);
income2.setMaxSize(200, 20);
VBox inputs = new VBox();
inputs.getChildren().addAll(income, income2);
inputs.setAlignment(Pos.CENTER);
inputs.setSpacing(100);
return root;
}
}
package no.ntnu.idatt1002.demo.view;
import java.io.IOException;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.fxml.Initializable;
import javafx.scene.Node;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Tab;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.stage.Stage;
import jdk.jfr.Category;
import no.ntnu.idatt1002.demo.data.Expense;
import no.ntnu.idatt1002.demo.data.ExpenseCategory;
public class SceneController implements Initializable {
private Stage stage;
private Scene scene;
private Parent root;
@FXML
private TableColumn<Expense, Double> amount;
@FXML
private TableColumn<Expense, ExpenseCategory> category;
@FXML
private TableColumn<Expense, String> date;
@FXML
private TableColumn<Expense, String> description;
@FXML
private TableView<Expense> expenseTableView;
ObservableList<Expense> expenses = FXCollections.observableArrayList(
new Expense("", 1000.00, true, ExpenseCategory.FOOD, "1/1/23")
);
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
amount.setCellValueFactory(new PropertyValueFactory<Expense, Double>("amount"));
category.setCellValueFactory(new PropertyValueFactory<Expense, ExpenseCategory>("category"));
date.setCellValueFactory(new PropertyValueFactory<Expense, String>("date"));
description.setCellValueFactory(new PropertyValueFactory<Expense, String>("description"));
expenseTableView.setItems(expenses);
}
public void switchStartMenu(ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader(getClass().getResource("/view/FirstMenu.fxml"));
root = loader.load();
stage = (Stage)((Node)event.getSource()).getScene().getWindow();
scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public void switchNewBudget(ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/NewBudget.fxml"));
Parent root = loader.load();
stage = (Stage)((Node)event.getSource()).getScene().getWindow();
scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public void switchExpenses(ActionEvent event) throws IOException {
FXMLLoader loader = new FXMLLoader(SceneController.class.getResource("/view/Expenses.fxml"));
Parent root = loader.load();
stage = (Stage)((Node)event.getSource()).getScene().getWindow();
scene = new Scene(root);
stage.setScene(scene);
stage.show();
}
public void addExpense(ActionEvent event) throws IOException {
}
}
\ No newline at end of file
src/main/resources/Images/backgroundMini.jpg

203 KiB

src/main/resources/Images/budgetbuddycover.jpeg

143 KiB

<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.Cursor?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.TableColumn?>
<?import javafx.scene.control.TableView?>
<?import javafx.scene.image.Image?>
<?import javafx.scene.image.ImageView?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Region?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="no.ntnu.idatt1002.demo.view.SceneController">
<children>
<ImageView fitHeight="400.0" fitWidth="600.0" pickOnBounds="true">
<image>
<Image url="@../Images/backgroundMini.jpg" />
</image>
<cursor>
<Cursor fx:constant="DEFAULT" />
</cursor>
</ImageView>
<BorderPane prefHeight="400.0" prefWidth="593.0">
<top>
<HBox BorderPane.alignment="CENTER">
<children>
<Button mnemonicParsing="false" text="Return ">
<opaqueInsets>
<Insets left="100.0" />
</opaqueInsets>
<HBox.margin>
<Insets left="10.0" top="10.0" />
</HBox.margin>
</Button>
<Region prefHeight="70.0" prefWidth="141.0" />
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Expenses" textAlignment="CENTER">
<HBox.margin>
<Insets />
</HBox.margin>
<font>
<Font size="48.0" />
</font>
</Text>
</children>
<opaqueInsets>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</opaqueInsets>
</HBox>
</top>
<center>
<GridPane BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="40.0" left="40.0" right="40.0" />
</BorderPane.margin>
<columnConstraints>
<ColumnConstraints hgrow="ALWAYS" maxWidth="485.3333231608073" minWidth="10.0" prefWidth="427.33335367838544" />
<ColumnConstraints hgrow="ALWAYS" maxWidth="111.33333333333331" minWidth="10.0" prefWidth="92.66664632161456" />
</columnConstraints>
<rowConstraints>
<RowConstraints maxHeight="65.33334064483643" minHeight="10.0" prefHeight="65.33334064483643" vgrow="SOMETIMES" />
<RowConstraints maxHeight="298.66665744781494" minHeight="10.0" prefHeight="214.00004069010413" vgrow="SOMETIMES" />
<RowConstraints maxHeight="298.66665744781494" minHeight="10.0" prefHeight="29.999959309895814" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<HBox alignment="BOTTOM_LEFT" prefWidth="410.0">
<children>
<Button alignment="TOP_CENTER" mnemonicParsing="false" prefHeight="26.0" prefWidth="189.0" text="Add expense" textAlignment="CENTER">
<font>
<Font size="14.0" />
</font>
</Button>
</children>
<opaqueInsets>
<Insets />
</opaqueInsets>
<padding>
<Insets bottom="5.0" />
</padding>
</HBox>
<VBox alignment="BOTTOM_LEFT" prefHeight="200.0" prefWidth="100.0" spacing="5.0" GridPane.columnIndex="1">
<children>
<ComboBox prefWidth="150.0" promptText="Show">
<opaqueInsets>
<Insets />
</opaqueInsets>
<VBox.margin>
<Insets bottom="5.0" />
</VBox.margin>
</ComboBox>
</children>
</VBox>
<TableView prefHeight="260.0" prefWidth="485.0" GridPane.columnSpan="2" GridPane.rowIndex="1">
<columns>
<TableColumn prefWidth="75.0" text="Date" />
<TableColumn prefWidth="75.0" text="Price" />
<TableColumn prefWidth="75.0" text="Category" />
<TableColumn prefWidth="75.0" text="Description" />
</columns>
<columnResizePolicy>
<TableView fx:constant="CONSTRAINED_RESIZE_POLICY" />
</columnResizePolicy>
</TableView>
<HBox prefHeight="100.0" prefWidth="200.0" GridPane.columnSpan="2" GridPane.rowIndex="2">
<children>
<Button mnemonicParsing="false" text="Overview" />
<Button mnemonicParsing="false" text="Income" />
<Button mnemonicParsing="false" text="Expenses" />
<Button mnemonicParsing="false" text="Savings" />
</children>
<padding>
<Insets top="10.0" />
</padding>
</HBox>
</children>
</GridPane>
</center>
<opaqueInsets>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</opaqueInsets>
<left>
<Region prefHeight="357.0" prefWidth="25.0" BorderPane.alignment="CENTER" />
</left>
<right>
<Region prefHeight="357.0" prefWidth="0.0" BorderPane.alignment="CENTER" />
</right>
<bottom>
<Region prefHeight="0.0" prefWidth="600.0" BorderPane.alignment="CENTER" />
</bottom>
</BorderPane>
</children>
<opaqueInsets>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</opaqueInsets>
</AnchorPane>