Skip to content
Snippets Groups Projects
Commit 97ea3831 authored by Edvard Granheim Harbo's avatar Edvard Granheim Harbo
Browse files

Merge branch 'MainView' into 'dev'

Changed the topbar into a button function in the menu

See merge request !28
parents 90d661d7 6c4f1e03
No related branches found
No related tags found
2 merge requests!54Final release,!28Changed the topbar into a button function in the menu
package edu.ntnu.idatt2003.mappevurderingprog2.controllers;
import edu.ntnu.idatt2003.mappevurderingprog2.views.Components.CreateNewFractal;
import edu.ntnu.idatt2003.mappevurderingprog2.views.Components.ExistingFractalsButton;
import javafx.scene.control.Button;
import javafx.scene.layout.VBox;
public class MenuController {
private CreateNewFractal createNewFractal;
private ExistingFractalsButton existingFractalsButton;
private VBox currentMenu;
private VBox previousMenu;
public MenuController() {
}
public void setCurrentMenu(VBox currentMenu) {
this.previousMenu = this.currentMenu;
this.currentMenu = currentMenu;
}
public void setCreateNewFractal(CreateNewFractal createNewFractal) {
this.createNewFractal = createNewFractal;
}
public void setExistingFractalsButton(ExistingFractalsButton existingFractalsButton) {
this.existingFractalsButton = existingFractalsButton;
}
public void handleCreateFractalButton() {
if (createNewFractal != null && existingFractalsButton != null) {
createNewFractal.createFractalButtons();
existingFractalsButton.getTransformationButtons().setVisible(false);
setCurrentMenu(createNewFractal.getTransformations());
}
}
public void handleExistingFractalsButton() {
if (createNewFractal != null && existingFractalsButton != null) {
existingFractalsButton.getTransformationButtons().setVisible(true);
createNewFractal.getTransformations().setVisible(false);
setCurrentMenu(existingFractalsButton.getTransformationButtons());
}
}
public Button createBackButton() {
Button backButton = new Button("Back");
backButton.setOnAction(event -> handleBackButton());
return backButton;
}
public void handleBackButton() {
if (currentMenu != null && previousMenu != null) {
currentMenu.setVisible(false);
previousMenu.setVisible(true);
}
}
}
package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
import edu.ntnu.idatt2003.mappevurderingprog2.controllers.MenuController;
import javafx.geometry.Pos; import javafx.geometry.Pos;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.control.Label; import javafx.scene.control.Label;
import javafx.scene.control.Separator; import javafx.scene.control.Separator;
import javafx.scene.control.TextField; import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
import java.util.ArrayList;
import java.util.List;
public class CreateNewFractal extends VBox { public class CreateNewFractal extends VBox {
private final VBox transformations = new VBox(); private final VBox transformations = new VBox();
private final Button createFractalButton = new Button("Create a new fractal"); private final Button createFractalButton = new Button("Create a new fractal");
private MenuController menuController;
public CreateNewFractal() { public CreateNewFractal(MenuController menuController) {
createFractalButton.setOnAction(event -> createFractalButtons()); this.menuController = menuController;
this.menuController.setCreateNewFractal(this);
createFractalButton.setOnAction(event -> menuController.handleCreateFractalButton());
transformations.getChildren().add(createFractalButton); transformations.getChildren().add(createFractalButton);
menuController.setCurrentMenu(this.getTransformations());
} }
private void createFractalButtons() { private void showTransformationMenu(String transformationType) {
transformations.getChildren().clear(); transformations.getChildren().clear();
Button backButton = menuController.createBackButton();
VBox transformationMenu = createNewFractal(transformationType);
transformations.getChildren().addAll(transformationMenu, backButton);
}
public void createFractalButtons() {
transformations.getChildren().clear();
Button affineButton = createTransformationButtons("Affine"); Button affineButton = createTransformationButtons("Affine");
Button juliaButton = createTransformationButtons("Julia"); Button juliaButton = createTransformationButtons("Julia");
affineButton.setOnAction(event -> showTransformationMenu("Affine")); affineButton.setOnAction(event -> showTransformationMenu("Affine"));
juliaButton.setOnAction(event -> showTransformationMenu("Julia")); juliaButton.setOnAction(event -> showTransformationMenu("Julia"));
transformations.getChildren().addAll(affineButton, juliaButton);
HBox transformationButtons = new HBox(10, affineButton, juliaButton);
Label createFractal = createLabel("Choose fractal type:");
transformations.getChildren().addAll(createFractal, new Separator(), transformationButtons);
transformations.setAlignment(Pos.TOP_CENTER);
} }
private void showTransformationMenu(String transformationType) {
transformations.getChildren().clear();
Button backButton = createTransformationButtons("Back");
backButton.setOnAction(event -> createFractalButtons());
VBox transformationMenu = createNewFractal(transformationType);
transformations.getChildren().addAll(transformationMenu, backButton);
}
public Button createTransformationButtons(String text) { public Button createTransformationButtons(String text) {
Button button = new Button(text); Button button = new Button(text);
......
package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
import edu.ntnu.idatt2003.mappevurderingprog2.controllers.MenuController;
import edu.ntnu.idatt2003.mappevurderingprog2.views.View; import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
import javafx.scene.control.Button; import javafx.scene.control.Button;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
...@@ -8,9 +9,13 @@ import javafx.scene.layout.VBox; ...@@ -8,9 +9,13 @@ import javafx.scene.layout.VBox;
public class ExistingFractalsButton extends Button { public class ExistingFractalsButton extends Button {
private final VBox transformationButtons; private final VBox transformationButtons;
private final Button backButton; private final Button backButton;
private MenuController menuController;
public ExistingFractalsButton(View view, GameController gameController, CreateNewFractal transformations) { public ExistingFractalsButton(View view, GameController gameController, CreateNewFractal transformations, MenuController menuController) {
super("Choose Existing Fractals"); super("Choose Existing Fractals");
this.menuController = menuController;
this.menuController.setExistingFractalsButton(this);
menuController.setCurrentMenu(this.getTransformationButtons());
AffineTransformationButton affineButton = new AffineTransformationButton(view, view.getMainCanvas(), gameController); AffineTransformationButton affineButton = new AffineTransformationButton(view, view.getMainCanvas(), gameController);
JuliaTransformationButton juliaButton = new JuliaTransformationButton(view, view.getMainCanvas(), gameController); JuliaTransformationButton juliaButton = new JuliaTransformationButton(view, view.getMainCanvas(), gameController);
...@@ -20,17 +25,13 @@ public class ExistingFractalsButton extends Button { ...@@ -20,17 +25,13 @@ public class ExistingFractalsButton extends Button {
transformationButtons = new VBox(10, affineButton, juliaButton, backButton); transformationButtons = new VBox(10, affineButton, juliaButton, backButton);
transformationButtons.setVisible(false); transformationButtons.setVisible(false);
this.setOnAction(event -> toggleTransformationButtonsVisibility()); this.setOnAction(event -> menuController.handleExistingFractalsButton());
}
private void toggleTransformationButtonsVisibility() {
transformationButtons.setVisible(!transformationButtons.isVisible());
this.setVisible(false); // Hide "Choose Existing Fractals" button
} }
private void hideTransformationButtons() { private void hideTransformationButtons() {
transformationButtons.setVisible(false); transformationButtons.setVisible(false);
this.setVisible(true); // Show "Choose Existing Fractals" button this.setVisible(true);
menuController.handleBackButton();
} }
public VBox getTransformationButtons() { public VBox getTransformationButtons() {
......
package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGame;
import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescriptionFactory; import edu.ntnu.idatt2003.mappevurderingprog2.models.chaos.ChaosGameDescriptionFactory;
import edu.ntnu.idatt2003.mappevurderingprog2.views.View; import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
import javafx.scene.canvas.Canvas; import javafx.scene.canvas.Canvas;
......
package edu.ntnu.idatt2003.mappevurderingprog2.views.Components; package edu.ntnu.idatt2003.mappevurderingprog2.views.Components;
import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController; import edu.ntnu.idatt2003.mappevurderingprog2.controllers.GameController;
import edu.ntnu.idatt2003.mappevurderingprog2.controllers.MenuController;
import edu.ntnu.idatt2003.mappevurderingprog2.utils.Size; import edu.ntnu.idatt2003.mappevurderingprog2.utils.Size;
import edu.ntnu.idatt2003.mappevurderingprog2.views.View; import edu.ntnu.idatt2003.mappevurderingprog2.views.View;
import javafx.scene.control.Label; import javafx.scene.control.Label;
...@@ -9,11 +10,13 @@ import javafx.geometry.Pos; ...@@ -9,11 +10,13 @@ import javafx.geometry.Pos;
import javafx.scene.layout.VBox; import javafx.scene.layout.VBox;
public class Menu extends VBox { public class Menu extends VBox {
private final CreateNewFractal transformations = new CreateNewFractal(); private final CreateNewFractal transformations;
private ExistingFractalsButton existingFractalsButton; private final ExistingFractalsButton existingFractalsButton;
public Menu(View view, GameController gameController) { public Menu(View view, GameController gameController) {
existingFractalsButton = new ExistingFractalsButton(view, gameController, transformations); MenuController menuController = new MenuController();
transformations = new CreateNewFractal(menuController);
existingFractalsButton = new ExistingFractalsButton(view, gameController, transformations, menuController);
initializeMenu(); initializeMenu();
} }
...@@ -49,7 +52,6 @@ public class Menu extends VBox { ...@@ -49,7 +52,6 @@ public class Menu extends VBox {
setPadding(new Insets(10, 0, 10, 0)); setPadding(new Insets(10, 0, 10, 0));
} }
private void menuStyling() { private void menuStyling() {
setPadding(new Insets(10, 10, 10, 10)); setPadding(new Insets(10, 10, 10, 10));
setStyle("-fx-background-color: #f4f4f4;"); setStyle("-fx-background-color: #f4f4f4;");
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment