From af42b54a49fd19d04873334ad6b837d93c923493 Mon Sep 17 00:00:00 2001 From: emilruud <emilruud@ntnu.no> Date: Mon, 20 May 2024 15:43:36 +0200 Subject: [PATCH 1/6] Added btnSaveFractalToFile --- .../edu/ntnu/idatt2003/view/components/Buttons.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/main/java/edu/ntnu/idatt2003/view/components/Buttons.java b/src/main/java/edu/ntnu/idatt2003/view/components/Buttons.java index e59def2..e15d4d0 100644 --- a/src/main/java/edu/ntnu/idatt2003/view/components/Buttons.java +++ b/src/main/java/edu/ntnu/idatt2003/view/components/Buttons.java @@ -14,6 +14,7 @@ public class Buttons extends Subject { private Button btnReset; private Button btnAddInput; private Button btnAddFractalFromFile; + private Button btnSaveFractalToFile; private Button btnExitApplication; public Buttons() { @@ -62,6 +63,12 @@ public class Buttons extends Subject { System.out.println("Exiting Application..."); notifyObservers("btnExitApplication"); }); + + btnSaveFractalToFile = new Button("Save Fractal To File"); + btnSaveFractalToFile.setOnAction(e -> { + System.out.println("Save Fractal To File"); + notifyObservers("btnSaveFractalToFile"); + }); } public Button getBtnAdd10() { @@ -88,5 +95,8 @@ public class Buttons extends Subject { public Button getBtnExitApplication() { return btnExitApplication; } + public Button getBtnSaveFractalToFile() { + return btnSaveFractalToFile; + } } -- GitLab From 51b5cf36917c8d5c9c8b858f220dbbdf7836e78d Mon Sep 17 00:00:00 2001 From: emilruud <emilruud@ntnu.no> Date: Mon, 20 May 2024 15:43:47 +0200 Subject: [PATCH 2/6] Added saveFractalToFile method --- .../idatt2003/view/components/FractalOperations.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/edu/ntnu/idatt2003/view/components/FractalOperations.java b/src/main/java/edu/ntnu/idatt2003/view/components/FractalOperations.java index 7fb63a3..8ee5c3f 100644 --- a/src/main/java/edu/ntnu/idatt2003/view/components/FractalOperations.java +++ b/src/main/java/edu/ntnu/idatt2003/view/components/FractalOperations.java @@ -138,4 +138,13 @@ public class FractalOperations { ChaosGameDescription newChaosGame = new ChaosGameDescription(chaosGame.getChaosGameDescription().getTransforms(), minCoords, maxCoords); this.chaosGame = new ChaosGame(newChaosGame, 400, 400); } + + public void saveFractalToFile(String path) { +ChaosGameFileHandler fileHandler = new ChaosGameFileHandler(path); + try { + fileHandler.writeToFile(path, chaosGame.getChaosGameDescription()); + } catch (IOException e) { + e.printStackTrace(); + } + } } -- GitLab From 59d296ea6c95cbcea342113344061ee73dfa104e Mon Sep 17 00:00:00 2001 From: emilruud <emilruud@ntnu.no> Date: Mon, 20 May 2024 15:44:12 +0200 Subject: [PATCH 3/6] Added saveFractalToFileButton method --- .../java/edu/ntnu/idatt2003/view/scenes/Scene.java | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/main/java/edu/ntnu/idatt2003/view/scenes/Scene.java b/src/main/java/edu/ntnu/idatt2003/view/scenes/Scene.java index 527318d..11481eb 100644 --- a/src/main/java/edu/ntnu/idatt2003/view/scenes/Scene.java +++ b/src/main/java/edu/ntnu/idatt2003/view/scenes/Scene.java @@ -65,16 +65,19 @@ public class Scene { addCInputBox(); removeMatrixVectorInputBoxes(); removeFractalFromFileBox(); + addSaveFractalToFileButton(); } else if ("Sierpinski Triangle".equals(newValue)) { removeMatrixVectorInputBoxes(); removeCInputBox(); addMatrixVectorInputBoxes(); removeFractalFromFileBox(); + addSaveFractalToFileButton(); } else if ( "Barnsley Fern".equals(newValue)) { removeMatrixVectorInputBoxes(); removeCInputBox(); - addMatrixVectorInputBoxes(); removeFractalFromFileBox(); + addMatrixVectorInputBoxes(); + addSaveFractalToFileButton(); } else if ("Fractal From File".equals(newValue)) { removeCInputBox(); @@ -86,8 +89,10 @@ public class Scene { // Initial setup based on the provided fractal type if ("Julia Set".equals(fractalType)) { addCInputBox(); + addSaveFractalToFileButton(); } else if ("Sierpinski Triangle".equals(fractalType) || "Barnsley Fern".equals(fractalType)) { addMatrixVectorInputBoxes(); + addSaveFractalToFileButton(); } else if ("Fractal From File".equals(fractalType)) { addFractalFromFileBox(); } @@ -467,6 +472,13 @@ public class Scene { fractalOperations.updateMinAndMaxFractal(minCoords, maxCoords); } + public void addSaveFractalToFileButton(){ + Button saveFractalToFileButton = buttons.getBtnSaveFractalToFile(); + if (saveFractalToFileButton != null && !topBox.getChildren().contains(saveFractalToFileButton)) { + topBox.getChildren().add(saveFractalToFileButton); + } + } + public void setUpStage(Stage primaryStage) { primaryStage.setTitle("ChaosGame"); primaryStage.setScene(scene); -- GitLab From 9d1bb9a6cf392305e63482b25ce192209e736695 Mon Sep 17 00:00:00 2001 From: emilruud <emilruud@ntnu.no> Date: Mon, 20 May 2024 15:44:49 +0200 Subject: [PATCH 4/6] Added btnSaveFractalToFile --- .../edu/ntnu/idatt2003/controller/ButtonObserver.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java b/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java index 55755a6..da297eb 100644 --- a/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java +++ b/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java @@ -73,6 +73,15 @@ public class ButtonObserver implements Observer{ fractalOperations.setFractalCustomAffine(file.getPath()); } break; + + case "btnSaveFractalToFile": + FileChooser fileChooserSave = new FileChooser(); + fileChooserSave.setTitle("Save Fractal To File"); + File fileSave = fileChooserSave.showSaveDialog(new Stage()); + if (fileSave != null) { + fractalOperations.saveFractalToFile(fileSave.getPath()); + } + break; } } } \ No newline at end of file -- GitLab From 6360bb09888c1bf286e2e800f26fee9ba443d479 Mon Sep 17 00:00:00 2001 From: emilruud <emilruud@ntnu.no> Date: Mon, 20 May 2024 15:47:53 +0200 Subject: [PATCH 5/6] Added default --- .../java/edu/ntnu/idatt2003/controller/ButtonObserver.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java b/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java index da297eb..8f5030c 100644 --- a/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java +++ b/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java @@ -82,6 +82,9 @@ public class ButtonObserver implements Observer{ fractalOperations.saveFractalToFile(fileSave.getPath()); } break; + + default: + break; } } } \ No newline at end of file -- GitLab From 04236d948ee5e456cff9fe73ad2691628785f8d4 Mon Sep 17 00:00:00 2001 From: emilruud <emilruud@ntnu.no> Date: Mon, 20 May 2024 15:51:51 +0200 Subject: [PATCH 6/6] JavaDoc --- .../java/edu/ntnu/idatt2003/controller/ButtonObserver.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java b/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java index 8f5030c..7712064 100644 --- a/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java +++ b/src/main/java/edu/ntnu/idatt2003/controller/ButtonObserver.java @@ -9,10 +9,12 @@ import javafx.scene.control.ButtonType; import javafx.scene.control.Label; import javafx.scene.control.TextField; import javafx.stage.FileChooser; -import javafx.stage.Stage; - import java.io.File; +import javafx.stage.Stage; +/** + * This class is responsible for handling button events. + */ public class ButtonObserver implements Observer{ private ExceptionHandler exceptionHandler = new ExceptionHandler(); private Buttons buttons; -- GitLab