package Ġui . view . screen . impl Ċ Ċ import Ġjavafx . geometry . Node Orientation Ċ import Ġjavafx . scene . Scene Ċ import Ġjavafx . scene . control . Button Ċ import Ġjavafx . scene . control . Label Ċ import Ġjavafx . scene . control . TextArea Ċ import Ġjavafx . scene . image . Image Ċ import Ġjavafx . scene . image . ImageView Ċ import Ġjavafx . scene . input . KeyCode Ċ import Ġjavafx . scene . input . KeyCode Combination Ċ import Ġjavafx . scene . input . Key Combination Ċ import Ġjavafx . scene . input . KeyEvent Ċ import Ġjavafx . scene . layout . Border Pane Ċ import Ġjavafx . scene . layout . H Box Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġjavafx . scene . text . Text Alignment Ċ import Ġjavafx . stage . Stage Ċ import Ġui . utils . Button Bar Ċ import Ġui . utils . Resources Ċ import Ġui . utils . Settings Ċ import Ġui . view . handler . impl . App Handler Ċ import Ġui . view . listener . App Listener Ċ import Ġjavax . swing . JOptionPane Ċ import Ġjava . nio . file . Path Ċ Ċ /** Ċ Ġ* ĠĠ ĠF UR B Ġ- ĠB ach are l ado Ġem ĠCi Ãªn cias Ġda ĠComput aÃ§Ã£o Ċ Ġ* ĠĠ ĠComp il adores Ġ- ĠSem ant ico Ċ Ġ* Ċ Ġ* ĠĠ ĠF Ã¡ bio ĠLu iz ĠF is cher Ċ Ġ**/ Ċ Ċ class ĠMain Screen Ġ: ĠAbstract Screen ( Settings . MIN _ SCREEN _ SIZE , ĠSettings . APP _ NAME ) Ġ{ ĊĠĠĠ Ġval ĠTO OL _ BAR _ WIDTH Ġ= Ġ 1 4 5 . 0 ĊĠĠĠ Ġval ĠTO OL _ BAR _ HEIGHT Ġ= Ġ 5 9 0 . 0 ĊĠĠĠ Ġval ĠCON SOLE _ HEIGHT Ġ= Ġ 1 0 5 . 0 ĊĠĠĠ Ġval ĠCON SOLE _ WIDTH Ġ= Ġ 7 5 0 . 0 ĊĠĠĠ Ġval ĠSTATUS _ BAR _ HEIGHT Ġ= Ġ 2 5 . 0 ĊĠĠĠ Ġval ĠSTATUS _ BAR _ WIDTH Ġ= Ġ 1 0 0 . 0 ĊĠĠĠ Ġval ĠLINE _ NUMBER _ WIDTH Ġ= Ġ 4 2 . 0 ĊĠĠĠ Ġval ĠMIN _ TEXT _ CONTENT _ WIDTH Ġ= Ġ 7 4 0 . 0 ĊĊĠĠĠ Ġprivate Ġval Ġpane Ġ= ĠBorder Pane () ĊĊĠĠĠ Ġprivate Ġval Ġtool Box Ġ= ĠButton Bar ( TOOL _ BAR _ HEIGHT , Ġ 2 . 0 ) ĊĠĠĠ Ġprivate Ġval Ġcontent Box Ġ= ĠH Box () ĊĠĠĠ Ġprivate Ġval Ġmain Box Ġ= ĠV Box () ĊĠĠĠ Ġprivate Ġval Ġstatus Box Ġ= ĠH Box () ĊĊĠĠĠ Ġprivate Ġval Ġnew File Button Ġ= ĠButton () ĊĠĠĠ Ġprivate Ġval Ġopen File Button Ġ= ĠButton () ĊĠĠĠ Ġprivate Ġval Ġsave File Button Ġ= ĠButton () ĊĠĠĠ Ġprivate Ġval Ġcopy Text Button Ġ= ĠButton () ĊĠĠĠ Ġprivate Ġval Ġpaste Text Button Ġ= ĠButton () ĊĠĠĠ Ġprivate Ġval Ġcut Text Button Ġ= ĠButton () ĊĠĠĠ Ġprivate Ġval Ġbuild Project Button Ġ= ĠButton () ĊĠĠĠ Ġprivate Ġval Ġapp Team Ġ= ĠButton () ĊĊĠĠĠ Ġprivate Ġval Ġstatus Label Ġ= ĠLabel () ĊĠĠĠ Ġprivate Ġval ĠfilePath Label Ġ= ĠLabel () ĊĊĠĠĠ Ġval Ġcontent Area Ġ= ĠText Area () ĊĠĠĠ Ġval ĠlineNumber Area Ġ= ĠText Area (" 1 ") ĊĠĠĠ Ġval Ġconsole Area Ġ= ĠText Area () ĊĊĠĠĠ Ġval Ġfile Handler Ġ= ĠApp Handler () ĊĊĠĠĠ Ġvar Ġis File Changed Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( is Changed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġis Changed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatus Label . text Ġ= Ġif Ġ( is Changed ) Ġ" Mod ific ado " Ġelse Ġ" NÃ£o ĠMod ific ado " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġvar Ġactual Path : ĠPath ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġset ( path ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠ ĠfilePath Label . text Ġ= Ġif Ġ( path Ġ!= Ġnull ) Ġ"$ path " Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġwrite Console ( content : ĠString , Ġoverride : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwrite ( console Area , Ġ"\ n $ content ", Ġoverride ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġstart ( primary Stage : ĠStage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġstage Ġ= Ġprimary Stage ĊĠĠĠĠĠĠĠ Ġinit Components ( primary Stage ) ĊĊĠĠĠĠĠĠĠ Ġprimary Stage . scene Ġ= Ġinit Scene () ĊĠĠĠĠĠĠĠ Ġprimary Stage . title Ġ= Ġscreen Name ĊĠĠĠĠĠĠĠ Ġprimary Stage . min Height Ġ= Ġscreen Size . x ĊĠĠĠĠĠĠĠ Ġprimary Stage . min Width Ġ= Ġ 9 0 0 . 0 ĊĊĠĠĠĠĠĠĠ Ġprimary Stage . show () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" NON _ EX HA UST IVE _ WHEN ") ĊĠĠĠ Ġoverride Ġfun Ġinit Scene (): ĠScene Ġ{ ĊĠĠĠĠĠĠĠ Ġ// pane . top Ġ= Ġupper Box ĊĠĠĠĠĠĠĠ Ġpane . left Ġ= Ġtool Box ĊĠĠĠĠĠĠĠ Ġpane . center Ġ= Ġmain Box ĊĠĠĠĠĠĠĠ Ġpane . bottom Ġ= Ġstatus Box ĊĊĠĠĠĠĠĠĠ Ġval Ġscene Ġ= ĠScene ( pane , Ġscreen Size . x , Ġscreen Size . y ) ĊĊĠĠĠĠĠĠĠ Ġscene . setOn Key Pressed Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event . code ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode Combination ( KeyCode . N , ĠKey Combination . CONTROL _ ANY ). code Ġ-> Ġfile Handler . new File Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode Combination ( KeyCode . O , ĠKey Combination . CONTROL _ ANY ). code Ġ-> Ġfile Handler . open File Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode Combination ( KeyCode . S , ĠKey Combination . CONTROL _ ANY ). code Ġ-> Ġfile Handler . save File Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode Combination ( KeyCode . C , ĠKey Combination . CONTROL _ ANY ). code Ġ-> Ġfile Handler . copy Text Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode Combination ( KeyCode . V , ĠKey Combination . CONTROL _ ANY ). code Ġ-> Ġfile Handler . paste Text Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode Combination ( KeyCode . X , ĠKey Combination . CONTROL _ ANY ). code Ġ-> Ġfile Handler . cut Text Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġscene . add Event Filter ( KeyEvent . KEY _ PRES SED , Ġ{ Ġevent Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . F 9 Ġ== Ġevent . code Ġ-> Ġfile Handler . build Project Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠKeyCode . F 1 Ġ== Ġevent . code Ġ-> Ġfile Handler . application Team Request ( this ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠUtil izar Ġpara Ġbuild ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠ Ġfor Ġ( style Sheet Ġin ĠResources . getStyle Sheet s ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġscene . stylesheets . add ( style Sheet ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfor Ġ( style Sheet Ġin ĠResources . getStyle Sheet s ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġscene . stylesheets . add ( style Sheet . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġpane . pref Height Property (). bind ( scene . height Property ()) ĊĠĠĠĠĠĠĠ Ġpane . pref Width Property (). bind ( scene . width Property ()) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġscene ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit Components ( primary Stage : ĠStage ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprimary Stage . setOn Close Request Ġ{ Ġfile Handler . close App Request ( this ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġinit Label ( status Label , Ġ" NÃ£o Ġmodific ado ", ĠText Alignment . LEFT , ĠSTATUS _ BAR _ WIDTH , ĠSTATUS _ BAR _ HEIGHT ) ĊĠĠĠĠĠĠĠ Ġinit Label ( filePath Label , Ġ"", ĠText Alignment . RIGHT , ĠSTATUS _ BAR _ WIDTH , ĠSTATUS _ BAR _ HEIGHT ) ĊĊĠĠĠĠĠĠĠ Ġinit Text Areas () ĊĠĠĠĠĠĠĠ Ġinit Buttons () ĊĠĠĠĠĠĠĠ Ġinit Boxes () ĊĊĠĠĠĠĠĠĠ Ġlink Listeners () ĊĠĠĠĠĠĠĠ Ġlink Handlers () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Text Areas () Ġ{ ĊĠĠĠĠĠĠĠ Ġinit TextArea ( line Number Area , ĠLINE _ NUMBER _ WIDTH , Ġscreen Size . x , Ġfalse , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġinit TextArea ( console Area , ĠCON SOLE _ WIDTH , ĠCON SOLE _ HEIGHT , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġinit TextArea ( content Area , Ġscreen Size . y , Ġscreen Size . x ) ĊĊĠĠĠĠĠĠĠ ĠlineNumber Area . maxWidth Ġ= ĠLINE _ NUMBER _ WIDTH ĊĠĠĠĠĠĠĠ ĠlineNumber Area . node Orientation Ġ= ĠNode Orientation . RIGHT _ TO _ LEFT ĊĊĠĠĠĠĠĠĠ Ġconsole Area . max Height Ġ= ĠCON SOLE _ HEIGHT ĊĠĠĠĠĠĠĠ Ġcontent Area . min Width Ġ= ĠMIN _ TEXT _ CONTENT _ WIDTH ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Boxes () Ġ{ ĊĠĠĠĠĠĠĠ Ġtool Box . addAll ( new File Button , Ġopen File Button , Ġsave File Button , Ġcopy Text Button , Ġpaste Text Button , Ġcut Text Button , Ġbuild Project Button , Ġapp Team ) ĊĠĠĠĠĠĠĠ Ġinit H Box ( content Box , Ġ 2 . 0 , ĠlineNumber Area , Ġcontent Area ) ĊĠĠĠĠĠĠĠ Ġcontent Area . pref Width Ġ= ĠDouble . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġcontent Box . pref Width Ġ= ĠDouble . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġinit V Box ( main Box , Ġ 1 . 0 , Ġcontent Box , Ġconsole Area ) ĊĠĠĠĠĠĠĠ Ġinit H Box ( status Box , Ġ 5 . 0 , Ġstatus Label , ĠfilePath Label ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġinit Buttons () Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( new File Button , Ġ" new Ġ[ ctrl - n )", ĠImageView ( Resources . new File ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( open File Button , Ġ" open Ġ[ ctrl - o )", ĠImageView ( Resources . open File ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( save File Button , Ġ" save Ġ[ ctrl - s )", ĠImageView ( Resources . save File ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( copy Text Button , Ġ" copy Ġ[ ctrl - c )", ĠImageView ( Resources . copy Text ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( paste Text Button , Ġ" paste Ġ[ ctrl - v )", ĠImageView ( Resources . paste Text ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( cut Text Button , Ġ" cut Ġ[ ctrl - x ]", ĠImageView ( Resources . cut Text ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( build Project Button , Ġ" compile Ġ[ F 9 ]", ĠImageView ( Resources . build Project ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinit Button ( app Team , Ġ" about Ġ[ F 1 ]", ĠImageView ( Resources . app Team ), ĠTO OL _ BAR _ WIDTH ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠNoSuch File Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( e . printStackTrace ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlink Handlers () Ġ{ ĊĠĠĠĠĠĠĠ Ġnew File Button . setOn Action Ġ{ Ġfile Handler . new File Request ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġopen File Button . setOn Action Ġ{ Ġfile Handler . open File Request ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġsave File Button . setOn Action Ġ{ Ġfile Handler . save File Request ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġcopy Text Button . setOn Action Ġ{ Ġfile Handler . copy Text Request ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġpaste Text Button . setOn Action Ġ{ Ġfile Handler . paste Text Request ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġcut Text Button . setOn Action Ġ{ Ġfile Handler . cut Text Request ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġbuild Project Button . setOn Action Ġ{ Ġfile Handler . build Project Request ( this ) Ġ} ĊĠĠĠĠĠĠĠ Ġapp Team . setOn Action Ġ{ Ġfile Handler . application Team Request ( this ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġlink Listeners () Ġ{ ĊĠĠĠĠĠĠĠ Ġcontent Area . text Property (). addListener ( App Listener . listen ( this )) ĊĠĠĠ Ġ} Ċ }