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