/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠMark . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġres aver . gui Ċ Ċ import Ġres aver . Game Ċ import Ġres aver . Re Saver Ċ import Ġres aver . gui . Configurator . Companion . get Game Directory Ċ import Ġres aver . gui . Configurator . Companion . get MO 2 Ini Ċ import Ġres aver . gui . Configurator . Companion . get Save Directory Ċ import Ġres aver . gui . Configurator . Companion . select Game Directory Ċ import Ġres aver . gui . Configurator . Companion . select MO 2 Ini Ċ import Ġres aver . gui . Configurator . Companion . select Save file Directory Ċ import Ġjava . awt . Flow Layout Ċ import Ġjava . awt . event . ActionEvent Ċ import Ġjava . nio . file . Path Ċ import Ġjava . nio . file . Paths Ċ import Ġjava . util . prefs . Preferences Ċ import Ġjavax . swing .* Ċ Ċ /** Ċ Ġ* ĠSettings ĠDialog Box . Ċ Ġ* Ċ Ġ* Ġ@ author ĠMark ĠF air child Ċ Ġ*/ Ċ class ĠRe Saver Settings ( parent : ĠSave Window ?, Ġcurrent Game : ĠGame ?) Ġ: ĠJ Dialog ( parent , Ġtrue ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġitems ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget First ( var arg Ġitems : ĠPath ?): ĠPath ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġitems . first OrNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠHOME Ġ= ĠPaths . get ( System . getProperty (" user . home "), Ġ" app Data ", Ġ" local ", Ġ" Mod Organ izer ") ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠP REF S Ġ= ĠPreferences . user Node For Package ( Re Saver :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . setDefault Close Operation ( DIS POSE _ ON _ CLOSE ) ĊĠĠĠĠĠĠĠ Ġsuper . setLocation Relative To ( parent ) ĊĠĠĠĠĠĠĠ Ġval ĠP ANE Ġ= ĠJ Tabbed Pane () ĊĠĠĠĠĠĠĠ Ġsuper . setContent Pane ( P ANE ) ĊĠĠĠĠĠĠĠ Ġval ĠTAB Gen al Ġ= ĠJPanel () ĊĠĠĠĠĠĠĠ ĠTAB Gen al . layout Ġ= ĠBox Layout ( TAB Gen al , ĠBox Layout . PAGE _ AXIS ) ĊĠĠĠĠĠĠĠ ĠP ANE . add (" General ", ĠTAB Gen al ) ĊĠĠĠĠĠĠĠ Ġval ĠAL WAY SPARSE Ġ= ĠJ CheckBox (" Always Ġparse ", ĠP REF S . getBoolean (" settings . always Parse ", Ġfalse )) ĊĠĠĠĠĠĠĠ Ġval ĠPAN EL A Parse Ġ= ĠJPanel ( Flow Layout ( Flow Layout . LEADING )) ĊĠĠĠĠĠĠĠ ĠPAN EL A Parse . add ( AL WAY SPARSE ) ĊĠĠĠĠĠĠĠ ĠTAB Gen al . add ( PANEL A Parse ) ĊĠĠĠĠĠĠĠ ĠAL WAY SPARSE . addActionListener Ġ{ Ġe : ĠAction Event ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP REF S . put Boolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" settings . always Parse ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAL WAY SPARSE . isSelected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠD ARK THEME Ġ= ĠJ CheckBox (" Use ĠDark ĠNim bus Ġtheme ", ĠP REF S . getBoolean (" settings . dark theme ", Ġfalse )) ĊĠĠĠĠĠĠĠ Ġval ĠPAN ELD ark Ġ= ĠJPanel ( Flow Layout ( Flow Layout . LEADING )) ĊĠĠĠĠĠĠĠ ĠPAN ELD ark . add ( DARK THEME ) ĊĠĠĠĠĠĠĠ ĠTAB Gen al . add ( PAN ELD ark ) ĊĠĠĠĠĠĠĠ ĠD ARK THEME . addActionListener Ġ{ Ġe : ĠAction Event ? Ġ-> ĠP REF S . put Boolean (" settings . dark theme ", ĠD ARK THEME . isSelected ) Ġ} ĊĠĠĠĠĠĠĠ Ġval ĠJ AV AFX Ġ= ĠJ CheckBox (" Use ĠJava FX Ġnative Ġfile Chooser ", ĠP REF S . getBoolean (" settings . java fx ", Ġfalse )) ĊĠĠĠĠĠĠĠ Ġval ĠPAN EL Java fx Ġ= ĠJPanel ( Flow Layout ( Flow Layout . LEADING )) ĊĠĠĠĠĠĠĠ ĠPAN EL Java fx . add ( J AV AFX ) ĊĠĠĠĠĠĠĠ ĠTAB Gen al . add ( PANEL Java fx ) ĊĠĠĠĠĠĠĠ ĠJ AV AFX . addActionListener Ġ{ Ġe : ĠAction Event ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP REF S . put Boolean ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" settings . java fx ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ AV AFX . isSelected ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠLABEL scaling Ġ= ĠJLabel (" Font Ġscaling :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠSC ALE FIELD Ġ= ĠJ Formatted TextField ( PRE FS . get Float (" settings . font Scale ", Ġ 1 . 0 f )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠPAN EL scaling Ġ= ĠJPanel ( Flow Layout ( Flow Layout . LEADING )) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLABEL scaling . label For Ġ= ĠSC ALE FIELD ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL scaling . add ( LABEL scaling ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL scaling . add ( SCALE FIELD ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSC ALE FIELD . columns Ġ= Ġ 5 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAB Gen al . add ( PANEL scaling ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSC ALE FIELD . addActionListener Ġ{ Ġe : ĠAction Event ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn Ġ= ĠSC ALE FIELD . value Ġas ĠNumber ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Scale Ġ= Ġ 5 . 0 f . coerce At Most ( n . toFloat (). coerce At Least ( 0 . 5 f )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠP REF S . put Float (" settings . font Scale ", Ġfont Scale ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSC ALE FIELD . value Ġ= Ġfont Scale ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( key Ġin ĠUI Manager . get Look And Feel Defaults (). keys ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( key . toString (). endsWith (". font ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfont Ġ= ĠUI Manager . getFont ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbigger Font Ġ= Ġfont . derive Font ( font Scale Ġ* Ġfont . size 2 D ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠUI Manager . put ( key , Ġbigger Font ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( game Ġin ĠGame . VALUES ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠTAB Ġ= ĠJPanel () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAB . layout Ġ= ĠBox Layout ( TAB , ĠBox Layout . PAGE _ AXIS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ANE . add ( game . NAME , ĠTAB ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠLABEL game Dir Ġ= ĠJLabel (" Game Ġdirectory :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame Part Ġ= Ġget Game Directory ( game ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgame get Ġ= Ġget First ( game Part , ĠHOME ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠGAME DIR Ġ= ĠJTextField ( game get , Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠPAN EL game Dir Ġ= ĠJPanel ( Flow Layout ( Flow Layout . TR AIL ING )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBUTTON game Dir Ġ= ĠJButton (" Select ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLABEL game Dir . label For Ġ= ĠGAME DIR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGAME DIR . is Editable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL game Dir . add ( LABEL game Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL game Dir . add ( GAME DIR ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL game Dir . add ( BUTTON game Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAB . add ( PANEL game Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBUTTON game Dir . addActionListener Ġ{ Ġe : ĠAction Event ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Path Ġ= Ġget First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Game Directory ( parent , Ġgame ) !! , Ġget Game Directory ( game ) !! , ĠHOME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGAME DIR . text Ġ= Ġnew Path . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠLABEL Mod Org Ġ= ĠJLabel (" Mod Organ izer 2 Ġini Ġfile :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠMO 2 INI Ġ= ĠJTextField ( getFirst ( get MO 2 Ini ( game ) !! , ĠHOME ). toString (), Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠPAN EL Mod org Ġ= ĠJPanel ( Flow Layout ( Flow Layout . TR AIL ING )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBUTTON Mod Org Ġ= ĠJButton (" Select ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLABEL Mod Org . label For Ġ= ĠMO 2 INI ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMO 2 INI . is Editable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL Mod org . add ( LABEL Mod Org ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL Mod org . add ( MO 2 INI ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL Mod org . add ( BUTTON Mod Org ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAB . add ( PANEL Mod org ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBUTTON Mod Org . addActionListener Ġ{ Ġe : ĠAction Event ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Path Ġ= Ġget First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect MO 2 Ini ( parent , Ġgame ) !! , Ġget MO 2 Ini ( game ) !! , ĠHOME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMO 2 INI . text Ġ= Ġnew Path . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠLABEL Save file Dir Ġ= ĠJLabel (" Save file Ġdirectory :") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠS AV ED IR Ġ= ĠJTextField ( getFirst ( get Save Directory ( game ), ĠHOME ). toString (), Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠPAN EL Save file Dir Ġ= ĠJPanel ( Flow Layout ( Flow Layout . TR AIL ING )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠBUTTON Save file Dir Ġ= ĠJButton (" Select ") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLABEL Save file Dir . label For Ġ= ĠS AV ED IR ĊĠĠĠĠĠĠĠĠĠĠĠ ĠS AV ED IR . is Editable Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL Save file Dir . add ( LABEL Save file Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL Save file Dir . add ( SA VED IR ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPAN EL Save file Dir . add ( BUTTON Save file Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠTAB . add ( PANEL Save file Dir ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠBUTTON Save file Dir . addActionListener Ġ{ Ġe : ĠAction Event ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Path Ġ= Ġget First ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġselect Save file Directory ( parent , Ġgame ) !! , Ġget Save Directory ( game ), ĠHOME ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠS AV ED IR . text Ġ= Ġnew Path . toString () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( current Game Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠP ANE . selectedIndex Ġ= ĠGame . VALUES . indexOf ( current Game ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }