From 52a05f8b9ffe7be6bec2fd28c23ec4db98adb5ae Mon Sep 17 00:00:00 2001
From: Kiljala Renne Lauri Olavi <renne.l.o.kiljala@student.jyu.fi>
Date: Thu, 27 Mar 2025 16:49:18 +0200
Subject: [PATCH] =?UTF-8?q?projektin=20lis=C3=A4=C3=A4minen=20toimii=20nyt?=
 =?UTF-8?q?=20oikein?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/fxHarakka/HarakkaController.java     | 63 +++++++++++++++++++++++-
 src/fxHarakka/LuoProjektiController.java | 10 ++--
 src/fxHarakka/luokat/Harakka.java        |  2 +-
 src/fxHarakka/luokat/Naytto.java         | 17 +++++++
 4 files changed, 84 insertions(+), 8 deletions(-)

diff --git a/src/fxHarakka/HarakkaController.java b/src/fxHarakka/HarakkaController.java
index 01e270d..bf83eca 100644
--- a/src/fxHarakka/HarakkaController.java
+++ b/src/fxHarakka/HarakkaController.java
@@ -3,6 +3,7 @@ package fxHarakka;
 import fi.jyu.mit.fxgui.Dialogs;
 import fi.jyu.mit.fxgui.ModalController;
 import fxHarakka.luokat.Harakka;
+import fxHarakka.luokat.Naytto;
 import fxHarakka.luokat.Projekti;
 import javafx.event.ActionEvent;
 import javafx.fxml.FXML;
@@ -152,7 +153,7 @@ public class HarakkaController {
 
 
     //-------------------------------------------------------------------------------------------
-    private Harakka harakka = new Harakka();
+    private static Harakka harakka = new Harakka();
 
 
 
@@ -167,6 +168,19 @@ public class HarakkaController {
         Dialogs.showMessageDialog("Myöhemmin: Tästä saat piilotettua viikonlopun");
     }
 
+    /**Asettaa muokattavan harakan controllerille
+     *
+     * @param uusiHarakka muokattava harakka
+     *
+     *  esim. Naytto-luokalla on harakan instanssi joka halutaan olla käyttäjän harakka "istunto"
+     *                    --> setHarakka asettaa tämän istunnoksi
+     */
+    public static void setHarakka(Harakka uusiHarakka){
+        harakka = uusiHarakka;
+    }
+
+
+
 
     /** Tapahtumankäsittelijä kun painetaan lisää Projekti painiketta päämenussa.
      * avaa modaalisen ikkunan ja pyytää uuden projektin tiedot, jonka jälkeen hierarkiaa pitkin
@@ -207,41 +221,85 @@ public class HarakkaController {
 
     }
 
+
+    /** Tapahtumankäsittelijä päämenun "Lisää tehtävä" painikkeelle
+     *
+     * @param event tapahtuma
+     */
     @FXML
     void handleLisaaTeht(ActionEvent event) {
         ModalController.showModal(HarakkaController.class.getResource("LisääTehtävä.fxml"), "Muokkaa", null, "");
     }
 
+    /** Tapahtumankäsittelijä tehtävänmuokkausta varten
+     *
+     * @param event tapahtuma
+     */
     @FXML
     void handleMuokkaa(ActionEvent event) {
         Dialogs.showMessageDialog("Myöhemmin: Tästä saat muokattua tehtävää");
     }
 
+    /** Tapahtumankäsittelijä Muokkaa tehtävää päämenussa
+     *
+     * @param event tapahtuma
+     */
     @FXML
     void handleTehtava(ActionEvent event) {
         ModalController.showModal(HarakkaController.class.getResource("Oksa.fxml"), "Muokkaa", null, "");
     }
 
+    /** Tapahtumankäsittelijä kun klikataan tileä tilematriisissa
+     *
+     * @param event
+     */
     @FXML
     void handleTile(ActionEvent event) {
         Dialogs.showMessageDialog("Myöhemmin: Tästä saat muokattua tileä");
     }
 
+    /** Ylä toolbaarissa oleva tabi joka sulkee ohjelman
+     *
+     * TODO lisää promptin "haluatko tallentaa ennen sulkemista"
+     *
+     * @param event
+     */
     @FXML
     void suljeOhjelma(ActionEvent event) {
         Dialogs.showMessageDialog("Myöhemmin: Sulkee ohjelman");
     }
 
+    /**
+     * Poista projekti tapahtumankäsittelikä
+     * @param event
+     */
     @FXML
     void handlePoistaPro(ActionEvent event) {
-        Dialogs.showMessageDialog("Myöhemmin: Poistaa projektin");
+        //klikattu poista projekti nappia --> tarvitaan tieto mikä tabi on auki projekti valikossa
+        Tab valittuLehti = lehti.getSelectionModel().getSelectedItem(); //valittu lehti
+
+        //poistaessa pitää mennä tietorakenteeseen ja poistaa sieltä kyseinen projekti
+        //jonka jälkeen kun tämä tehty niin poistetaan valitun projektin lehti/tabi
+        // CRC --> projektit-luokka "lisää ja poistaa projekteja" --> kutustaan harakka.projektit luokkaa
+
+        //harakka.projektit.poistaProjekti();
+
+
     }
 
+    /** Ylä toolbaarissa apu tabin tapahtumankäsittelijä --> avaa FAQ tai ohjevalikon ohjelmalle
+     *
+     * @param event
+     */
     @FXML
     void handleApu(ActionEvent event) {
         Dialogs.showMessageDialog("Myöhemmin: Saat lisätietoja ohjelmasta");
     }
 
+    /** Lisaa tabin
+     *
+     * @param nimi
+     */
     @FXML
     public void lisaaLehti(String nimi){
 
@@ -254,6 +312,7 @@ public class HarakkaController {
     private Projekti lisaaProjekti (){
         Projekti projekti = new Projekti(); //tähän palautetaan luotu projekti
         return LuoProjektiController.kysyProjekti(null, projekti);
+        //suuntaa ProjektinluontiControllerille --> pitää koodin selkeänä tässä controllerissa
     }
 
 
diff --git a/src/fxHarakka/LuoProjektiController.java b/src/fxHarakka/LuoProjektiController.java
index d087279..1d60ee4 100644
--- a/src/fxHarakka/LuoProjektiController.java
+++ b/src/fxHarakka/LuoProjektiController.java
@@ -55,15 +55,17 @@ public class LuoProjektiController implements ModalControllerInterface<Projekti>
      */
     @FXML
     void HylkaaProjekti(ActionEvent event) {
-        projektiNimi = null;
-        projektiAihe = null;
+        projektiNimi = null; //null koska kun palataan ikkunasta takaisin päämenuun ja jos nimi tai aihe null niin
+        projektiAihe = null; //niin poistetaan alustettu uusi tabi
         ModalController.closeStage(projektiNimi);
     }
 
     /**
      *
      * @param modalityStage jos halutaan että on modaalinen vain tietylle (null ==> modaalinen kaikille)
-     * @param oletus oletusprojekti joka palautetaan
+     * @param oletus oletusprojekti joka palautetaan -> modaali vaatii oletuspalautuksen
+     *                                                  mutta muuten ei käyttöä projektin luomisessa
+     *                                                  koska ei tarvitse populoida ikkunaa valmiilla datalla
      * @return Käyttämän luoma projekti
      */
     public static Projekti kysyProjekti(Stage modalityStage, Projekti oletus){
@@ -77,8 +79,6 @@ public class LuoProjektiController implements ModalControllerInterface<Projekti>
     /**Jos tietokentät täytetty uusi projekti ikkunassa niin antaa modaalin kautta tiedon luodusta projektista
      * eteenpäin
      *
-     *
-     *
      * @param event kun painetaan luo projekti projektin luomisikkunassa
      */
     @FXML
diff --git a/src/fxHarakka/luokat/Harakka.java b/src/fxHarakka/luokat/Harakka.java
index 3f27f07..bf7386e 100644
--- a/src/fxHarakka/luokat/Harakka.java
+++ b/src/fxHarakka/luokat/Harakka.java
@@ -5,7 +5,7 @@ import fxHarakka.HarakkaController;
 public class Harakka {
 //harakalla on tehtavat ja projektit instanssit
     private final Tehtavat tehtavat = new Tehtavat();
-    private final Projektit projektit = new Projektit();
+    public final Projektit projektit = new Projektit();
 
 
     public static void main (String[] args) {
diff --git a/src/fxHarakka/luokat/Naytto.java b/src/fxHarakka/luokat/Naytto.java
index a41754d..ce237cc 100644
--- a/src/fxHarakka/luokat/Naytto.java
+++ b/src/fxHarakka/luokat/Naytto.java
@@ -7,6 +7,23 @@ public class Naytto {
     public Harakka harakka = new Harakka();    //luodaan ns. uusi istunto --> voi olla useampi harakka
                                                 //jos jatkossa haluaa useamman käyttäjän
 
+    //TODO tarvitaan aliohjelma joka vie tästä luokasta harakka controllerille sen harakan jota ollaan
+    //muokkaamassa --> staattinen aliohjelma jolle viedään parametrinä harakka
+    //vai harakan oma metodi? harakka.lisääOhjain();
+
+
+    /**Vie harakan HarakkaControllerille jotta harakka controller tietää mihin harakka instanssiin
+     * projektit ja tehtävät lisätään
+     *
+     * @param harakka ohjailmelle vietävä harakka
+     */
+    private static void lisaaHarakka(Harakka harakka){
+        HarakkaController.setHarakka(harakka); // setHarakka lisää harakan muokattavaksi harakaksi
+    }
+
+
+
+
     public void main(){
 
     }
-- 
GitLab