package Ġde . t uc he mn itz . se . exercise . core . graphics . system Ċ Ċ import Ġde . t uc he mn itz . se . exercise . core . config manager . Config Manager Ċ import Ġde . t uc he mn itz . se . exercise . core . graphics . Main App Ċ import Ġde . t uc he mn itz . se . exercise . core . graphics . zoom maps . Zoom Maps View . Companion . logger Ċ import Ġjavafx . geometry . Rectangle 2 D Ċ import Ġjavafx . scene . control . Alert Ċ import Ġjavafx . scene . control . Button Ċ import Ġjavafx . scene . image . ImageView Ċ import Ġjavafx . scene . layout . Border Pane Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġt orn ad of x . View Ċ import Ġt orn ad of x . action Ċ import Ġjava . io . IOException Ċ Ċ open Ġclass ĠMain Bar View ( view Title : ĠString ) Ġ: ĠView ( view Title ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠB AC k GROUND _ IMAGE _ WIDTH Ġ= Ġ 1 9 2 0 . 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBACK GROUND _ IMAGE _ HEIGHT Ġ= Ġ 1 0 8 0 . 0 ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠBACK GROUND _ IMAGE _ RATIO Ġ= ĠB AC k GROUND _ IMAGE _ WIDTH Ġ/ ĠBACK GROUND _ IMAGE _ HEIGHT ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġconfig Manager : ĠConfig Manager Ġby Ġinject () ĊĠĠĠ Ġfinal Ġoverride Ġval Ġroot : ĠBorder Pane Ġby Ġf xml ( Main App . MAIN _ VIEW _ TEMPLATE _ PATH ) ĊĠĠĠ Ġval Ġcontent Box : ĠV Box Ġby Ġfx id (" content ") ĊĠĠĠ Ġval Ġexit Button : ĠButton Ġby Ġfx id (" exit _ button ") ĊĠĠĠ Ġval Ġmain Menu Button : ĠButton Ġby Ġfx id (" main _ menu _ button ") ĊĠĠĠ Ġprivate Ġval Ġsave ConfigFile Button : ĠButton Ġby Ġfx id (" create _ json _ button ") ĊĠĠĠ Ġprivate Ġval Ġbackground Image : ĠImageView Ġby Ġfx id (" background ") ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġroot . width Property (). addListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Background Image () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġroot . height Property (). addListener Ġ{ Ġ_ Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscale Background Image () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( exit Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ConfigFile () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprimary Stage . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( main Menu Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ConfigFile () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreplace With ( Tool Selection View :: class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġwith ( save ConfigFile Button ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwrite ConfigFile ( show Success Ġ= Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwrite ConfigFile ( show Success : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġconfig Manager . writeFile () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Success ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAlert ( Alert . Alert Type . INFORMATION ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Text Ġ= Ġ" Success !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" Your Ġconfig Ġwas Ġsuccessfully Ġwritten !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Pane . content Text Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show And Wait () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlert ( Alert . Alert Type . ERROR ). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader Text Ġ= Ġ" Error !" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmessage Ġ= Ġ" An Ġerror Ġwhile Ġwriting Ġthe ĠConfig ĠFile Ġoccurred ! Ġ${ e . localized Message }" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdialog Pane . content Text Ġ= Ġmessage ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show And Wait () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscale Background Image () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( root . width Ġ== Ġ 0 . 0 Ġ|| Ġroot . height Ġ== Ġ 0 . 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġwidth Ġ= Ġroot . width ĊĠĠĠĠĠĠĠ Ġval Ġheight Ġ= Ġroot . height Ġ- Ġ 9 0 . 0 Ġ// Ġ 9 0 . 0 Ġ= Ġ 3 2 . 0 Ġ( top Ġheight ) Ġ+ Ġ 5 8 . 0 Ġ( bottom Ġheight ) ĊĠĠĠĠĠĠĠ Ġlogger . info (" ImageView Ġsize : Ġ($ width , Ġ$ height )") ĊĠĠĠĠĠĠĠ Ġval Ġaspect Ratio Ġ= Ġwidth Ġ/ Ġheight ĊĠĠĠĠĠĠĠ Ġif Ġ( aspect Ratio Ġ<= ĠBACK GROUND _ IMAGE _ RATIO ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible Width Ġ= ĠBACK GROUND _ IMAGE _ HEIGHT Ġ* Ġaspect Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Image . viewport Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRectangle 2 D (( BAC k GROUND _ IMAGE _ WIDTH Ġ- Ġvisible Width ) Ġ* Ġ 0 . 5 , Ġ 0 . 0 , Ġvisible Width , ĠBACK GROUND _ IMAGE _ HEIGHT ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvisible Height Ġ= ĠB AC k GROUND _ IMAGE _ WIDTH Ġ/ Ġaspect Ratio ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbackground Image . viewport Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRectangle 2 D ( 0 . 0 , Ġ( BACKGROUND _ IMAGE _ HEIGHT Ġ- Ġvisible Height ) Ġ* Ġ 0 . 5 , ĠB AC k GROUND _ IMAGE _ WIDTH , Ġvisible Height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġbackground Image . fit Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠ Ġbackground Image . fit Height Ġ= Ġheight ĊĠĠĠ Ġ} Ċ } Ċ