Skip to content
Snippets Groups Projects
Commit 649d7d4a authored by Håvard Daleng's avatar Håvard Daleng
Browse files

Added a styling to the right sidebar.

parent 2daadd0d
No related branches found
No related tags found
No related merge requests found
package edu.ntnu.stud.chaosgame.controller.utility;
import java.util.function.UnaryOperator;
import javafx.scene.control.TextFormatter;
import javafx.scene.control.TextFormatter.Change;
/**
* This class sets formatting constraints for certain UI components.
*/
public class Formatter {
/**
* A formatter for text fields that only allows for floating point numbers.
*/
public static UnaryOperator<Change> floatFormatter = change -> {
String newText = change.getControlNewText();
if (newText.matches("([0-9]*[.])?[0-9]*")) {
return change;
}
return null;
};
/**
* Get the float formatter as a TextFormatter.
*
* @return the float formatter.
*/
public static TextFormatter<Change> getFloatFormatter() {
return new TextFormatter<>(floatFormatter);
}
}
......@@ -282,44 +282,56 @@ public class ChaosGameGui implements ChaosGameObserver {
this.sideMenu = new VBox();
// Parameters
VBox parameterBox = new VBox();
// Step Count GUI
VBox stepCountBox = new VBox();
Label stepCountLabel = new Label("Step Count");
TextArea stepCountTextArea = new TextArea();
stepCountTextArea.setPrefHeight(5);
stepCountTextArea.setPrefWidth(50);
TextField stepCountTextField = new TextField();
stepCountTextField.setPrefHeight(5);
stepCountTextField.setPrefWidth(50);
Button changeStepCountButton = new Button("Change Step Count");
stepCountBox.getChildren().addAll(stepCountLabel,stepCountTextArea, changeStepCountButton);
stepCountBox.getChildren().addAll(stepCountLabel,stepCountTextField, changeStepCountButton);
// Minimum Coordinates GUI
VBox minCoordinatesBox = new VBox();
Label minCoordinatesLabel = new Label("Min. Coordinates");
TextArea minimumCoordinatesTextArea = new TextArea();
minimumCoordinatesTextArea.setPrefHeight(5);
minimumCoordinatesTextArea.setPrefWidth(50);
TextField minimumCoordinatesTextField = new TextField();
minimumCoordinatesTextField.setPrefHeight(5);
minimumCoordinatesTextField.setPrefWidth(50);
Button changeMinimumCoordinatesButton = new Button("Change Min. Coordinates");
minCoordinatesBox.getChildren().addAll(minCoordinatesLabel,minimumCoordinatesTextArea,changeMinimumCoordinatesButton);
minCoordinatesBox.getChildren().addAll(minCoordinatesLabel,
minimumCoordinatesTextField,changeMinimumCoordinatesButton);
// Maximum Coordinates GUI
VBox maxCoordinatesBox = new VBox();
Label maxCoordinatesLabel = new Label("Max Coordinates");
TextArea maximumCoordinatesTextArea = new TextArea();
maximumCoordinatesTextArea.setPrefHeight(5);
maximumCoordinatesTextArea.setPrefWidth(50);
TextField maximumCoordinatesTextField = new TextField();
maximumCoordinatesTextField.setPrefHeight(5);
maximumCoordinatesTextField.setPrefWidth(50);
Button changeMaximumCoordinatesButton = new Button("Change Max Coordinates");
maxCoordinatesBox.getChildren().addAll(maxCoordinatesLabel,maximumCoordinatesTextArea,changeMaximumCoordinatesButton);
maxCoordinatesBox.getChildren().addAll(maxCoordinatesLabel,
maximumCoordinatesTextField,changeMaximumCoordinatesButton);
// Fill parameter box
parameterBox.getChildren().addAll(stepCountBox, minCoordinatesBox, maxCoordinatesBox);
parameterBox.setPadding(new Insets(10));
// Add basic control buttons
sideMenu.getChildren().addAll(startButton,stopButton,newButton,clearButton);
// Add fractal radio buttons
sideMenu.getChildren().addAll(sierpinskiRadioButton, barnsleyRadioButton, juliaRadioButton, improvedBarnsleyButton);
sideMenu.getChildren().addAll(sierpinskiRadioButton, barnsleyRadioButton, juliaRadioButton,
improvedBarnsleyButton);
// Add parameter VBox
sideMenu.getChildren().add(parameterBox);
// Add file buttons
sideMenu.getChildren().addAll(loadFractalFromFileButton,writeFractalToFileButton);
// Add quit button
sideMenu.getChildren().add(quitButton);
// Add padding
sideMenu.setPadding(new Insets(10));
......@@ -335,6 +347,7 @@ public class ChaosGameGui implements ChaosGameObserver {
VBox rightVBox = new VBox();
rightVBox.getChildren().addAll(sideMenuButtonBox, sideMenu);
this.sideMenu.setStyle("-fx-background-color: lightgrey; -fx-background-radius: 3;");
this.borderPane = new BorderPane();
this.borderPane.setCenter(imageView);
......@@ -345,6 +358,10 @@ public class ChaosGameGui implements ChaosGameObserver {
}
/**
* Initialise the side bar button handler, allowing the user
* to show or hide the right sidebar.
*/
private void initializeSideButtonHandler() {
TranslateTransition openNav = new TranslateTransition(new Duration(350), sideMenu);
openNav.setToX(0);
......
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