Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • tie/ohj2/ve/2025/kevat/ohj2
  • hasemajo/ohj2
  • nikaleko/ohj2
  • tntvanha/ohj2
  • lemaline/ohj2
  • rintahe/ohj2
  • tersaton/ohj2
  • tornhale/ohj2
  • pjyypiix/ohj-2
  • aneejoko/ohj2
  • reponaw/ohj2
  • saarian/ohj2
  • niemimm/ohj2
  • jppaasww/ohj2-2025k
  • ssniinim/ohj2
  • niememan/ohj2
  • milimaas/ohj2
  • kallmovu/ohj2
  • adaoliro/ohj2
  • tojuhann/ohj2
  • vevejuha/ohj2
  • mieikrla/ohj2
  • miankort/ohj2
  • saeteppo/ohj2
  • saelripa/ohj2
  • saniitty/ohj2
  • nsmietyt/ohj2
  • mikkolto/ohj2
  • mmuhonen/ohj2k25
  • saukkota/ohj-2-ht
  • eenorta/ohj2
  • oapaaso/ht-2
  • eeeeoino/ohj2
  • hietmaem/ohj2
  • vvlaspa/ohj2ht
  • lalaajal/ohj2
  • pepartyy/ohj2
  • loukovjv/ohj2
  • vihtkaan/ohj2
  • annelinu/ohjelmointi2
  • lehtikmi/ohj2
  • ihakalel/ohj2
  • aichinos/ohj2
  • lahteela/ohj-2-ht
  • pellrata/ohj2
  • iljinisa/ohj2
  • nkeuren/ohj2
  • hiltunma/ohj2
  • esshelkr/ohj2
  • vianelo/ohj2
  • kousaepw/ohj-2-ht
  • amheikkz/ohj2
  • jatirkko/ohj2
  • akharine/ohj2
  • rlokilja/ohj2
  • eskrliim/ohj2
  • masakoiv/ohj2
  • toivjope/ohj2
  • sasalons/ohj2
  • hirvepjw/ohj2
  • lajoveps/vuororekisteri
  • lelitirr/ohj-225
  • juhsansa/ohj2
  • essmarpe/ohj2
  • lehtlrvt/ohj2
  • setilus/ohj2
  • julipits/ohj2
  • kivistve/ohj2
  • erpajala/ohj2
  • pslohi/ohj2
  • sediiv/ohj2
  • jovesaar/ohj2
  • jutaalko/ohj2
  • valltoha/ohj2
  • ruotvive/ohj2ht
  • kkvalke/ohj2
  • aetuukka/espanjakohderekisteri
  • pdanilei/ohj2ht
  • lahtlule/ohj2
  • jaemvahu/ohj2
  • kantsiii/ohj2
  • tototuru/ohj2
  • elmotabe/ohj2
  • sutinele/ohj2
  • vepajuna/ohj2
  • tornittu/reseptilista
  • sasoleht/ohj2
  • eemjorto/ohj2
  • gagolzar/ohj2
  • sievanee/ohj2
  • nobekail/ohj2
  • mamiparv/ohj2
  • halolpvz/ohj2
  • tukilo/ohj2
  • mmleppis/ohj2
  • tmruisma/ohj2
  • aajataip/ohj-2
  • salonevs/ohj-2
  • ygulusen/ohj2
  • saarakka/ohj2
  • eakoskix/ohj2
  • lamminm/ohj2ht
  • sellmmv/salibandynpelaajarekisteri
  • tuoskopp/ohj2
  • haarates/ohj-2
  • jormlsuu/ohj2
  • lihiauka/ohj2
  • eeemkarv/ohj2
  • uekolehm/ohj2
  • smkolari/ohj-2-a
  • spicjrxz/ohj2
  • maalvirt/ohj-2-ht
  • hietaolo/ohj2ht
  • rtmatilt/ohj2
  • veevjoen/ohj2
  • lainejee/ohj2
  • pohtojoj/tuotelistaaja
  • jokayli/ohj2
  • sulasaal/ohj2
  • kalloupe/ohj2
  • apeshhhh/ohj2
  • kopperp/ohj2
  • garammtu/ohj2
  • ettalaes/ohj2
  • rajanije/ohj2
  • timovaan/ohj2
  • mkvuonos/ohj2
  • tuomiluu/ohj2
  • konttijm/ohj2
  • palolala/ohj2
  • vejokauk/ohj2
  • peihanus/ohj2
  • itsario/ohj2
  • hejumivu/ohj2
  • isojarto/ohj2
  • pirinpot/ohj2ht
  • oihietan/ohj2
  • niemhizz/ohj2
  • oparve/ohj2
  • truhtejo/ohj-2-ht
  • malineps/ohj-2-pelivalikoima
  • kylkii/ohj2
  • emigrank/ohj2
  • samavakk/ohj2
  • lausofla/ohj2
  • arossors/ohj-2-2
  • nurmsajo/ohj2
  • mattarma/ohj2
  • akjuhesa/ohj-2-ht
  • ovevalka/ohj2
  • lequyanh/ohj-2-ht
  • jasyvays/ohj2
  • lindtope/ohj2
  • kaipainm/ohj2
  • peillips/ohj2
  • miwamich/ohj2
  • anpahypp/ohj2harkka
  • kreenk/ohj2
  • iiaumaoi/ohj2
  • jmsutizy/ohj-2-25
  • conrcsir/ohj2
  • palaakho/ht-metsastyspaivakirja
  • makelkjt/ohj2
  • jooantni/ohj2
  • ttkelaw/ohj-2-2025-k
  • koivishe/kuntohalli-oy
  • laleiho/harjoitustyo-ohj-2
  • joolmatt/ohj2-ht
  • akrasa/ohj2
  • rikretel/ohj-2-ht
  • vuorelma/ohj2
171 results
Show changes
Commits on Source (57)
Showing
with 1334 additions and 6 deletions
Luokan nimi: Naytto Avustajat: Projektit, Tehtavat
-Toimii API:na eli pyytää ja välittää tarvittavat tiedot Projekti ja Tehtava luokilta jotka taas noutavat asiat omista .dat tiedostoista
————————————————————————————————————————————————————————
Luokan nimi: Projektit Avustajat: Projekti
-lisää ja poistaa projekteja
-lukee ja kirjoittaa projektit.dat tiedostoa
-etsii ja lajittelee
-tietää suoritettujen ja suorittamattomien tehtävien lukumäärä ja huolehtii sitä kautta status kentästä
————————————————————————————————————————————————————————
Luokan nimi: Projekti Avustajat: Tehtavat
-Kommunikoi tehtavat kanssa ja tätä kautta luo statuksen
(Tieto montako tehtävää on suoritettu kaikista tehtävistä)
————————————————————————————————————————————————————————
Luokan nimi: Tehtavat (tehtävät) Avustajat:Projekti, Tehtävä
-Vastaa tehtävien järjestelystä ja etsimisestä
-Tietää onko tehtävä suoritettu vai suorittamaton
-lukee ja kirjoittaa tehtavat.dat tiedostoa
————————————————————————————————————————————————————————
Luokan nimi: Tehtava Avustajat:
-Huolehtii omista tiedoista
-tarkastaa syötettyn tiedon formaatin (parse)
# pohja
Pohja kevään 2025 harjoitustöiden GIT-repoille
Lue käyttöohjeet TIMistä: <https://tim.jyu.fi/view/kurssit/tie/ohj2/tyokalut/git/ohj2git#fork>
Harakka tehtävien hallinta ohjelma
kuvat/Harakka tietorakenne.jpg

422 KiB

kuvat/HarakkaMain.jpeg

37 KiB

kuvat/HarakkaStat.jpeg

14.6 KiB

kuvat/harakkakaynnistys.png

12.6 KiB

kuvat/hierarkia.jpg

49.9 KiB

kuvat/tehta.jpg

73 KiB

kuvat/tiles.jpg

80.8 KiB

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;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.control.*;
import javafx.scene.layout.Pane;
public class HarakkaController {
@FXML
private Button p1t1;
@FXML
private Button p1t2;
@FXML
private Button p1t3;
@FXML
private Button p2t1;
@FXML
private Button p2t2;
@FXML
private CheckBox piilotaVkl;
@FXML
private MenuItem sulje;
@FXML
private Button tile1_1;
@FXML
private Button tile1_2;
@FXML
private Button tile1_3;
@FXML
private Button tile1_4;
@FXML
private Button tile1_5;
@FXML
private Button tile2_1;
@FXML
private Button tile2_2;
@FXML
private Button tile2_3;
@FXML
private Button tile2_4;
@FXML
private Button tile2_5;
@FXML
private Button tile3_1;
@FXML
private Button tile3_2;
@FXML
private Button tile3_3;
@FXML
private Button tile3_4;
@FXML
private Button tile3_5;
@FXML
private Button tile4_1;
@FXML
private Button tile4_2;
@FXML
private Button tile4_3;
@FXML
private Button tile4_4;
@FXML
private Button tile4_5;
@FXML
private Button tile5_1;
@FXML
private Button tile5_2;
@FXML
private Button tile5_3;
@FXML
private Button tile5_4;
@FXML
private Button tile5_5;
@FXML
private Button tile6_1;
@FXML
private Button tile6_2;
@FXML
private Button tile6_3;
@FXML
private Button tile6_4;
@FXML
private Button tile6_5;
@FXML
private Button tile7_1;
@FXML
private Button tile7_2;
@FXML
private Button tile7_3;
@FXML
private Button tile7_4;
@FXML
private Button tile7_5;
@FXML
private Button uusiPro;
@FXML
private Button uusiTeht;
@FXML
private TabPane lehti;
//-------------------------------------------------------------------------------------------
private static Harakka harakka = new Harakka();
@FXML
void HandleMuokkaa(ActionEvent event) {
Dialogs.showMessageDialog("Myöhemmin: Tästä saat muokattua");
}
@FXML
void HandlePiilota(ActionEvent event) {
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
* tietorakenteeseen.
*
* @param event klikataan päämenussa lisää projekti
*/
@FXML
void handleLisaaPro(ActionEvent event) {
Tab uusiLehti = new Tab();
uusiLehti.setContent(new Label()); //luodaan projektinäkymään uusi lehti oottamaan jos se mahdollisesti
lehti.getTabs().add(uusiLehti);
Projekti uusiProjekti = new Projekti();
uusiProjekti = lisaaProjekti(); //luotava projekti joka palautetaan kun tullaan pois lisääprojekti ikkunasta
if (uusiProjekti == null || uusiProjekti.getNimi().isBlank() || onJoProjekti(uusiProjekti)){ //jos tullaan pois nimettömällä projektilla
//sitten pitää poistaa luotu tabi
lehti.getTabs().removeLast();
}else {
//muuten laitetaan uuden tabin nimeksi luodun projektin nimi
uusiLehti.setText(uusiProjekti.getNimi());
//lisätään uusiprojekti tietorakenteeseen
try {
harakka.lisaaProjekti(uusiProjekti);
} catch (Exception e) {
System.out.println("Lisääminene tietorakenteeseen ei onnistunut" + e);
}
}
}
/** Tarkistaa onko jo projekti samalla nimellä olemassa
*
* @param uusiProjekti
* @return
*/
private boolean onJoProjekti(Projekti uusiProjekti) {
boolean totuus = false;
for (int i = 0; i < lehti.getTabs().size() - 1; i++){
if (lehti.getTabs().get(i).getText().equals(uusiProjekti.getNimi())){
totuus = true; //löytyy projekteista
}
}
return totuus;
}
/** 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) {
//onko projektilistassa poistettavia
if (lehti.getTabs().size() < 1)return;
//klikattu poista projekti nappia --> tarvitaan tieto mikä tabi on auki projekti valikossa
Tab valittuLehti = lehti.getSelectionModel().getSelectedItem(); //valittu lehti
String poistettava = valittuLehti.getText();
//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
//poistaa projektin nimen mukaan --> ei voi olla montaa samannimistä projektia
harakka.projektit.poistaProjekti(poistettava);
//ja poistetaan lehti
lehti.getTabs().remove(valittuLehti);
}
/** 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){
}
/**Aliohjelma joka tuo esille projekin lisäämis ikkunan modalControllerin kautta
*
*/
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
}
}
package fxHarakka;
import javafx.application.Application;
import javafx.stage.Stage;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.fxml.FXMLLoader;
/**
* @author rennekiljala, Jaakko Matilainen
* @version 23.1.2025
*/
public class HarakkaMain extends Application {
@Override
public void start(Stage primaryStage) {
try {
FXMLLoader ldr = new FXMLLoader(getClass().getResource("HarakkaView.fxml"));
final Pane root = ldr.load();
Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("harakka.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setTitle("Harakka");
primaryStage.show();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param args Ei käytössä
*/
public static void main(String[] args) {
launch(args);
}
}
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.TitledPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.text.Text?>
<BorderPane xmlns="http://javafx.com/javafx/23.0.1" xmlns:fx="http://javafx.com/fxml/1">
<center>
<TitledPane BorderPane.alignment="CENTER">
<content>
<TextField prefHeight="25.0" prefWidth="262.0" />
</content>
<graphic>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Lisää tehtävä" />
</graphic>
</TitledPane>
</center>
</BorderPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.RowConstraints?>
<?import javafx.scene.text.Font?>
<?import javafx.scene.text.Text?>
<AnchorPane prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/23.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fxHarakka.LuoProjektiController">
<children>
<GridPane layoutX="136.0" layoutY="144.0" prefHeight="400.0" prefWidth="600.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<TextField fx:id="projektiNimi" onKeyTyped="#setNimi" promptText="Syötä nimi" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<TextField fx:id="projektiAihe" onKeyTyped="#setAihe" promptText="Syötä aihe" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Projektin nimi" textAlignment="RIGHT" GridPane.rowIndex="1">
<font>
<Font size="22.0" />
</font>
</Text>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Aihe" GridPane.rowIndex="2">
<font>
<Font size="22.0" />
</font>
</Text>
<Text strokeType="OUTSIDE" strokeWidth="0.0" text="Kesto" GridPane.rowIndex="3">
<font>
<Font size="22.0" />
</font>
</Text>
<TextField fx:id="projektiKesto" onKeyTyped="#setKesto" promptText="Viikoissa (esim 4 tai 5)" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Button fx:id="luoProjekti" mnemonicParsing="false" onAction="#luoProjekti" text="Luo Projekti" GridPane.columnIndex="2" GridPane.rowIndex="4" />
<Button fx:id="hylkaaProjekti" mnemonicParsing="false" onAction="#HylkaaProjekti" text="Hylkää muutokset" GridPane.columnIndex="1" GridPane.rowIndex="4" />
</children>
</GridPane>
</children>
</AnchorPane>
package fxHarakka;
import fi.jyu.mit.fxgui.ModalController;
import fi.jyu.mit.fxgui.ModalControllerInterface;
import fxHarakka.luokat.Harakka;
import fxHarakka.luokat.Projekti;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.Button;
import javafx.scene.control.TabPane;
import javafx.scene.control.TextField;
import javafx.scene.input.KeyEvent;
import javafx.stage.Stage;
import java.net.URL;
import java.util.ResourceBundle;
public class LuoProjektiController implements ModalControllerInterface<Projekti>, Initializable {
@FXML
private Button hylkaaProjekti;
@FXML
private Button luoProjekti;
@FXML
private TextField projektiAihe;
private String aihe = null;
@FXML
private TextField projektiKesto;
private String kesto = null;
@FXML
private TextField projektiNimi;
private String nimi = null;
@FXML
private TabPane lehti;
//==================================================================================================
@Override
public void initialize(URL url, ResourceBundle resourceBundle) {
}
/**
* kun painetaan hylkää projekti
*
*
* @param event
*/
@FXML
void HylkaaProjekti(ActionEvent event) {
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 -> 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){
return ModalController.showModal(HarakkaController.class.getResource("LuoProjekti.fxml"), "Lisää Projekti",
modalityStage, oletus);
}
/**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
void luoProjekti(ActionEvent event) {
String pNimi = projektiNimi.getText();
String pAihe = projektiAihe.getText();
int pKesto = 0;
if (!projektiKesto.getText().isBlank()) {
pKesto = Integer.parseInt(projektiKesto.getText());
}
if(pNimi.isBlank()){
ModalController.closeStage(projektiAihe);
}else {
projektiKohdalla = new Projekti(pNimi, pAihe, pKesto);
ModalController.closeStage(projektiAihe);
}
}
@FXML
void setAihe(KeyEvent event) {
}
@FXML
void setKesto(KeyEvent event) {
}
@FXML
void setNimi(KeyEvent event) {
}
private Projekti projektiKohdalla;
@Override
public Projekti getResult() {
return projektiKohdalla;
}
@Override
public void setDefault(Projekti projekti) {
}
@Override
public void handleShown() {
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.ProgressBar?>
<?import javafx.scene.control.SplitPane?>
<?import javafx.scene.control.TextArea?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.control.TitledPane?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.Pane?>
<?import javafx.scene.layout.RowConstraints?>
<SplitPane dividerPositions="0.5, 0.510590015128593" maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="445.0" prefWidth="663.0" xmlns="http://javafx.com/javafx/23.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fxHarakka.OksaController">
<items>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0">
<children>
<TitledPane animated="false" layoutX="31.0" layoutY="32.0" prefHeight="443.0" prefWidth="327.0" text="Status" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="0.0" prefWidth="38.0">
<children>
<Button layoutX="23.0" layoutY="367.0" mnemonicParsing="false" text="Tallenna" />
<Button layoutX="98.0" layoutY="367.0" mnemonicParsing="false" text="Hylkää muutokset" />
<TextField layoutX="56.0" layoutY="37.0" prefHeight="26.0" prefWidth="206.0" text="Lisää &quot;ei toimi&quot; promptit" />
<TextField layoutX="56.0" layoutY="70.0" prefHeight="26.0" prefWidth="206.0" text="Lisää sample data" />
<CheckBox layoutX="31.0" layoutY="41.0" mnemonicParsing="false" />
<CheckBox layoutX="31.0" layoutY="74.0" mnemonicParsing="false" />
<ProgressBar layoutX="30.0" layoutY="329.0" prefHeight="20.0" prefWidth="254.0" progress="0.0" />
</children>
</AnchorPane>
</content>
</TitledPane>
</children></AnchorPane>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="160.0" prefWidth="100.0" />
<TitledPane animated="false" prefHeight="443.0" prefWidth="327.0" text="Tehtävän tiedot">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="0.0" prefWidth="38.0">
<children>
<TextArea layoutX="22.0" layoutY="200.0" prefHeight="109.0" prefWidth="278.0" promptText="Lisätietoja" />
<Pane layoutX="23.0" layoutY="-7.0" prefHeight="200.0" prefWidth="252.0" />
<GridPane gridLinesVisible="true" layoutX="10.0" layoutY="10.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="130.22607421875" minWidth="10.0" prefWidth="101.00753784179688" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="123.17330932617188" minWidth="10.0" prefWidth="98.99246215820312" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="123.17330932617188" minWidth="10.0" prefWidth="100.0" />
</columnConstraints>
<rowConstraints>
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<opaqueInsets>
<Insets />
</opaqueInsets>
<children>
<TextField text="Kiinteä aika:" GridPane.rowIndex="1" />
<TextField promptText="muotoa 1,1 - 1,4" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="1" />
<TextField text="Ajankohta:" GridPane.rowIndex="2" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="2" />
<TextField promptText="pv.tt." GridPane.columnIndex="1" GridPane.rowIndex="2" />
<TextField />
<TextField GridPane.columnIndex="2" />
<TextField GridPane.columnIndex="1" />
</children>
</GridPane>
<ButtonBar layoutX="15.0" layoutY="362.0" prefHeight="40.0" prefWidth="282.0">
<buttons>
<Button mnemonicParsing="false" text="Ohje" />
</buttons>
</ButtonBar>
</children>
</AnchorPane>
</content>
</TitledPane>
</items>
</SplitPane>
package fxHarakka;
import fi.jyu.mit.fxgui.ModalControllerInterface;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
public class OksaController implements ModalControllerInterface<String> {
@FXML
private Button Tallenna;
@FXML
void HylkaaTehtava(ActionEvent event) {
}
@FXML
void Tallenna(ActionEvent event) {
}
@Override
public String getResult() {
return "";
}
@Override
public void setDefault(String s) {
}
@Override
public void handleShown() {
}
}
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
\ No newline at end of file
File added
package fxHarakka.luokat;
import fxHarakka.HarakkaController;
public class Harakka {
//harakalla on tehtavat ja projektit instanssit
private final Tehtavat tehtavat = new Tehtavat();
public final Projektit projektit = new Projektit();
public Harakka() {
}
public static void main (String[] args) {
}
/**Välittää projektit luokalle projektin ja projektit luokka lisää sen tietokantaan
*
* @param projekti lisättävä projekti
*/
public void lisaaProjekti (Projekti projekti){
projektit.lisaaProjekti(projekti);
}
/**projektin luonti testaamista varte
*
* @param nimi projektin nimi
* @param aihe projektin aihe
* @param kesto projektin kesto
*/
public void luoProjekti(String nimi, String aihe, String kesto){
int kestoInt = Integer.parseInt(kesto);
Projekti projekti = new Projekti(nimi, aihe, kestoInt);
projekti.rekisteroiProjekti();
projektit.lisaaProjekti(projekti);
}
}