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
  • heevtont/ohj2
  • ojmannex/ohj2
  • veosvuol/ohj2
  • teoilalo/ohj2
  • pakakata/ohj2
  • tie/ohj2/2023k/ohj2
  • jupesate/ohj2
  • olrutane/ohj2
  • vesal/ohj-2-k-23
  • alejarta/ohj2
  • romaasun/ohj2
  • maxvitik/ohj2
  • jatakarj/ohj2
  • forsheal/harjoitustyo
  • paemhiet/ohj2
  • onhuhtal/ohj2
  • peukteni/ohj2
  • kallvaxu/ohj-2-ht-kasityorekisteri
  • piipjuhe/ohj2
  • alanenee/ohj2
  • osterava/ohj2
  • savolpet/ohj2
  • jaalsiik/ohj2
  • jbpalola/ohj2
  • khakarpp/ohj2
  • sokapalo/ohj2
  • luomkohe/ohj2
  • ltahonex/ohj2
  • hejojurv/ohj-2-sukupuu
  • karkhkxy/ohj2
  • vewaheik/ohj2
  • tejumeri/ohj2
  • erkkjjyv/ohj2
  • kkautio/ohj2
  • jaeianro/ohj2
  • olmisalo/ohj2
  • ukkolaaa/ohj2
  • esbrunil/ohj2
  • pjsavola/ohj2
  • mosaluht/jasenrekisteri
  • nviianen/ohj2
  • eetpatsu/ohj2
  • iinelipi/ohj2
  • kaupkama/ohj2
  • myyryejk/ohj-2-ht-myyry
  • mnjtiili/ohj2
  • leppanm/ohj2
  • malineps/ohj2
  • antulepp/ohj-2-b
  • helatukk/ohj2
  • aaahalom/ohj2
  • juvonevi/ruokanaattori
  • atkaanhe/ohj2
  • jypemiko/ohj2-23
  • anuemiko/ohj2
  • lvvuolle/ohj2
  • valkeiti/ohj-2
  • suvileos/ohj2
  • mikpekpu/ohj2
  • savevalo/ohj2
  • martiksm/ohj2
  • enlejuhe/ohj2
  • eealhakk/ohj-2-ht
  • savomaaa/ohj2
  • elkrleht/ohj2
  • maospelt/ohj2
  • tufiras/ohj2
  • lihavavy/ohj2
  • pepihlaj/ohj2
  • urpiteju/ohj2
  • aetakala/ohj-2-ht
  • tjkajant/ohj2
  • remoneve/ohj2
  • jeismont/ohj2
  • mietanai/ohj2
  • inkilaka/ohj2
  • pmruusu/ohj2
  • pykakimp/reseptirekisteriprojekti
  • mielarju/ohj2
  • jmjleixu/ohj2
  • kalakoiv/ohj2
  • meamalxv/ohj2
  • heinota/ohj2
  • majauusi/ohj2
  • tusakki/ohj2
  • jjpahkin/ohj2
  • nurmimk/ohj2
  • mieemalo/ohj2
  • idmahako/ohj2
  • ajrautia/ohj2
  • evaltaiv/ohj2
  • vevajoki/ohj2
  • vijumato/ohj2
  • nikrantt/ohj2
  • kupialnx/ohj2
  • jujukest/ohj2ht
  • aojuntun/ohj2
  • jhthorxu/ohj2
  • aaaalto/ohj2
  • haggpoo/ohj2
  • mialniem/ohj2
  • marteevi/ohj2
  • amslappi/ohj2
  • jiheikzt/ohj2
  • elbeeltv/ohj2
  • virommss/ohj2
  • tootuoka/ohj2
  • hasultxt/ohj-2
  • laanmaat/ohj-2-2023
  • laueerjo/ohj2
  • jutakoir/osrsprocesspal
  • alalojap/ohj2
  • joaahirv/ohj2
  • venmaamo/ohj2
  • jejaolpa/ohj2
  • anbudano/ohj2
  • peolkyll/ohj2
  • blomerjo/ohj2
  • aasahonk/ohj2
  • lapahama/ohj2
  • karpot/ohj2
  • psbroman/ohj2
  • vemakael/ohj2
  • alninybe/harkkatyo
  • tosakorh/ohj-2-k-23
  • ntkumpul/ntkumpul
  • riiijoko/ohj-2-2023
127 results
Show changes
package RalliJava.test;
// Generated by ComTest BEGIN
import static org.junit.Assert.*;
import org.junit.*;
import RalliJava.*;
// Generated by ComTest END
/**
* Test class made by ComTest
* @version 2025.03.26 11:05:27 // Generated by ComTest
*
*/
@SuppressWarnings({ "all" })
public class HenkilotTest {
// Generated by ComTest BEGIN
/**
* testLisaa39
* @throws SailoException when error
*/
@Test
public void testLisaa39() throws SailoException { // Henkilot: 39
Henkilot henkilot = new Henkilot();
Henkilo henkilo1 = new Henkilo(), henkilo2 = new Henkilo();
assertEquals("From: Henkilot line: 43", 0, henkilot.getLkm());
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 44", 1, henkilot.getLkm());
henkilot.lisaa(henkilo2); assertEquals("From: Henkilot line: 45", 2, henkilot.getLkm());
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 46", 3, henkilot.getLkm());
assertEquals("From: Henkilot line: 47", henkilo1, henkilot.anna(0));
assertEquals("From: Henkilot line: 48", henkilo2, henkilot.anna(1));
assertEquals("From: Henkilot line: 49", henkilo1, henkilot.anna(2));
try {
assertEquals("From: Henkilot line: 50", henkilo1, henkilot.anna(3));
fail("Henkilot: 50 Did not throw IndexOutOfBoundsException");
} catch(IndexOutOfBoundsException _e_){ _e_.getMessage(); }
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 51", 4, henkilot.getLkm());
henkilot.lisaa(henkilo1); assertEquals("From: Henkilot line: 52", 5, henkilot.getLkm());
try {
henkilot.lisaa(henkilo2);
fail("Henkilot: 53 Did not throw SailoException");
} catch(SailoException _e_){ _e_.getMessage(); }
} // Generated by ComTest END
}
\ No newline at end of file
package application;
import RalliJava.Rekisteri;
import javafx.application.Application;
//import javafx.application.Platform;
import javafx.stage.Stage;
import javafx.scene.Scene;
//import javafx.scene.layout.BorderPane;
import javafx.scene.layout.Pane;
import javafx.fxml.FXMLLoader;
/**
* @author idamk
* @version 5.2.2025
* Tällä hetkellä avaa ikkunan, ei tee mitään.
*
*/
public class Main extends Application {
@Override
public void start(Stage primaryStage) {
try {
//rekisteriCtrl = setRekisteri();
//TODO lisää final-jutut mallin mukaan
final FXMLLoader ldr = new FXMLLoader(getClass().getResource("Sample.fxml"));
final Pane root = (Pane)ldr.load();
final RalliController ralliCtrl = (RalliController)ldr.getController();
//BorderPane root = (BorderPane)FXMLLoader.load(getClass().getResource("Sample.fxml"));
final Scene scene = new Scene(root);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.setTitle("Rallirekisteri"); //Ikkunan otsikko
Rekisteri rekisteri = new Rekisteri();
ralliCtrl.setRekisteri(rekisteri);
primaryStage.setOnCloseRequest((event) -> {
if(!ralliCtrl.voikoSulkea()) event.consume();
});
primaryStage.show();
//if (!ralliCtrl.avaa() ) Platform.exit();
} catch(Exception e) {
e.printStackTrace();
}
}
/**
* @param args ei käytössä
*/
public static void main(String[] args) {
launch(args);
}
}
package application;
import javafx.application.Platform;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.control.ScrollPane;
import javafx.scene.control.TextArea;
import javafx.scene.control.TextField;
import javafx.scene.text.Font;
import java.io.PrintStream;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
import RalliJava.Henkilo;
import RalliJava.Ralli;
import RalliJava.Rekisteri;
import RalliJava.SailoException;
import fi.jyu.mit.fxgui.Dialogs;
import fi.jyu.mit.fxgui.ListChooser;
import fi.jyu.mit.fxgui.ModalController;
import fi.jyu.mit.fxgui.TextAreaOutputStream;
/**
* @author idamk
* @version 5.2.2025
*
*/
public class RalliController implements Initializable {
@FXML private TextField textrajaus; //hakutulosten rajaus'
@FXML private ScrollPane panelHenkilo;
@FXML private ListChooser<Henkilo> chooserHenkilot;
/*
* Alustaa vasemman reunan listan tyhjäksi.
* TODO: lisätyn tiedot tulisi näkyviin keskelle tekstikenttään
*/
@Override
public void initialize(URL url, ResourceBundle bundle) {
alusta();
}
/*
* Avaa uuden ikkunan missä voi lisätä uuden henkilön tiedot ja tallentaa ne
*/
@FXML private void handleUusiHenkilo() {
uusiHenkilo();
}
@FXML private void handleUusiRalli() {
//Dialogs.showMessageDialog("Lisää uuden rallin, ei vielä osaa :((");
uusiRalli();
}
/*
* Avaa ikkunan, missä pääsee muokkaamaan valitun RALLIN tietoja
*/
@FXML private void handleMuokkaa() {
//Dialogs.showMessageDialog("Muokkaa valittua henkilöä/rallia, ei osaa vielä :((");
ModalController.showModal(RalliController.class.getResource("muokkausRalli.fxml"), "Muokkaa", null, "");
//TODO: täytyy pystyä muokkaamaan myös henkilöitä
}
/*
*
*/
@FXML private void handleRajaus() {
Dialogs.showMessageDialog("Rajaa hakutuloksia, ei osaa vielä :((");
}
/*
* Poistuu ikkunasta
*/
@FXML private void handlePoistu() {
//TODO:tallenna();
Platform.exit();
}
/**
* @return true
*/
public boolean voikoSulkea() {
//tallenna();
return true;
}
/*================================================================*/
private Rekisteri rekisteri;
private Henkilo henkiloKohdalla;
private TextArea areaHenkilo = new TextArea(); //TODO poista lopuksi!!
/**
* @param rekisteri mitä käytetään
*/
public void setRekisteri(Rekisteri rekisteri){
this.rekisteri = rekisteri;
naytaHenkilo();
}
/*
* Näyttää valitun jäsenen tiedot väliaikaisesti
* @param rekisteri
*/
private void naytaHenkilo() {
henkiloKohdalla = chooserHenkilot.getSelectedObject();
if(henkiloKohdalla == null) return; //jos ei oo valittuna ketään, poistutaan
areaHenkilo.setText(""); //tyhjennetään entinen näkyviltä
try (PrintStream out = TextAreaOutputStream.getTextPrintStream(areaHenkilo)) {
out.println("======");
henkiloKohdalla.tulosta(out);
out.println("======");
List<Ralli> rallit = rekisteri.annaRallit(henkiloKohdalla);
for (Ralli ral: rallit)
ral.tulosta(out);
out.println("======");
//tulosta(out, henkiloKohdalla);
//henkiloKohdalla.tulosta(out);
//List<Ralli> rallit = rekisteri.annaRallit(henkiloKohdalla);
//for(Ralli ral: rallit)
//ral.tulosta(out);
}
}
/*
* Alustaa vasemman teksti-ikkunan tyhjäksi
* asettaa myös kuuntelijan listalle
*/
private void alusta() {
panelHenkilo.setContent(areaHenkilo);
areaHenkilo.setFont(new Font("Courier New", 12));
panelHenkilo.setFitToHeight(true);
chooserHenkilot.clear();
chooserHenkilot.addSelectionListener(e -> naytaHenkilo()); // e on lambdalauseke
//TODO: saa uudet henkilöt näkymään listassa
}
/*
* Haetaan henkilöt uudelleen
* @param idnro henkilön tunniste
*/
private void hae(int idnro) {
chooserHenkilot.clear();
int index = 0;
for(int i = 0; i < rekisteri.getHenkiloita(); i++) { //käydään läpi henkilöt
Henkilo henkilo = rekisteri.annaHenkilo(i); //indeksin perusteella käy läpi
if (henkilo.getHenkilonTunnusNro() == idnro) index = i; //samalla kun käy läpi henkilöitä, etsii oikeaa indeksiä
chooserHenkilot.add(henkilo.getNimi(), henkilo); // viimeinen kohta linkittää juuri tämän henkilön chooseriin
}
chooserHenkilot.setSelectedIndex(index);
}
private void uusiHenkilo() {
Henkilo uusi = new Henkilo();
uusi.rekisteroi(); //TODO rekisteröinti vasta kun käyttäjä tallentaa uuden tiedot
uusi.vastaahlo(); //TODO että käyttäjä saa täyttää itse
//uusi.tulosta(System.out);
try {
rekisteri.lisaa(uusi);
} catch (SailoException e) { //catch koska määrtelty että rekisteri saattaa heittää poikkeuksen
Dialogs.showMessageDialog("Ongelmia uuden luomisessa " + e.getMessage());
}
hae(uusi.getHenkilonTunnusNro());
}
private void uusiRalli() {
henkiloKohdalla = chooserHenkilot.getSelectedObject();
if (henkiloKohdalla == null) return; // jos ei olla minkään jäsenen kohdalla
//Chooserilta voi kysyä minkä henkilön kohdalla ollaan
//Henkilo hlovalittuna = chooserHenkilot.getSelectedObject();
Ralli ral = new Ralli();
ral.rekisteroi();
ral.vastaaRalli(henkiloKohdalla.getHenkilonTunnusNro());
rekisteri.lisaa(ral);
hae(henkiloKohdalla.getHenkilonTunnusNro());
//TODO ei lisää rallia mutta ei anna erroria???
}
}
<?xml version="1.0" encoding="UTF-8"?>
<?import fi.jyu.mit.fxgui.ComboBoxChooser?>
<?import fi.jyu.mit.fxgui.ListChooser?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="394.0" prefWidth="788.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="application.RalliController">
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="Tiedosto">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Muokkaa">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Apua">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<HBox spacing="10.0" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</BorderPane.margin>
<children>
<Button mnemonicParsing="false" onAction="#handleUusiHenkilo" text="Lisää uusi henkilö" />
<Button mnemonicParsing="false" onAction="#handleUusiRalli" text="Ilmoita henkilö ralliin" />
<Button mnemonicParsing="false" onAction="#handleMuokkaa" text="Muokkaa henkilötietoja" />
<Button mnemonicParsing="false" onAction="#handlePoistu" text="Takaisin" />
<Button mnemonicParsing="false" onAction="#handlePoistu" text="Poistu" />
</children>
</HBox>
</bottom>
<left>
<BorderPane prefHeight="328.0" prefWidth="170.0" BorderPane.alignment="CENTER">
<bottom>
<ListChooser fx:id="chooserHenkilot" prefHeight="277.0" prefWidth="170.0" rivit="Kalle Rovanperä&#10;Tommi Mäkinen&#10;Harri Rovanperä&#10;Oskari Sokka" BorderPane.alignment="CENTER" />
</bottom>
<center>
<ComboBoxChooser prefHeight="26.0" prefWidth="101.0" rivit="...&#10;Kuskit&#10;Kartturit&#10;Rallit&#10;Paikkakunta&#10;" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" />
</BorderPane.margin>
</ComboBoxChooser>
</center>
<top>
<Label text="Hakuehto" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets left="10.0" right="10.0" top="10.0" />
</BorderPane.margin>
</Label>
</top>
</BorderPane>
</left>
<center>
<ScrollPane fx:id="panelHenkilo" fitToWidth="true" prefHeight="317.0" prefWidth="336.0" BorderPane.alignment="CENTER">
<content>
<GridPane hgap="10.0" prefHeight="253.0" prefWidth="331.0">
<columnConstraints>
<ColumnConstraints fillWidth="false" halignment="RIGHT" hgrow="SOMETIMES" />
<ColumnConstraints hgrow="ALWAYS" />
</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 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 minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<padding>
<Insets left="10.0" right="10.0" top="10.0" />
</padding>
<children>
<Label text="Rallin nimi" />
<Label text="Paikkakunta" GridPane.rowIndex="1" />
<Label text="Ajankohta" GridPane.rowIndex="2" />
<Label text="Järjestäjä" GridPane.rowIndex="3" />
<Label text="Nettisivut" GridPane.rowIndex="4" />
<Label text="Osallistujalista" GridPane.rowIndex="5" />
<Label text="Tuloslista" GridPane.rowIndex="6" />
<Label fx:id="rallinNimi" text="SM-ralli Pohjanmaa" GridPane.columnIndex="1" />
<Label fx:id="rallinTuloslista" text="www.Facobook.com" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<Label fx:id="rallinOsallistujalista" text="www.Youtube.com" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Label fx:id="rallinNettisivut" text="www.Google.com" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label fx:id="rallinJarjestaja" text="Seinäjoen rämäpäät" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Label fx:id="rallinPvm" text="27.6.-28.6.2023" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<Label fx:id="rallinSijainti" text="Seinäjoki" GridPane.columnIndex="1" GridPane.rowIndex="1" />
</children>
</GridPane>
</content>
</ScrollPane>
</center>
<right>
<ScrollPane prefHeight="318.0" prefWidth="314.0" BorderPane.alignment="CENTER">
<content>
<GridPane hgap="10.0" prefHeight="183.0" prefWidth="314.0">
<columnConstraints>
<ColumnConstraints fillWidth="false" halignment="RIGHT" hgrow="SOMETIMES" minWidth="10.0" />
<ColumnConstraints hgrow="ALWAYS" />
</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 minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<padding>
<Insets left="10.0" right="10.0" top="10.0" />
</padding>
<children>
<Label text="Yleiskilpailun voittaja" GridPane.rowIndex="1" />
<TextField GridPane.columnIndex="1" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<Label text="Osallistujien määrä" GridPane.rowIndex="2" />
<TextField prefHeight="26.0" prefWidth="93.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="3">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<Label text="Osallistumismaksu" GridPane.rowIndex="4" />
<TextField GridPane.columnIndex="1" GridPane.rowIndex="4">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<Label text="Luokkien määrä" GridPane.rowIndex="3" />
</children>
</GridPane>
</content>
</ScrollPane>
</right>
</BorderPane>
package application;
import javafx.application.Platform;
import javafx.fxml.FXML;
//import javafx.scene.control.TextField;
import fi.jyu.mit.fxgui.Dialogs;
//import fi.jyu.mit.fxgui.ModalController;
//import javafx.event.ActionEvent;
/**
* @author idamk
* @version 12.2.2025
*
*/
public class UudenlisaysController {
@FXML private void handleTallennaRalli() {
Dialogs.showMessageDialog("Tallentaa rallin, muttei vielä osata :((");
}
/**
*
*/
@FXML private void handlePoistu() {
Platform.exit();
}
@FXML private void handleTallennaHenkilo() {
Dialogs.showMessageDialog("Tallentaa henkilön, muttei vielä osata :((");
}
}
/* JavaFX CSS - Leave this comment until you have at least create one rule which uses -fx-Property */
\ 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.CheckBox?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="402.0" prefWidth="483.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fi.jyu.mit.fxgui.ModalController">
<center>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Uusi henkilö">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<GridPane layoutX="206.0" layoutY="29.0">
<columnConstraints>
<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 minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="Nimi" />
<Label text="Syntmäpäivä" GridPane.rowIndex="1" />
<Label text="Seura" GridPane.rowIndex="3" />
<TextField fx:id="henkilonNimi" GridPane.columnIndex="1" />
<DatePicker fx:id="henkilonSyntymaAika" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<ChoiceBox fx:id="henkilonSeura" prefWidth="150.0" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<CheckBox fx:id="onKartturi" mnemonicParsing="false" text="Kartturi" GridPane.columnIndex="1" GridPane.rowIndex="2" />
<CheckBox fx:id="onKuljettaja" mnemonicParsing="false" text="Kuljettaja" GridPane.rowIndex="2" />
</children>
</GridPane>
<GridPane layoutX="135.0" layoutY="164.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="124.79998779296875" minWidth="10.0" prefWidth="124.79998779296875" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="124.00000000000001" minWidth="10.0" prefWidth="103.19995117187501" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="95.20001220703125" minWidth="10.0" prefWidth="72.800048828125" />
</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>
<children>
<Label contentDisplay="BOTTOM" text="Ralli">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</Label>
<Label text="Auto" GridPane.columnIndex="1">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</Label>
<Label text="Sijoitus" GridPane.columnIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</Label>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<TextField GridPane.columnIndex="2" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<TextField GridPane.columnIndex="1" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<TextField GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</TextField>
<ChoiceBox prefWidth="150.0" GridPane.rowIndex="1">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</ChoiceBox>
<ChoiceBox prefWidth="150.0" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</ChoiceBox>
</children>
</GridPane>
<Label layoutX="150.0" layoutY="276.0" text="Ideointi rallien lisäämiseen vielä kesken..." />
</children>
</AnchorPane>
</content>
</Tab>
</tabs>
</TabPane>
</center>
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="Tiedosto">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Muokkaa">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Apua">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<HBox spacing="10.0" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</BorderPane.margin>
<children>
<Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" />
<Button mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
</children>
</HBox>
</bottom>
</BorderPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="367.0" prefWidth="472.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fi.jyu.mit.fxgui.ModalController">
<center>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Muokkaa rallia">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0">
<children>
<GridPane layoutX="72.0" layoutY="36.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="123.199951171875" minWidth="10.0" prefWidth="84.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="151.20001220703125" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="134.79998779296875" minWidth="10.0" prefWidth="134.79998779296875" />
</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 minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="28.79999389648438" minHeight="0.0" prefHeight="28.00000610351563" vgrow="SOMETIMES" />
<RowConstraints maxHeight="60.80000000000001" minHeight="10.0" prefHeight="30.399993896484375" vgrow="SOMETIMES" />
<RowConstraints maxHeight="34.400006103515636" minHeight="10.0" prefHeight="34.400006103515636" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="Rallin nimi" GridPane.columnIndex="1" />
<Label text="Paikkakunta" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Ajankohta" GridPane.rowIndex="2" />
<TextField GridPane.columnIndex="2" />
<ChoiceBox prefWidth="150.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
<DatePicker GridPane.columnIndex="1" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</DatePicker>
<DatePicker prefHeight="26.0" prefWidth="128.0" GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</DatePicker>
<TextField GridPane.columnIndex="2" GridPane.rowIndex="3" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="4" />
<Label prefHeight="18.0" prefWidth="157.0" text="Linkki tapahtuman sivuille" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label text="Järjestäjä" GridPane.columnIndex="1" GridPane.rowIndex="3" />
<Button mnemonicParsing="false" onAction="#handleDefaultOK" prefHeight="25.0" prefWidth="131.0" text="Osallistujalista" GridPane.columnIndex="2" GridPane.rowIndex="5" />
<Button mnemonicParsing="false" onAction="#handleDefaultOK" prefHeight="25.0" prefWidth="132.0" text="Tuloslista" GridPane.columnIndex="2" GridPane.rowIndex="6" />
</children>
</GridPane>
</children></AnchorPane>
</content>
</Tab>
</tabs>
</TabPane>
</center>
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="Tiedosto">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Muokkaa">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Apua">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<HBox spacing="10.0" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</BorderPane.margin>
<children>
<Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" />
<Button mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
</children>
</HBox>
</bottom>
</BorderPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.ScrollPane?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.ToolBar?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="400.0" prefWidth="600.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1">
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="File">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Edit">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Help">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<ToolBar prefHeight="40.0" prefWidth="200.0" BorderPane.alignment="CENTER">
<items>
<Button mnemonicParsing="false" onAction="#handlePoistu" text="Poistu" />
</items>
</ToolBar>
</bottom>
<center>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Osallistujalista">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="300.0" prefWidth="590.0">
<children>
<ScrollPane layoutX="12.0" prefHeight="299.0" prefWidth="578.0">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="297.0" prefWidth="577.0" />
</content>
</ScrollPane>
</children>
</AnchorPane>
</content>
</Tab>
<Tab text="Tulokset">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<ScrollPane layoutX="11.0" layoutY="9.0" prefHeight="290.0" prefWidth="582.0">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="291.0" prefWidth="582.0" />
</content>
</ScrollPane>
</children>
</AnchorPane>
</content>
</Tab>
</tabs>
</TabPane>
</center>
</BorderPane>
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ChoiceBox?>
<?import javafx.scene.control.DatePicker?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Menu?>
<?import javafx.scene.control.MenuBar?>
<?import javafx.scene.control.MenuItem?>
<?import javafx.scene.control.Tab?>
<?import javafx.scene.control.TabPane?>
<?import javafx.scene.control.TextField?>
<?import javafx.scene.layout.AnchorPane?>
<?import javafx.scene.layout.BorderPane?>
<?import javafx.scene.layout.ColumnConstraints?>
<?import javafx.scene.layout.GridPane?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.RowConstraints?>
<BorderPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="402.0" prefWidth="483.0" xmlns="http://javafx.com/javafx/19" xmlns:fx="http://javafx.com/fxml/1" fx:controller="fi.jyu.mit.fxgui.ModalController">
<center>
<TabPane prefHeight="200.0" prefWidth="200.0" tabClosingPolicy="UNAVAILABLE" BorderPane.alignment="CENTER">
<tabs>
<Tab text="Uusi ralli">
<content>
<AnchorPane minHeight="0.0" minWidth="0.0" prefHeight="180.0" prefWidth="200.0">
<children>
<GridPane layoutX="46.0" layoutY="33.0">
<columnConstraints>
<ColumnConstraints hgrow="SOMETIMES" maxWidth="123.199951171875" minWidth="10.0" prefWidth="84.0" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="172.0" minWidth="10.0" prefWidth="151.20001220703125" />
<ColumnConstraints hgrow="SOMETIMES" maxWidth="134.79998779296875" minWidth="10.0" prefWidth="134.79998779296875" />
</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 minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
<RowConstraints maxHeight="28.79999389648438" minHeight="0.0" prefHeight="28.00000610351563" vgrow="SOMETIMES" />
<RowConstraints maxHeight="60.80000000000001" minHeight="10.0" prefHeight="32.79999389648438" vgrow="SOMETIMES" />
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
</rowConstraints>
<children>
<Label text="Rallin nimi" GridPane.columnIndex="1" />
<Label text="Paikkakunta" GridPane.columnIndex="1" GridPane.rowIndex="1" />
<Label text="Ajankohta" GridPane.rowIndex="2" />
<TextField GridPane.columnIndex="2" />
<ChoiceBox prefWidth="150.0" GridPane.columnIndex="2" GridPane.rowIndex="1" />
<DatePicker GridPane.columnIndex="1" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</DatePicker>
<DatePicker prefHeight="26.0" prefWidth="128.0" GridPane.columnIndex="2" GridPane.rowIndex="2">
<GridPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</GridPane.margin>
</DatePicker>
<TextField GridPane.columnIndex="2" GridPane.rowIndex="3" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="4" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="5" />
<TextField GridPane.columnIndex="2" GridPane.rowIndex="6" />
<Label text="Tuloslista" GridPane.columnIndex="1" GridPane.rowIndex="6" />
<Label text="Osallistujalista" GridPane.columnIndex="1" GridPane.rowIndex="5" />
<Label text="Linkki tapahtuman sivuille" GridPane.columnIndex="1" GridPane.rowIndex="4" />
<Label text="Järjestäjä" GridPane.columnIndex="1" GridPane.rowIndex="3" />
</children>
<padding>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</padding>
</GridPane>
</children></AnchorPane>
</content>
</Tab>
</tabs>
</TabPane>
</center>
<top>
<MenuBar BorderPane.alignment="CENTER">
<menus>
<Menu mnemonicParsing="false" text="Tiedosto">
<items>
<MenuItem mnemonicParsing="false" text="Close" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Muokkaa">
<items>
<MenuItem mnemonicParsing="false" text="Delete" />
</items>
</Menu>
<Menu mnemonicParsing="false" text="Apua">
<items>
<MenuItem mnemonicParsing="false" text="About" />
</items>
</Menu>
</menus>
</MenuBar>
</top>
<bottom>
<HBox spacing="10.0" BorderPane.alignment="CENTER">
<BorderPane.margin>
<Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
</BorderPane.margin>
<children>
<Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" />
<Button mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
</children>
</HBox>
</bottom>
</BorderPane>