From 3ec7067ee7584d53c7cef6f75a7b7ccc0d4c135c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Koivisto=20Ida=20Maria=20Hannuntyt=C3=A4r?=
 <ida.m.koivisto@student.jyu.fi>
Date: Tue, 25 Mar 2025 16:34:52 +0200
Subject: [PATCH] henkilotiedot saadaan tallennettua

---
 bin/RalliJava/Henkilo.class                   | Bin 4153 -> 0 bytes
 bin/RalliJava/Henkilot.class                  | Bin 2128 -> 0 bytes
 bin/RalliJava/Ralli.class                     | Bin 378 -> 0 bytes
 bin/RalliJava/Rallit.class                    | Bin 381 -> 0 bytes
 bin/RalliJava/Rekisteri.class                 | Bin 2154 -> 0 bytes
 bin/application/RalliController.class         | Bin 5303 -> 0 bytes
 .classpath => kerho/.classpath                |   0
 .project => kerho/.project                    |   0
 .../org.eclipse.core.resources.prefs          |   0
 kerho/bin/RalliJava/Henkilo.class             | Bin 0 -> 4468 bytes
 kerho/bin/RalliJava/Henkilot.class            | Bin 0 -> 3503 bytes
 kerho/bin/RalliJava/Ralli.class               | Bin 0 -> 3578 bytes
 kerho/bin/RalliJava/Rallit.class              | Bin 0 -> 2645 bytes
 kerho/bin/RalliJava/Rekisteri.class           | Bin 0 -> 3796 bytes
 .../bin}/RalliJava/SailoException.class       | Bin
 {bin => kerho/bin}/application/Main.class     | Bin
 kerho/bin/application/RalliController.class   | Bin 0 -> 6216 bytes
 {src => kerho/bin}/application/Sample.fxml    |   0
 .../application/UudenlisaysController.class   | Bin
 .../bin}/application/application.css          |   0
 .../bin}/application/henkilonLisays.fxml      |   0
 .../bin}/application/muokkausRalli.fxml       |   0
 .../application/osallistujaTuloslista.fxml    |   0
 .../bin}/application/rallinLisays.fxml        |   0
 build.fxbuild => kerho/build.fxbuild          |   0
 kerho/kerho/nimet.dat                         |   3 +
 {kuvat => kerho/kuvat}/README.md              |   0
 {kuvat => kerho/kuvat}/aloitusikkuna.png      | Bin
 {kuvat => kerho/kuvat}/eihakutuloksia.png     | Bin
 {kuvat => kerho/kuvat}/henkhakutulos.png      | Bin
 {kuvat => kerho/kuvat}/paaikkuna.png          | Bin
 {kuvat => kerho/kuvat}/rallihakutulos.png     | Bin
 {kuvat => kerho/kuvat}/tarkastele.png         | Bin
 {kuvat => kerho/kuvat}/uusihenk.png           | Bin
 {kuvat => kerho/kuvat}/uusiralli.png          | Bin
 {src => kerho/src}/RalliJava/Henkilo.java     |  35 ++-
 kerho/src/RalliJava/Henkilot.java             | 151 +++++++++++++
 {src => kerho/src}/RalliJava/Ralli.java       |  24 ++-
 {src => kerho/src}/RalliJava/Rallit.java      |   0
 {src => kerho/src}/RalliJava/Rekisteri.java   |  19 ++
 .../src}/RalliJava/SailoException.java        |   0
 {src => kerho/src}/application/Main.java      |   4 +-
 .../src}/application/RalliController.java     |   0
 {bin => kerho/src}/application/Sample.fxml    |   5 +-
 .../application/UudenlisaysController.java    |   0
 .../src}/application/application.css          |   0
 .../src/application/henkilonLisays.fxml       |  54 +----
 .../src}/application/muokkausRalli.fxml       |   0
 .../application/osallistujaTuloslista.fxml    |   0
 kerho/src/application/rallinLisays.fxml       | 111 ++++++++++
 src/RalliJava/Henkilot.java                   |  82 -------
 src/application/uudenlisays.fxml              | 203 ------------------
 52 files changed, 327 insertions(+), 364 deletions(-)
 delete mode 100644 bin/RalliJava/Henkilo.class
 delete mode 100644 bin/RalliJava/Henkilot.class
 delete mode 100644 bin/RalliJava/Ralli.class
 delete mode 100644 bin/RalliJava/Rallit.class
 delete mode 100644 bin/RalliJava/Rekisteri.class
 delete mode 100644 bin/application/RalliController.class
 rename .classpath => kerho/.classpath (100%)
 rename .project => kerho/.project (100%)
 rename {.settings => kerho/.settings}/org.eclipse.core.resources.prefs (100%)
 create mode 100644 kerho/bin/RalliJava/Henkilo.class
 create mode 100644 kerho/bin/RalliJava/Henkilot.class
 create mode 100644 kerho/bin/RalliJava/Ralli.class
 create mode 100644 kerho/bin/RalliJava/Rallit.class
 create mode 100644 kerho/bin/RalliJava/Rekisteri.class
 rename {bin => kerho/bin}/RalliJava/SailoException.class (100%)
 rename {bin => kerho/bin}/application/Main.class (100%)
 create mode 100644 kerho/bin/application/RalliController.class
 rename {src => kerho/bin}/application/Sample.fxml (100%)
 rename {bin => kerho/bin}/application/UudenlisaysController.class (100%)
 rename {bin => kerho/bin}/application/application.css (100%)
 rename {src => kerho/bin}/application/henkilonLisays.fxml (100%)
 rename {bin => kerho/bin}/application/muokkausRalli.fxml (100%)
 rename {bin => kerho/bin}/application/osallistujaTuloslista.fxml (100%)
 rename {src => kerho/bin}/application/rallinLisays.fxml (100%)
 rename build.fxbuild => kerho/build.fxbuild (100%)
 create mode 100644 kerho/kerho/nimet.dat
 rename {kuvat => kerho/kuvat}/README.md (100%)
 rename {kuvat => kerho/kuvat}/aloitusikkuna.png (100%)
 rename {kuvat => kerho/kuvat}/eihakutuloksia.png (100%)
 rename {kuvat => kerho/kuvat}/henkhakutulos.png (100%)
 rename {kuvat => kerho/kuvat}/paaikkuna.png (100%)
 rename {kuvat => kerho/kuvat}/rallihakutulos.png (100%)
 rename {kuvat => kerho/kuvat}/tarkastele.png (100%)
 rename {kuvat => kerho/kuvat}/uusihenk.png (100%)
 rename {kuvat => kerho/kuvat}/uusiralli.png (100%)
 rename {src => kerho/src}/RalliJava/Henkilo.java (77%)
 create mode 100644 kerho/src/RalliJava/Henkilot.java
 rename {src => kerho/src}/RalliJava/Ralli.java (89%)
 rename {src => kerho/src}/RalliJava/Rallit.java (100%)
 rename {src => kerho/src}/RalliJava/Rekisteri.java (85%)
 rename {src => kerho/src}/RalliJava/SailoException.java (100%)
 rename {src => kerho/src}/application/Main.java (94%)
 rename {src => kerho/src}/application/RalliController.java (100%)
 rename {bin => kerho/src}/application/Sample.fxml (97%)
 rename {src => kerho/src}/application/UudenlisaysController.java (100%)
 rename {src => kerho/src}/application/application.css (100%)
 rename bin/application/uudenlisays.fxml => kerho/src/application/henkilonLisays.fxml (66%)
 rename {src => kerho/src}/application/muokkausRalli.fxml (100%)
 rename {src => kerho/src}/application/osallistujaTuloslista.fxml (100%)
 create mode 100644 kerho/src/application/rallinLisays.fxml
 delete mode 100644 src/RalliJava/Henkilot.java
 delete mode 100644 src/application/uudenlisays.fxml

diff --git a/bin/RalliJava/Henkilo.class b/bin/RalliJava/Henkilo.class
deleted file mode 100644
index 72c68bbe03f3ae320e230b7d09b6c99b6fda555f..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 4153
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
Qd_rFN?z)XX<1g6!UqA<;uK)l5

diff --git a/bin/RalliJava/Henkilot.class b/bin/RalliJava/Henkilot.class
deleted file mode 100644
index 830dc8df1ba75530813d9acbbe9bb5f0db1bc1b7..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2128
zcmaJ?+fo}x5Iv&{E9Aun1o%P>BH#oB7+(@6K@PT2APB@I7Qqmb*n?QZSgT!XcSV^$
zNmZUwdB{s1VwY{IOvQQ6M<qG4k`a`sJZLW6)2F*n_qP82=j}THIqVpS2y{M_wyoyn
zzMPn|oU*drz(7o({h1co(%G3<-g;)00s(XJ!TRI5nWcq%VR=<R<OSMtuHy&N3D%@t
zwW7q03q<X5MW996W#!VWYqQYgBTM~V<)~na&xc3W1Y$XN+e#veb`vJrTEWmvw4%j8
zmq14of_~6rB8hVX7YfR;ma3I4%UhLOwnfu|Taxyg^pw8Wg|T2)`HZJIoPhDfZRJZz
z(BWo%R!5ked0w*i0>z9C^b1^S#8i~z?O2__Kp2xMOPLN?P=QRM4}&_jA%X7ULWA96
z;3;P(^kD4PDj<+LBL=cv3}mUiDEI0Kwd`0yL32$CS&W!;oG^j>$QkAa#svl&e)G<@
z^?bP+EI*xgtIoE69DXOOIAP)jZVFti$g;&6mt^or1-tL7O%}U{>7{{I&mxI246-#8
zqp3*cXgW8WpN*^~S-$opQnlp^6O(8o#hz7Geqed7(z?4QzSQE@eaR-1ySA&%?wRPt
z2d#L3oPp_6omxDgamB<}m?0^a=P}NjcjZp3kmrDLTC$Q&;A`C^>Qsr+lQ)vcW5K{Y
zD-h;(+RQ{jm(SSKNH&v;NpFW-q|QiDAW^R-KY_UC?(5bwq+fL^y3690{q%qcg3Ws6
zM72(LQr5r{St+_zuVl?C-PvvLztZbEKxRMfx`7{fa&OTJcHM11iSO{eflYy-MtPL8
z@0P8JT9s<`oRy`(^$v8Qe-QZTWJ}gx*8u0Fvu#`cP{DP})xB(UF;7TN8Ll4eS!X;y
z$yIH#WKT9y9U{l6R8)bLz0iV<1fB@=7o-YYC#~4GWnZOz{jE6ZvaH(5nM@1Lr@Z4>
zUe1=jZ}Af?30!Mp;H;bskk`Kdf694PBLD+zK|ScAxPmxZcr$p5Ai<U6Dm-&4agS5S
zQO5N=Z*zPjxOZj_aUm0ZjgCy>Po!R>`$cGTQR@)nn&PTQUl%&ijZ2i6HA`HkPw>qC
zC)!n>W4!f+_yHq|P%@f%Md(-Pe)kL7j?lN!nLfmae`$%<j21H+++t4{fOZ^3!|_%0
z5G;*;WVmX_JvGR>V}j!vKBCKyLrc-a<1j|J>I^5i>kQ-C&+j}$LTpVDXwgU{ew;{#
zh>b+XLYSR;A_KiY<D7=-{S_TY7~AN5i|fE4ZiUJ8-ui>EweZh#2X2z5TV&|=iO>g*
zLm!}AhoVD|A!4?X;ZN`>C5&BkFpM}g>qih9hqzNXLW=umi}ih}zE8%+-r#fovg6$O
z%U+K0pqK0@#Z#k{O^xdN)NlO9e2M#=vu`l>f_@TMz!C|r#XOC6`pZ%}#nU~;e4oAb
zfCNvI(HzD(#cpB-cQDIWbJXT}n<vHsmN|$XVI|CSD(ty+ED{?;TcP#}y|vS7g~f{S
z)opykQ<V4_Jme|HHwhH6O0DK2g~-1&j~MvYps6s>m*Dd?sv>l>9s&#eNZn&d-t-*a
J!Zx1b@_*&=)AIlT

diff --git a/bin/RalliJava/Ralli.class b/bin/RalliJava/Ralli.class
deleted file mode 100644
index aaae8e1c079552831f35c393cbaced43015a30b6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 378
zcmZut!Ab)$5Ph@VcH6aD+lnVI-l~H80WDq%9%NCl(u=3rHLNLV7UI_b@+5fh1N<m)
z5(TAr$eVeYnfE67_<VZ@FvmfHh%mTiWAqh2a~84$F=2n@xnWynH^oYo4WTpBRyP-f
z*5qVKi0Ac#O3^~Ek2X4@lWVK4H|s*VJ1&eOjPkl<vt*|||GA8tNBu+?=3BN?kzBL3
zgu}^w{%gNzoVL|8ShA~Rbo@`5kS^+tE7hg;&S?-o_bNDstSs*ZBFSV`!9-XlktDWH
vU(tOD<y6p@fi89g``--`cZKz^hk@Mq;WIhDkG2Po{tU`DVi+1nf)U1FgltB*

diff --git a/bin/RalliJava/Rallit.class b/bin/RalliJava/Rallit.class
deleted file mode 100644
index 5d9d459c3c07e35f3a1b1deebc9c9bf122583006..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 381
zcmZut%TB^T6g{^T3I#2KaqkW_u^)h8L*l|Tl89l$YFa0C$S_UD!T)k);=&K`qYQTn
ziH5M4b06oP`<S2KuWtZToJR-<{U@QddJyj-tvweZ<m}2Pv@m5l%U7~+gw~xh%1sE3
z(ba+wPOBFgqk&EjO|%F}ri^^ttaE9fMXn`bkX41y3t^Ry_sP(`syELa&K+~lwNQp|
zF<NGS^XJYgQ;zGI!j`NZ9-#^GyxQ18-YY-4ySwGqx4|WNX+9YU*yCjxBaTwG#I||;
uiS|cL$Bdo^+UPR&b_HxtIO^aO31__chM%vaLt*ky$RCNbx^Tc4V7LWA)JO^d

diff --git a/bin/RalliJava/Rekisteri.class b/bin/RalliJava/Rekisteri.class
deleted file mode 100644
index b6c5266ea5fb238d7ee7346ea2a6033c031eac0c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 2154
zcmaJ@TUQfT6#h;w%n$}q(1?mQw9q0EQBkx+Y=MHJ0j=>;FTEVXNDi6IWKAZl(uY2^
z{)WDGE!Xm;57pJiwREk%_}0JDztC0toyin}#6HZq?6dcG_Wt%hJNfgUmwy15L)Ab`
zpzo%19CcN0$nl$YS=9pDR|XOSd)Kwhk?z{~^_6wI7zmgp+bt`{<8ps~+wMvv%?Wf|
zRIUmx3B*T^-w{a6d8>8`adcTQU>fKa=-q9Yf`zV5@J<U!bO`k1m1{58D=W5tORhLJ
zt@2(`I(MY6^ga?Mf|9BU9BA=nD+W5#y=DiIZz_<XPmB7hehY_?rn5ZHmn#BEN7W=1
z(jzTMk!4QDk(&RuXjcQ}xitgF1p2pQC`b~rb*$kt77pWxfDy4pj@!TrbV=8h(JlJ!
z#p7+%G~kC8KEe>$)CK}V@mu7!B9*HRALO@FRS10LuF>ff>FhFaQefY<v(arSjG;>p
zr!Aa;$@u&z^`6q=vlh;2ap#7t1yYtAPorfzaRE~XKHgCqg-w=B#X=4j$*}GFIv=4w
z${W8yX9Bup%Sz4!%c3{0R9VW5bjr$OQZiE`DSV1q12d$ljhV$l{ft~zHIl<{4~)Dk
z+64<AU`RW8#lm9fj#m$KJl8Dbu|$-h?s$xd35-zQ^07(VbqfcO?&Tx-+`>&11P)eY
z*`D*<q73e;pu`nX+(6f!PTMZ}b*}t19{07$4SD^KZe}v+dmFll4Oy$Z6<vi%+j+Ff
zNCnIOa7#(-tTfhl+|k9`T?k~cyd<mPqcCur=`474zi2Ng{c`qfJ&BXrPbP2H^MYF7
z%j%LHl)Tki3PsokRt1K(BT?>#SGLES_0$Y~K^6ng-_)Eu68Nb#5s`Ki@QQR-9lJJ^
z_q=kwn%hlJi)4r4t<9?4M!l88W-H3Iavnj<v5ys0VCQ-|uwsJLrkmydx}k#CPcojH
zaW{jE7!<G;UDx*K99gT`e9(@-@UFnyg<^ndIrjgmY%9&UF~~O)XA!aLbywpm$u-*`
z$4>5Mc`7*X9esh+=qp(FUSQAf=y^t24Es3l3GGcJkU|gbbV*uG8}wm6cPv1pBfK-5
zHJ&;88+sZz_zTxfoQ_bwuf^WnvS+KJ)&O-A)H)h^HbY5_l1`13ZQ#9amr~)u5jryv
z!lj#v5gbhz_WPkDe2biQpwq2zM;aLZ^)1ha-T^g&;~~T-vV_>-qxg=JByk?Uf*^4x
z@~<$)d3-6Fm!o+qaiW1!{3gaY^P4!7;6e`*S&ApKluc&!e)1`-rRO-`JKex1@#&}N
z%MLU!zdZIFmm9eHLre^ijOCx-{H3R9N(Wxz20-m+^wY#OER(@_n7jMT3)p*1oWfq5
zMn604ASN)3vyAE-PbMin&+!6#=M<Y@4)eH3jA>lQCEUdf9<oMO*Z>vR0T!@{%lMJ4
zP1nK0klM$%h1=Yj_#Ssy5q#amxyuy9c;f`V;4030M{$p<1d&bL#{-_;W8O8tG2UQ=
zNsAM|o48u`B{BPvc*B5V2EH-~EDRhq|K>k~9wL6t^BBH?4DS|Lqe2Pm-05G6GAi(J
F=wIYU-B$nr

diff --git a/bin/application/RalliController.class b/bin/application/RalliController.class
deleted file mode 100644
index 335fa4e066bed39ed6fe8241a8723d8cde1c5abb..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 5303
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
S;@|iW-^;f46#k26(eyu=n>ZQ(

diff --git a/.classpath b/kerho/.classpath
similarity index 100%
rename from .classpath
rename to kerho/.classpath
diff --git a/.project b/kerho/.project
similarity index 100%
rename from .project
rename to kerho/.project
diff --git a/.settings/org.eclipse.core.resources.prefs b/kerho/.settings/org.eclipse.core.resources.prefs
similarity index 100%
rename from .settings/org.eclipse.core.resources.prefs
rename to kerho/.settings/org.eclipse.core.resources.prefs
diff --git a/kerho/bin/RalliJava/Henkilo.class b/kerho/bin/RalliJava/Henkilo.class
new file mode 100644
index 0000000000000000000000000000000000000000..dceb3beb503b8531c32b6e785c535ded2a34928b
GIT binary patch
literal 4468
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
bcvFqPQsb}H_#6C=67od&d;Af9!iIkXOe*tt

literal 0
HcmV?d00001

diff --git a/kerho/bin/RalliJava/Henkilot.class b/kerho/bin/RalliJava/Henkilot.class
new file mode 100644
index 0000000000000000000000000000000000000000..4aa4aef19a48b842e56e094154c23f78445581a2
GIT binary patch
literal 3503
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

literal 0
HcmV?d00001

diff --git a/kerho/bin/RalliJava/Ralli.class b/kerho/bin/RalliJava/Ralli.class
new file mode 100644
index 0000000000000000000000000000000000000000..d00ee8801a7c6a95ab2a078af392af1c2060eb2b
GIT binary patch
literal 3578
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
OlA~Er-<$Y7_Wd8=dL+;Q

literal 0
HcmV?d00001

diff --git a/kerho/bin/RalliJava/Rallit.class b/kerho/bin/RalliJava/Rallit.class
new file mode 100644
index 0000000000000000000000000000000000000000..ada51a5827284973604ea60f607fb2ef501aed01
GIT binary patch
literal 2645
zcmaJ?TT>iG6#jbIWnh^E0)b?WMvz=!fsl*Q$OdvD5;j=~2?)7pw1E+Zot;@{W-)lb
z>yzc9`e5mcDc=&ykRqwFEFXRM)t_Sgx@QT?C9+gcPxt9_zVm(O^!)YjgWmxR;wu9&
zfrcy6aqJ6nQTFOtXduqj1-0Nvcdqx+^nx`L3RFucZ+o1y<n(4Kw4L5T&vCeGdu~Rc
zcHEwGWmxhpfzB<BPUbd5%M9>bm6I<Bh%95Av|T$K;8I8Dq(FSoo3)atLcNJPm<DzT
zG_3_c<NI<cX9r;t4XCe$z)lkhRI6EwiCQED>T|Yhjg|`2mOmk<9U^PYc{9?Pl)kOr
z%Zu@F-VW5>27DpmC8g`ih#Q9Q$X2GNqSNHS=GCoIt;4fuGtf$)Ygw#OXyQ4v3)I-5
z<;&3XnMFrsuxxofQ-}RHXy5<=ulZTsHPL}ia_3sNDAvwZ4;5Nw40Ms14XGxPMvsX@
z=;f(7D;&1myzO}IM9Fna!Km+PRkC$Bf@21b3T$7Ct!OauJdV>w&dv%ncSQPEM(w<=
zaKC8c1YQy_=4CLdAyVt>ES_*JPL1O&&066S@i$b|QJL(7uPRnx$40RzM9X?{mx`+b
zw{P&Xl{^C5#zQ%iACbj!StJ}gkW#U@DOTsCQu7#zE=b!|Qr)OXc|7!OcP`U8nPe^2
zD{A#{!Nf(yZ_>B&q|EX?TkVaQ7{w)lx<wg;GO9H?W>M+$mrb0-U@gY+ih+rB%{jhA
zF9j2mm?HIFiHtQzFl?`Pj2J>9v1B2m!dx?P9XCjQSaLiD64+gqX@ha+WDQ;u80de(
zUu)D2t)Uf!cIy+2`jdDa(!d+5J-a@LiD}FbOHqMzNZ`7XS;wDcVh^5Hh1b@|n`_>L
zjRk>S1(~-7J$FWiQ+7Dd8FO+&wsG_0cGUG(cBb$+CJHKSLWd>C(x2mjrY*GNZKMm0
zl-3r#`330~R4G*FOJ31tGb93De0&;_6&s?8GXq>oj(a74#u~EKeNz{abx3s!wL9y1
zVG#PVIAVqK-fWP>yLjKgdjk7(KWW6ayXfVu-UxV<;*exCe@W&3fxx$w{Z+P(91cr&
z*0F+pInT?NikZzdS+TP2-~^jx3-d~5qEA7ld?!^R9b`+6^WMtTSL2-;d@T5B;WcMw
zUDxsl9T@~xVBj->{hN~93buhS1or;FDW!;VL>qgoiiHtFqq_e2X6UyXj{FF4jB|}2
z5RTjUc9GVC&*t=fY)?N#!?pWpyoaWA)jc%d<wgv<I5zSa(895vza7|#-TXnj;bElk
z6yJoZO`eECKBEKt$@c{J`pdpY(!Zf;1$zbh;<vFk6<@(Vfj^KQ?O8_mo*z-y-Lrzj
zF-)ng7X-e4^iTI4I*4l^E!tT-YIuFN;Q;$!KQcI|!K5|F{xTSbL?1KeM+C=dbCN*X
z_;KvV0CPT71|RL6=H3~uG$ZziStbk!VbHfh@61f7JBOnp>>N#F>afbAYX#?sbd9H^
z-aA5qk7`IQk?mthrVh_8!pj(nJc`@2QS#h<2toGG=N=->=kQ4RIa+@9#k-f0o$9Vy
zMvh!%r+VU?r8s2Cm6~_aV62OKV_j-_tov77S;p0#=#h#?PmYbRF5_lbVi~i2iBw_*
zZ&D58HV&qYRW<smX_l&{Bo8nLEF+&%EA*ypv@CzCv?En+YHdz1jSLw+$<+JF^#Jub
zg)W@NVX}LiBxXqC8J+qNEAKomV;EPF<z;k%QF8Ej_b=iKzUKY@119h@=XY>JQ#q{5
z>MmSbfsuYeQA^W+pYRrA#c1^%e64O9zCplQoZd1Bi6}vzyHVm=^<(X$z0=%N+P5n0
rKS7OwMapj=z4~7+gLYQU+q8?}7M3&ufe$I+M?3^wXP@G8e2LV5Sr2ER

literal 0
HcmV?d00001

diff --git a/kerho/bin/RalliJava/Rekisteri.class b/kerho/bin/RalliJava/Rekisteri.class
new file mode 100644
index 0000000000000000000000000000000000000000..f50f040b8d1c22eee72461074bed396d551ddc7b
GIT binary patch
literal 3796
zcma)9ZFCe@8GdfEyED6)1PDpW7NJ3cBv~K@HI@w^X#`1|1e%QmD6}1tAsKdeW|^Ih
zNv*WnYFn+;kE&QdtF8FaYQeGyIeI*&$8$XT)8l{7@sB_J;UE7RpL=IEnS8)8C%GT*
zeeZLh_v5~I^5_5F`8|LE%xkC<*f?qy3ic!BjM+14<?XU>dA5d_!1{|)Rxq8Zp5x~)
zS`)s2K5aR9yWn!zGPJbsSSaliNO%&B>&=mMrRmGn1GZ!PhXm?7yG{zk2HZ(2g?cm^
zNFt?S9rvw<O`!>mNpQ_T90?6AB)6m%pr^1gP`b~623=s?knLC_mEw8J8#B)rEJ?|o
zFbgM5&zAF081tv?vOsH;Zp{s3+&E?Vp?S7%D&m8Z&jSY9v4s|KeJEcPh!^a#Nrkq~
z2vWGSPa2y#GCN_FeA{)(8g>Y5TCyN#(x;2d5`L$FZTO&o7CM|^S_76*h@PeZd6sm=
zE(y?0TAqxDz=p{7K#$S%xn?;IS+{l$Ek!%$d$u#BfSRz+Ko1@yU9aX9=a`wdicA#O
z8L^ARZeG1tpur??XutHzU{{1e%`ei_hYajTFOxxT5D)|ugLIdiDyB@P9Z@rDo4bNz
zE52Rm86q7<E19#W9Mi9OjP^tS&z=JjQh{3z^`+2{0Syn+X-cH7MtG=!PspgZEM<i=
zR&kt4dBk(2+m9MJfKM`7(q84!D7{$Gv>oY;$5(qyhK=ba4_D2wff1zWhnnAATdtij
z@R$@QXUwv1n$rayE3i|;7&Cr}t{SC~lUO;7OROz&blSifJkIC@+m#w!Pqym#T}eEF
zr!+jd?Dps8SQLr|Oq}Nha4QT*YhZxw_MBj@_{<o~EYfp1Od7Coftl-93N9%!bHdzO
zq1<&+$F#uSgR6hq$E>n%zyD_Y>Lp52xQK#=JiV+uyd2j+QKqX_lDrCz^p0!bqv&mB
z&AVj418@6%MW*n8>r9ybxb07KM5c}}>%d~*RN)J+g7o~Pgqo4@J=lO*Jgs3)plNxG
z4SWXA@M764qNeY9GS<;N7!2io4Y-WwG(5}8vxHDvHSjrno>6hES-QHVh7hU5%F_eQ
zBy>r7<BJAflt#yu(GvS*17E_IW&JSABMOEU_l&gQD+WG*EzPKtTRZSo17E|}nP$xB
zVXIs=r+9Ui9~t^U-cWCfF50+8_A()BdCL16_uLs-R5i0)af-4k#;wAIIi`NH<W65S
z16d+paZ9$##WEik_L`^Oj(tqN)pw_!i_E@)thII4tib(|tGm2_vJkW_FZFY!TDjl8
z0(q?hz-yTE&58W5SyGRLhS%tzoLliGtfRJkNtza4$~`iCB>b@J`eolUOT(5w?M{|c
z_yyk9@JoRX6<`%S+nI6mR!`v2ApMS-G~Jt%dHIgO)o2+GwFAIorZZWv${j<lo3E7m
zR@aY+WZA|s+P;Q*G={<J-WMinl<5Eil4COWtxMqNI^Jb!1cmVZYJ17F^ClA}+b(q6
zU{FN6j`!&LnuhK32D?tXGv~L9Z34!i<5=E6ftxHofwx%JSGi^_V>R3s*m`eOKE#1%
zu#Guh&#PXCX8EzeQM3FWV6St9Um0v0ID3p*g8k<1TQIuk(RBJ2*5AYi4mWbxdJ}Ee
zxm<@$Y?~2dn__EV9U5^z$7xE80D|+)oC$feLil~`CA{AK9yV05^=*y=tb~%cME2{8
z`}yWmYddvg)ap<~`zfiTBq@<HReWfPR!S{wrDYE&xVAtsgyR-;qDv9sw*Y%-cNDIT
zaG8~GI|<i$7r5Qnqu}^Oz@zTXbMH#v2MN6QF2EngM-(vYbjb4{4_GvNa}^(ZcZCP{
z-vug*J_W@(O@Kpc*T<FVheJq%o|L8^uHwi_)cy#nvFJ!6bYv38Fi4bTme-F^(#Y_i
znulQOJTf$oe)f+Jhy6&{XJfmn7~<dY-R${yJRRdeHpep*k7g(v&B*!aJaUBiR5o54
zBx(aK9k1f#csfpHT5u|zP}2kf)KpVbEnLk=?XwxF#FlGk)A1WPSH(m+5%yZpvu&QL
z!mjVtuffW+>Qy+|B&DtT9h3krrRB5=Ka);YQOTy#soVIpK-Rd1ooVAXJ}dAC<gyLa
zN;g#T{2ja?_kAHPCGtq>yd?1Y!rxxdMXSybyz<7vRoV6G;Xzl_LD$eUOaV=LmB(IZ
zJav8(4)I3B)P1~xU5x7(6Y3P!<1}Swc=69-2hK6!pTKTB$y9ra$z(DcCU6*&IKuCe
zNBLNeAy2IWF7QL400$Mge6>rYdWmnQhi|~gcPRZKX7Cmt`gbsgn|K<(!!!6JpVq(N
zS^O2x;qQE<|B2`EZ@kC?_>$O!mqk0r-MB1z`Su>bD`F5=#4uhJ<3yG9;tIcanJ1jR
z#+fco;G3)*d_Kf}e2dIkA;eyMo1=Pc6P>uqQH+fLLq>a8&d%Xqc%7pJ+5ZFI<w(Py
zXoJjoovg-Ho+imDi|^t4{7}^Cn;%fGfqWWi6ZOa_g&*M!p7vw1kTopO{|V)9QgRuI
z1)7=E@RkOlp}+Q<(;$CY*A`d+8t=NU^k>QKGO&GtC)^uqE9wF$d02=1fAFVdQHN{z
d8T%H_e?^YJR_%4w{)Q2e^;j^wev3Ou{|_ojWmW(H

literal 0
HcmV?d00001

diff --git a/bin/RalliJava/SailoException.class b/kerho/bin/RalliJava/SailoException.class
similarity index 100%
rename from bin/RalliJava/SailoException.class
rename to kerho/bin/RalliJava/SailoException.class
diff --git a/bin/application/Main.class b/kerho/bin/application/Main.class
similarity index 100%
rename from bin/application/Main.class
rename to kerho/bin/application/Main.class
diff --git a/kerho/bin/application/RalliController.class b/kerho/bin/application/RalliController.class
new file mode 100644
index 0000000000000000000000000000000000000000..5ae638ca7e31336f6d258077af71425512a5fe76
GIT binary patch
literal 6216
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

literal 0
HcmV?d00001

diff --git a/src/application/Sample.fxml b/kerho/bin/application/Sample.fxml
similarity index 100%
rename from src/application/Sample.fxml
rename to kerho/bin/application/Sample.fxml
diff --git a/bin/application/UudenlisaysController.class b/kerho/bin/application/UudenlisaysController.class
similarity index 100%
rename from bin/application/UudenlisaysController.class
rename to kerho/bin/application/UudenlisaysController.class
diff --git a/bin/application/application.css b/kerho/bin/application/application.css
similarity index 100%
rename from bin/application/application.css
rename to kerho/bin/application/application.css
diff --git a/src/application/henkilonLisays.fxml b/kerho/bin/application/henkilonLisays.fxml
similarity index 100%
rename from src/application/henkilonLisays.fxml
rename to kerho/bin/application/henkilonLisays.fxml
diff --git a/bin/application/muokkausRalli.fxml b/kerho/bin/application/muokkausRalli.fxml
similarity index 100%
rename from bin/application/muokkausRalli.fxml
rename to kerho/bin/application/muokkausRalli.fxml
diff --git a/bin/application/osallistujaTuloslista.fxml b/kerho/bin/application/osallistujaTuloslista.fxml
similarity index 100%
rename from bin/application/osallistujaTuloslista.fxml
rename to kerho/bin/application/osallistujaTuloslista.fxml
diff --git a/src/application/rallinLisays.fxml b/kerho/bin/application/rallinLisays.fxml
similarity index 100%
rename from src/application/rallinLisays.fxml
rename to kerho/bin/application/rallinLisays.fxml
diff --git a/build.fxbuild b/kerho/build.fxbuild
similarity index 100%
rename from build.fxbuild
rename to kerho/build.fxbuild
diff --git a/kerho/kerho/nimet.dat b/kerho/kerho/nimet.dat
new file mode 100644
index 0000000..ce1596a
--- /dev/null
+++ b/kerho/kerho/nimet.dat
@@ -0,0 +1,3 @@
+0|Rovanperä|Oskari|18|Keuruu|Kuopion nopeet|59|41|
+1|Sokka|Oskari|54|Rovaniemi|Rovaniemen nopeet shamaanit|83|17|
+2|Rovanperä|Teemu|59|Seinäjoki|Kuopion nopeet|99|76|
diff --git a/kuvat/README.md b/kerho/kuvat/README.md
similarity index 100%
rename from kuvat/README.md
rename to kerho/kuvat/README.md
diff --git a/kuvat/aloitusikkuna.png b/kerho/kuvat/aloitusikkuna.png
similarity index 100%
rename from kuvat/aloitusikkuna.png
rename to kerho/kuvat/aloitusikkuna.png
diff --git a/kuvat/eihakutuloksia.png b/kerho/kuvat/eihakutuloksia.png
similarity index 100%
rename from kuvat/eihakutuloksia.png
rename to kerho/kuvat/eihakutuloksia.png
diff --git a/kuvat/henkhakutulos.png b/kerho/kuvat/henkhakutulos.png
similarity index 100%
rename from kuvat/henkhakutulos.png
rename to kerho/kuvat/henkhakutulos.png
diff --git a/kuvat/paaikkuna.png b/kerho/kuvat/paaikkuna.png
similarity index 100%
rename from kuvat/paaikkuna.png
rename to kerho/kuvat/paaikkuna.png
diff --git a/kuvat/rallihakutulos.png b/kerho/kuvat/rallihakutulos.png
similarity index 100%
rename from kuvat/rallihakutulos.png
rename to kerho/kuvat/rallihakutulos.png
diff --git a/kuvat/tarkastele.png b/kerho/kuvat/tarkastele.png
similarity index 100%
rename from kuvat/tarkastele.png
rename to kerho/kuvat/tarkastele.png
diff --git a/kuvat/uusihenk.png b/kerho/kuvat/uusihenk.png
similarity index 100%
rename from kuvat/uusihenk.png
rename to kerho/kuvat/uusihenk.png
diff --git a/kuvat/uusiralli.png b/kerho/kuvat/uusiralli.png
similarity index 100%
rename from kuvat/uusiralli.png
rename to kerho/kuvat/uusiralli.png
diff --git a/src/RalliJava/Henkilo.java b/kerho/src/RalliJava/Henkilo.java
similarity index 77%
rename from src/RalliJava/Henkilo.java
rename to kerho/src/RalliJava/Henkilo.java
index a28ad64..ba68560 100644
--- a/src/RalliJava/Henkilo.java
+++ b/kerho/src/RalliJava/Henkilo.java
@@ -12,7 +12,7 @@ import java.util.Random;
 public class Henkilo {
     
     private int     henkilonTunnusNro       = 0;
-    private String  nimi            = "";
+    private String  etunimi            = "";
     private String  sukunimi        = "";
     private int     ika             = 0;
     private int     rallienMaara    = 0;
@@ -46,10 +46,10 @@ public class Henkilo {
         rallienMaara = r.nextInt(100);
         voitetutRallit = (rallienMaara - r.nextInt(rallienMaara));
         
-        if(n==0) nimi = "Kalle";
-        if(n==1) nimi = "Teemu";
-        if(n==2) nimi = "Oskari";
-        if(n==3) nimi = "Mikko";
+        if(n==0) etunimi = "Kalle";
+        if(n==1) etunimi = "Teemu";
+        if(n==2) etunimi = "Oskari";
+        if(n==3) etunimi = "Mikko";
         
         if(s==0) sukunimi = "Rovanperä";
         if(s==1) sukunimi = "Asunmaa";
@@ -70,7 +70,7 @@ public class Henkilo {
         if(kp==5) kotipaikkakunta = "Rovaniemi";
         if(kp==6) kotipaikkakunta = "Keuruu";
         
-        Henkilo henkilo = new Henkilo(henkilonTunnusNro, nimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit);
+        Henkilo henkilo = new Henkilo(henkilonTunnusNro, etunimi, sukunimi, ika, kotipaikkakunta, seura, rallienMaara, voitetutRallit);
         henkilo.tulosta(System.out);
     }
     
@@ -91,7 +91,7 @@ public class Henkilo {
     
     /**
      * @param tunnusNro id
-     * @param nimi nimi
+     * @param etunimi nimi
      * @param sukunimi sukunimi
      * @param ika ikä
      * @param kotipaikkakunta mistä kotoisin
@@ -99,8 +99,8 @@ public class Henkilo {
      * @param rallienMaara rallien määrä
      * @param voitetutRallit voitetut rallit
      */
-    public Henkilo(int tunnusNro, String nimi, String sukunimi, int ika, String kotipaikkakunta, String seura, int rallienMaara, int voitetutRallit) {
-    this.nimi = nimi;
+    public Henkilo(int tunnusNro, String etunimi, String sukunimi, int ika, String kotipaikkakunta, String seura, int rallienMaara, int voitetutRallit) {
+    this.etunimi = etunimi;
     this.henkilonTunnusNro = tunnusNro;
     this.sukunimi = sukunimi;
     this.ika = ika;
@@ -114,7 +114,7 @@ public class Henkilo {
      * @param tulostettava tietovirta mitä tulostetaan
      */
     public void tulosta(PrintStream tulostettava) {
-        tulostettava.println(String.format("%03d", henkilonTunnusNro, 3) + " " + nimi +  " " + sukunimi + ", ikä: " + ika);
+        tulostettava.println(String.format("%03d", henkilonTunnusNro, 3) + " " + etunimi +  " " + sukunimi + ", ikä: " + ika);
         tulostettava.println("Kotipaikkakunta: " + kotipaikkakunta);
         tulostettava.println("Seura: " + seura);
         tulostettava.println("Osallistunut " + rallienMaara + " ralliin");
@@ -127,7 +127,20 @@ public class Henkilo {
      * @return henkilön nimi
      */
     public String getNimi() {
-        return this.nimi + " " + this.sukunimi;
+        return this.etunimi + " " + this.sukunimi;
+    }
+    
+    @Override
+    public String toString() {
+        return "" + 
+                getHenkilonTunnusNro()  + "|" +
+                sukunimi                + "|" +
+                etunimi                 + "|" +
+                ika                     + "|" +
+                kotipaikkakunta         + "|" +
+                seura                   + "|" +
+                rallienMaara            + "|" +
+                voitetutRallit          + "|";
     }
     
     /**
diff --git a/kerho/src/RalliJava/Henkilot.java b/kerho/src/RalliJava/Henkilot.java
new file mode 100644
index 0000000..1471cdc
--- /dev/null
+++ b/kerho/src/RalliJava/Henkilot.java
@@ -0,0 +1,151 @@
+package RalliJava;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.PrintStream;
+
+//import java.util.ArrayList;
+//import java.util.List;
+
+/**
+ * @author idamk
+ * @version 12.2.2025
+ *
+ */
+public class Henkilot {
+    
+    private static final int MAX_HENKILOT = 5;
+
+    int lkm = 0;
+    private Henkilo[] alkiot;
+
+    
+    /**
+     *  luodaan alustava taulukko
+     */
+    public Henkilot() {
+        this.alkiot = new Henkilo[MAX_HENKILOT];
+    }
+    
+    
+    /**
+     * @param henkilo lisättävä henkilö
+     * @throws SailoException säilö
+     */
+    public void lisaa(Henkilo henkilo) throws SailoException {
+        if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita");
+        this.alkiot[this.lkm] = henkilo;
+        this.lkm++;
+    }
+    
+    
+    /**
+     * Tallentaa henkilön tiedot tiedostoon
+     * @param hakemisto mihin hakemistoon tallentaa
+     * @throws SailoException jos tallennus epäonnistuu
+     */
+    public void tallenna(String hakemisto) throws SailoException  {
+        File tiedosto = new File(hakemisto + "/nimet.dat");
+        try (PrintStream out = new PrintStream(new FileOutputStream(tiedosto,true))){
+            // jos asiat menee avauksessa hyvin, lähdetään käymään nimiä läpi    
+            for (int i = 0; i < this.getLkm(); i++) {
+                    Henkilo henkilo = this.anna(i);
+                    out.println(henkilo.toString()); //pyydetään henkilöä muuttumaan merkkijonoksi
+                }
+            } catch (FileNotFoundException e) {
+                throw new SailoException("Tiedosto " + tiedosto.getAbsolutePath());
+            }
+    }
+
+    /**
+     * @param rallinTunnusNro tarkasteltavan rallin tunnusnumero
+     * @return listan ilmottautuneista
+     */
+    //public List<Henkilo> annaOsallistujat(int rallinTunnusNro) {
+    //    List<Henkilo> ilmottautuneet = new ArrayList<Henkilo>();
+    //    return null;
+    //}
+    
+    /**
+     * Haetaan kaikki henkilön osallistumat rallit. 
+     * Käy rallit läpi ja etsii sieltä ne, 
+     * mihin kysytty henkilö on osallistunut
+     * @param tunnusNro rallin tunnusnumero
+     * @return lista ralleista johon haluttu henkilö on osallistunut
+     */
+    /*public List<Ralli> annaRallit(int tunnusNro) {
+        List<Ralli> loydetyt = new ArrayList<Ralli>();
+        // Käy rallit läpi ja etsii sieltä ne, mihin kysytty henkilö on osallistunut
+        for (Ralli ralli:alkiot) //ITERAATTORI
+            if(ralli.getHenkilonTunnusNro() == tunnusNro) loydetyt.add(ralli);
+        return loydetyt;
+    
+*/
+
+    /**
+     * @return lkm
+     */
+    public int getLkm() {
+        return lkm;
+    }
+    
+    
+    /**
+     * @param i indeksi
+     * @return henkilön
+     * @throws IndexOutOfBoundsException laiton indeksi
+     */
+    public Henkilo anna(int i) throws IndexOutOfBoundsException {
+        if (i < 0 || this.lkm <= i)
+                throw new IndexOutOfBoundsException("Laiton indeksi senkin kaulin: " + i);
+        return alkiot[i];
+    }
+    
+    
+    /**
+     * @param args ei käytössä
+     */
+    public static void main(String[] args) {
+        Henkilot henkilot = new Henkilot();
+        
+        Henkilo rovis = new Henkilo();
+        Henkilo asunmaa = new Henkilo();
+        Henkilo elfyn = new Henkilo();
+        
+        rovis.rekisteroi();
+        rovis.vastaahlo();
+        asunmaa.rekisteroi();
+        asunmaa.vastaahlo();
+        elfyn.rekisteroi();
+        elfyn.vastaahlo();
+        
+        try {
+            henkilot.lisaa(rovis);
+            henkilot.lisaa(asunmaa);
+            henkilot.lisaa(elfyn);
+            
+            System.out.println("==================== Testi ======================");
+            
+            for (int i = 0; i < henkilot.getLkm(); i++) {
+                Henkilo henkilo = henkilot.anna(i);
+                System.out.println("Henkilo nro: " + i);
+                henkilo.tulosta(System.out);
+            }
+            
+        } catch (SailoException e) {
+                System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii
+        }
+        
+        try {
+            henkilot.tallenna("kerho");
+        } catch (SailoException e) {
+            System.err.println(e.getMessage());
+        }
+        
+
+    }
+
+
+
+}
diff --git a/src/RalliJava/Ralli.java b/kerho/src/RalliJava/Ralli.java
similarity index 89%
rename from src/RalliJava/Ralli.java
rename to kerho/src/RalliJava/Ralli.java
index 80b1fd6..481f082 100644
--- a/src/RalliJava/Ralli.java
+++ b/kerho/src/RalliJava/Ralli.java
@@ -1,6 +1,7 @@
 package RalliJava;
 
 import java.io.PrintStream;
+//import java.util.List;
 import java.util.Random;
 
 /**
@@ -18,18 +19,19 @@ public class Ralli {
      * Vois kirjottaa luokan CRC-kortin vastuut
      *
      */
-    private int     rallinTunnusNro;
-    private int     henkilonTunnusNro;
-    private String  rallinNimi                = "";
-    private String  sijainti            = "";
-    private int     osallistujienMaara;
-    private String  jarjestaja          = "";
-    //private String  pvm          = "";
-    private int  ilmottautumismaksu  = 0;
-    //private String  ilmottautuneet      = "";
-    //private String  nettisivut          = "";
-    //private String  tulokset            = "";
+    private int         rallinTunnusNro;
+    private int         henkilonTunnusNro;
+    private String      rallinNimi                = "";
+    private String      sijainti            = "";
+    private int         osallistujienMaara;
+    private String      jarjestaja          = "";
+    //private String    pvm          = "";
+    private int         ilmottautumismaksu  = 0;
+    //private String    nettisivut          = "";
+    //private String    tulokset            = "";
     
+    
+    //private List<Henkilo>  ilmottautuneet;
     private static int seuraavaNro = 0;    
         
         /**
diff --git a/src/RalliJava/Rallit.java b/kerho/src/RalliJava/Rallit.java
similarity index 100%
rename from src/RalliJava/Rallit.java
rename to kerho/src/RalliJava/Rallit.java
diff --git a/src/RalliJava/Rekisteri.java b/kerho/src/RalliJava/Rekisteri.java
similarity index 85%
rename from src/RalliJava/Rekisteri.java
rename to kerho/src/RalliJava/Rekisteri.java
index 185a45c..5c4e478 100644
--- a/src/RalliJava/Rekisteri.java
+++ b/kerho/src/RalliJava/Rekisteri.java
@@ -40,6 +40,15 @@ public class Rekisteri {
     }
     
     
+    /**
+     * @param rekisterinHakemistonNimi hakemiston nimi
+     * @throws SailoException jos tallennus ei onnistu
+     */
+    public void tallenna(String rekisterinHakemistonNimi) throws SailoException {
+        henkilot.tallenna(rekisterinHakemistonNimi);
+    }
+    
+    
     /**
      * @param i indeksi
      * @return henkilön tiedot
@@ -57,6 +66,16 @@ public class Rekisteri {
     }
     
     
+    /**
+     * Palauttaa tarkasteltavan rallin osallistujalistan, eli ilmottautuneet
+     * @param ralli ralli jonka osallistujalista halutaan
+     * @return osallistujalistan
+     */
+    //public List<Henkilo> annaOsallistujat(Ralli ralli) {
+    //    return rallit.annaOsallistujat(ralli.getRallinTunnusNro());
+    //}
+    
+    
     /**
      * @param args ei käytössä
      * @throws SailoException liikaa
diff --git a/src/RalliJava/SailoException.java b/kerho/src/RalliJava/SailoException.java
similarity index 100%
rename from src/RalliJava/SailoException.java
rename to kerho/src/RalliJava/SailoException.java
diff --git a/src/application/Main.java b/kerho/src/application/Main.java
similarity index 94%
rename from src/application/Main.java
rename to kerho/src/application/Main.java
index ba7e9a1..a528bdd 100644
--- a/src/application/Main.java
+++ b/kerho/src/application/Main.java
@@ -2,10 +2,10 @@ package application;
 	
 import RalliJava.Rekisteri;
 import javafx.application.Application;
-import javafx.application.Platform;
+//import javafx.application.Platform;
 import javafx.stage.Stage;
 import javafx.scene.Scene;
-import javafx.scene.layout.BorderPane;
+//import javafx.scene.layout.BorderPane;
 import javafx.scene.layout.Pane;
 import javafx.fxml.FXMLLoader;
 
diff --git a/src/application/RalliController.java b/kerho/src/application/RalliController.java
similarity index 100%
rename from src/application/RalliController.java
rename to kerho/src/application/RalliController.java
diff --git a/bin/application/Sample.fxml b/kerho/src/application/Sample.fxml
similarity index 97%
rename from bin/application/Sample.fxml
rename to kerho/src/application/Sample.fxml
index 339c4ff..22d0a5f 100644
--- a/bin/application/Sample.fxml
+++ b/kerho/src/application/Sample.fxml
@@ -44,8 +44,9 @@
             <Insets bottom="10.0" left="10.0" right="10.0" top="10.0" />
          </BorderPane.margin>
          <children>
-            <Button mnemonicParsing="false" onAction="#handleUusi" text="Lisää uusi" />
-            <Button mnemonicParsing="false" onAction="#handleMuokkaa" text="Muokkaa tietoja" />
+            <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>
diff --git a/src/application/UudenlisaysController.java b/kerho/src/application/UudenlisaysController.java
similarity index 100%
rename from src/application/UudenlisaysController.java
rename to kerho/src/application/UudenlisaysController.java
diff --git a/src/application/application.css b/kerho/src/application/application.css
similarity index 100%
rename from src/application/application.css
rename to kerho/src/application/application.css
diff --git a/bin/application/uudenlisays.fxml b/kerho/src/application/henkilonLisays.fxml
similarity index 66%
rename from bin/application/uudenlisays.fxml
rename to kerho/src/application/henkilonLisays.fxml
index 23ac227..7fcfc85 100644
--- a/bin/application/uudenlisays.fxml
+++ b/kerho/src/application/henkilonLisays.fxml
@@ -109,63 +109,10 @@
                            </children>
                         </GridPane>
                         <Label layoutX="150.0" layoutY="276.0" text="Ideointi rallien lisäämiseen vielä kesken..." />
-                        <Button layoutX="407.0" layoutY="272.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
                      </children>
                   </AnchorPane>
             </content>
           </Tab>
-          <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>
-                        <Button layoutX="408.0" layoutY="267.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
-                     </children></AnchorPane>
-            </content>
-          </Tab>
         </tabs>
       </TabPane>
    </center>
@@ -197,6 +144,7 @@
          </BorderPane.margin>
          <children>
             <Button mnemonicParsing="false" onAction="#handleDefaultCancel" text="Peruuta" />
+            <Button mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
          </children>
       </HBox>
    </bottom>
diff --git a/src/application/muokkausRalli.fxml b/kerho/src/application/muokkausRalli.fxml
similarity index 100%
rename from src/application/muokkausRalli.fxml
rename to kerho/src/application/muokkausRalli.fxml
diff --git a/src/application/osallistujaTuloslista.fxml b/kerho/src/application/osallistujaTuloslista.fxml
similarity index 100%
rename from src/application/osallistujaTuloslista.fxml
rename to kerho/src/application/osallistujaTuloslista.fxml
diff --git a/kerho/src/application/rallinLisays.fxml b/kerho/src/application/rallinLisays.fxml
new file mode 100644
index 0000000..c650f23
--- /dev/null
+++ b/kerho/src/application/rallinLisays.fxml
@@ -0,0 +1,111 @@
+<?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>
diff --git a/src/RalliJava/Henkilot.java b/src/RalliJava/Henkilot.java
deleted file mode 100644
index 9a872ba..0000000
--- a/src/RalliJava/Henkilot.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package RalliJava;
-
-/**
- * @author idamk
- * @version 12.2.2025
- *
- */
-public class Henkilot {
-    
-    private static final int MAX_HENKILOT = 5;
-
-    int lkm = 0;
-    private Henkilo[] alkiot;
-
-    
-    /**
-     *  luodaan alustava taulukko
-     */
-    public Henkilot() {
-        this.alkiot = new Henkilo[MAX_HENKILOT];
-    }
-    
-    
-    /**
-     * @param henkilo lisättävä henkilö
-     * @throws SailoException säilö
-     */
-    public void lisaa(Henkilo henkilo) throws SailoException {
-        if (lkm >= alkiot.length) throw new SailoException("Liikaa alkioita");
-        this.alkiot[this.lkm] = henkilo;
-        this.lkm++;
-    }
-
-
-    /**
-     * @return lkm
-     */
-    public int getLkm() {
-        return lkm;
-    }
-    
-    
-    /**
-     * @param i indeksi
-     * @return henkilön
-     * @throws IndexOutOfBoundsException laiton indeksi
-     */
-    public Henkilo anna(int i) throws IndexOutOfBoundsException {
-        if (i < 0 || this.lkm <= i)
-                throw new IndexOutOfBoundsException("Laiton indeksi senkin kaulin: " + i);
-        return alkiot[i];
-    }
-    
-    
-    /**
-     * @param args ei käytössä
-     */
-    public static void main(String[] args) {
-        Henkilot henkilot = new Henkilot();
-        
-        try {
-            Henkilo rovis = new Henkilo();
-            Henkilo asunmaa = new Henkilo();
-            Henkilo elfyn = new Henkilo();
-            rovis.rekisteroi();
-            rovis.vastaahlo();
-            asunmaa.rekisteroi();
-            asunmaa.vastaahlo();
-            elfyn.rekisteroi();
-            elfyn.vastaahlo();
-            
-            henkilot.lisaa(rovis);
-            henkilot.lisaa(asunmaa);
-            henkilot.lisaa(elfyn);
-            } catch (SailoException e) {
-                System.err.println("Liikaa alkioita :0"); //kun alkioita enemmän kun MAX sallii
-            }
-        
-
-    }
-
-}
diff --git a/src/application/uudenlisays.fxml b/src/application/uudenlisays.fxml
deleted file mode 100644
index 23ac227..0000000
--- a/src/application/uudenlisays.fxml
+++ /dev/null
@@ -1,203 +0,0 @@
-<?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..." />
-                        <Button layoutX="407.0" layoutY="272.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
-                     </children>
-                  </AnchorPane>
-            </content>
-          </Tab>
-          <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>
-                        <Button layoutX="408.0" layoutY="267.0" mnemonicParsing="false" onAction="#handleDefaultOK" text="Tallenna" />
-                     </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" />
-         </children>
-      </HBox>
-   </bottom>
-</BorderPane>
-- 
GitLab