package Ġde . hp led . thread to stl Ċ Ċ import Ġjavafx . f xml . FXML Ċ import Ġjavafx . f xml . FXML Loader Ċ import Ġjavafx . f xml . Initial izable Ċ import Ġjavafx . scene . control . ComboBox Ċ import Ġjavafx . scene . control . Spinner Ċ import Ġjavafx . scene . control . Text Formatter Ċ import Ġjavafx . scene . control . Title d Pane Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġjavafx . util . String Converter Ċ import Ġjava . lang . Exception Ċ import Ġjava . net . URL Ċ import Ġjava . util .* Ċ import Ġjava . util . function . Unary Operator Ċ import Ġjavax . swing . event . ChangeEvent Ċ import Ġjavax . swing . event . ChangeListener Ċ Ċ class ĠPreferences Ġ: ĠV Box (), ĠInitial izable Ġ{ ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġtype ComboBox : ĠCombo Box < String > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġthread D ia Spinner : ĠSp inner < Double > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġthread Length Spinner : ĠSp inner < Double > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġthread Angle Spinner : ĠSp inner < Double > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġthread Step Spinner : ĠSp inner < Double > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġresolution Preview : ĠSp inner < Int > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġresolution Export : ĠSp inner < Int > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwall Thickness Spinner : ĠSp inner < Double > ĊĠĠĠ Ġ@ FXML ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġwall Prefs : ĠTitle d Pane ĊĊĠĠĠ Ġprivate Ġval Ġresources Ġ= ĠResource Bundle . get Bundle (" strings ") !! ĊĠĠĠ Ġprivate Ġval Ġtypes Ġ= Ġmap Of < Type , ĠString >( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType . B OL T Ġto Ġresources . getString (" label . type B olt "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠType . N UT Ġto Ġresources . getString (" label . type N ut ") ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġon Type Changed Listener : ĠRunnable ? Ġ= Ġnull ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠF XML Loader ( java Class . getResource ("/ prefs . f xml "), Ġresources ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Root ( this @ Preferences ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Controller ( this @ Preferences ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġload () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Job Preview () Ġ= ĠJob (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġtype Ġ= ĠType . values (). get ( type ComboBox . selection Model . selectedIndex ) ĊĠĠĠĠĠĠĠ Ġouter Di ameter Ġ= Ġthread D ia Spinner . value ĊĠĠĠĠĠĠĠ Ġlength Ġ= Ġthread Length Spinner . value ĊĠĠĠĠĠĠĠ Ġangle Ġ= Ġthread Angle Spinner . value ĊĠĠĠĠĠĠĠ Ġstep Ġ= Ġthread Step Spinner . value ĊĠĠĠĠĠĠĠ Ġresolution Ġ= Ġresolution Preview . value ĊĠĠĠĠĠĠĠ Ġwall Think ness Ġ= Ġwall Thickness Spinner . value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Job Export () Ġ= Ġget Job Preview (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġresolution Ġ= Ġresolution Export . value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T > Ġadd Spinner Listener ( spinner : ĠSp inner < T >) Ġ{ ĊĠĠĠĠĠĠĠ Ġspinner . focused Property (). addListener Ġ{ Ġob , Ġol , Ġnw Ġ-> Ġspinner . increment ( 0 ) Ġ} ĊĠĠĠĠĠĠĠ Ġspinner . editor . text Formatter Ġ= ĠText Formatter < String >( object Ġ: ĠUnary Operator < Text Formatter . Change > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġapply ( t : ĠText Formatter . Change ): ĠText Formatter . Change Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġt . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif ( t . control New Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . text Ġ= Ġ" 0 " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif (! t . control New Text . matches ( Regex ("[ 0 - 9 ,. ]* "))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt . text Ġ= Ġ"" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġload Preset ( job : ĠJob ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( job Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype ComboBox . selection Model . select ( Ġtypes . get ( job . type ) Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread D ia Spinner . value Factory . value Ġ= Ġjob . outer Di ameter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Length Spinner . value Factory . value Ġ= Ġjob . length ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Angle Spinner . value Factory . value Ġ= Ġjob . angle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthread Step Spinner . value Factory . value Ġ= Ġjob . step ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresolution Export . value Factory . value Ġ= Ġjob . resolution ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwall Thickness Spinner . value Factory . value Ġ= Ġjob . wall Think ness ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinitialize ( location : ĠURL ?, Ġresources : ĠResource Bundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġtype ComboBox . items . set All ( types . values ) ĊĠĠĠĠĠĠĠ Ġtype ComboBox . selection Model . selectedIndex Property (). addListener Ġ{ Ġobservable , ĠoldValue , ĠnewValue Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwall Prefs . is Disable Ġ= ĠType . values (). get ( newValue Ġas ĠInt ) Ġ!= ĠType . N UT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Type Changed Listener ?. run () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtype ComboBox . selection Model . select ( 0 ) ĊĊĠĠĠĠĠĠĠ Ġadd Spinner Listener ( thread D ia Spinner ) ĊĠĠĠĠĠĠĠ Ġadd Spinner Listener ( thread Length Spinner ) ĊĠĠĠĠĠĠĠ Ġadd Spinner Listener ( thread Angle Spinner ) ĊĠĠĠĠĠĠĠ Ġadd Spinner Listener ( thread Step Spinner ) ĊĠĠĠĠĠĠĠ Ġadd Spinner Listener ( resolution Preview ) ĊĠĠĠĠĠĠĠ Ġadd Spinner Listener ( resolution Export ) ĊĠĠĠĠĠĠĠ Ġadd Spinner Listener ( wall Thickness Spinner ) ĊĠĠĠ Ġ} Ċ }