package Ġit . uni bo . tup ro log . ui . gui Ċ Ċ import Ġit . uni bo . tup ro log . Info Ċ import Ġit . uni bo . tup ro log . solve . library . Ali ased Library Ċ import Ġjavafx . event . EventHandler Ċ import Ġjavafx . f xml . FXML Loader Ċ import Ġjavafx . scene . Parent Ċ import Ġjavafx . scene . Scene Ċ import Ġjavafx . scene . control . Alert Ċ import Ġjavafx . scene . control . Button Type Ċ import Ġjavafx . scene . control . Tab Ċ import Ġjavafx . scene . image . Image Ċ import Ġjavafx . scene . image . ImageView Ċ import Ġjavafx . stage . Stage Ċ Ċ /** Ċ Ġ* ĠNOTE Ġ([ custom Tabs ]: ĠIf Ġa Ġ[ Custom Tab . tab ] Ġhas Ġa Ġ[ Tab . id ] Ġthat Ġis Ġalready Ġexisting Ċ Ġ* Ġin Ġthe ĠIDE , Ġit Ġsubstit utes Ġthe Ġexisting Ġ[ Tab ] Ġinstead Ġof Ġbeing Ġadded Ġto Ġthe Ġtab Ġlist . Ċ Ġ*/ Ċ data Ġclass ĠT u Pro log IDE Builder ( ĊĠĠĠ Ġval Ġstage : ĠStage , ĊĠĠĠ Ġvar Ġtitle : ĠString Ġ= Ġ" tu Pro log ĠIDE ", ĊĠĠĠ Ġvar Ġicon : ĠImage Ġ= ĠT U PRO LOG _ LOG O , ĊĠĠĠ Ġvar ĠonClose : Ġ() Ġ-> ĠBoolean Ġ= Ġ{ Ġshow Exit Confirmation Dialog ( title ) Ġ}, ĊĠĠĠ Ġvar Ġon About : Ġ() Ġ-> ĠUnit Ġ= Ġ{ Ġshow About Dialog ( title , ĠInfo . VERSION ) Ġ}, ĊĠĠĠ Ġvar Ġstyle sheets : ĠList < String > Ġ= ĠlistOf ( JAVA _ KEYWORD S _ LIGHT , ĠLIGHT _ CODE _ AREA ), ĊĠĠĠ Ġvar Ġcustom Libraries : ĠList < Ali ased Library > Ġ= Ġempty List (), ĊĠĠĠ Ġvar Ġcustom Tabs : ĠList < Custom Tab > Ġ= Ġempty List () Ċ ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġshow Confirmation Dialog ( title : ĠString , Ġheader : ĠString , Ġcontent : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAlert ( Alert . Alert Type . CONFIRM ATION ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . title Ġ= Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . header Text Ġ= Ġheader ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . content Text Ġ= Ġcontent ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. show And Wait (). map Ġ{ Ġit Ġ== ĠButton Type . OK Ġ}. get () ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġshow Exit Confirmation Dialog ( what : ĠString ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Confirmation Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Close Ġ$ what ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Confirmation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Do Ġyou Ġreally Ġwant Ġclose Ġthe Ġ$ what ?" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġ@ Jvm Static ĊĠĠĠĠĠĠĠ Ġfun Ġshow About Dialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhat : ĠString , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġversion : ĠString Ġ= ĠInfo . VERSION , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage : ĠImage Ġ= ĠT U PRO LOG _ LOG O , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwidth : ĠDouble Ġ= ĠT U PRO LOG _ LOG O . width Ġ* Ġ 0 . 3 , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġheight : ĠDouble Ġ= ĠT U PRO LOG _ LOG O . height Ġ* Ġ 0 . 3 ĊĠĠĠĠĠĠĠ Ġ) Ġ= ĠAlert ( Alert . Alert Type . INFORMATION ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . title Ġ= Ġ" About " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . header Text Ġ= Ġ"$ what Ġv $ version " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . dialog Pane . graphic Ġ= ĠImageView ( image ). also Ġ{ Ġimg Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg . fit Width Ġ= Ġwidth ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimg . fit Height Ġ= Ġheight ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . content Text Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Running Ġon : ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ- Ġ 2 P - Kt Ġv ${ Info . VERSION } ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ- ĠJVM Ġv ${ System . getProperty (" java . version ")} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ| Ġ Ġ- ĠJava FX Ġv ${ System . getProperty (" java fx . runtime . version ")} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Margin () ĊĠĠĠĠĠĠĠ Ġ}. show And Wait () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġtitle ( title : ĠString ) Ġ= Ġapply Ġ{ Ġthis . title Ġ= Ġtitle Ġ} ĊĊĠĠĠ Ġfun Ġicon ( icon : ĠImage ) Ġ= Ġapply Ġ{ Ġthis . icon Ġ= Ġicon Ġ} ĊĊĠĠĠ Ġfun ĠonClose ( onClose : Ġ() Ġ-> ĠBoolean ) Ġ= Ġapply Ġ{ Ġthis . onClose Ġ= ĠonClose Ġ} ĊĊĠĠĠ Ġfun Ġon About ( on About : Ġ() Ġ-> ĠUnit ) Ġ= Ġapply Ġ{ Ġthis . on About Ġ= Ġon About Ġ} ĊĊĠĠĠ Ġfun Ġstyle sheets ( stylesheets : ĠIterable < String >) Ġ= Ġapply Ġ{ Ġthis . stylesheets Ġ= Ġstyle sheets . toList () Ġ} ĊĊĠĠĠ Ġfun Ġstylesheet ( stylesheet : ĠString ) Ġ= Ġapply Ġ{ Ġthis . stylesheets Ġ+= Ġstylesheet Ġ} ĊĊĠĠĠ Ġfun Ġcustom Libraries ( custom Libraries : ĠIterable < Ali ased Library >) Ġ= ĊĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . custom Libraries Ġ= Ġcustom Libraries . toList () Ġ} ĊĊĠĠĠ Ġfun Ġcustom Library ( custom Library : ĠAli ased Library ) Ġ= ĊĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . custom Libraries Ġ+= Ġcustom Library Ġ} ĊĊĠĠĠ Ġfun Ġcustom Tabs ( custom Tabs : ĠIterable < Custom Tab >) Ġ= ĊĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . custom Tabs Ġ= Ġcustom Tabs . toList () Ġ} ĊĊĠĠĠ Ġfun Ġcustom Tab ( custom Tab : ĠCustom Tab ) Ġ= ĊĠĠĠĠĠĠĠ Ġapply Ġ{ Ġthis . custom Tabs Ġ+= Ġcustom Tab Ġ} ĊĊĠĠĠ Ġfun Ġcustom Tab ( tab : ĠTab , Ġmodel Configurator : ĠModel Configurator ) Ġ= ĊĠĠĠĠĠĠĠ Ġcustom Tab ( Custom Tab ( tab , Ġmodel Configurator )) ĊĊĠĠĠ Ġfun Ġcustom Tab ( tab : ĠTab ) Ġ= Ġcustom Tab ( tab ) Ġ{ Ġ/* Ġdo Ġnothing Ġ*/ Ġ} ĊĊĠĠĠ Ġfun Ġshow () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġloader Ġ= ĠF XML Loader ( java Class . getResource (" Tu Pro log IDE View . f xml ")) ĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġloader . load < Parent >() ĊĠĠĠĠĠĠĠ Ġstage . scene Ġ= ĠScene ( root ) ĊĠĠĠĠĠĠĠ Ġstage . title Ġ= Ġthis . title ĊĠĠĠĠĠĠĠ Ġstage . icons . add ( this . icon ) ĊĠĠĠĠĠĠĠ Ġstage . onClose Request Ġ= ĠEventHandler Ġ{ Ġe Ġ-> Ġif Ġ(! this . onClose ()) Ġe . consume () Ġ} ĊĠĠĠĠĠĠĠ Ġstage . scene . stylesheets . addAll ( this . stylesheets ) ĊĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= Ġloader . get Controller () Ġas ĠT u Pro log IDE Controller ĊĠĠĠĠĠĠĠ Ġcontroller . setOn About ( this . on About ) ĊĠĠĠĠĠĠĠ Ġcontroller . setOn Close Ġ{ Ġif Ġ( this . onClose ()) Ġthis . stage . close () Ġ} ĊĠĠĠĠĠĠĠ Ġcustom Tabs . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontroller . add Tab ( it . tab ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcontroller . customize Model Ġ{ Ġmodel Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodel . customize Solver Ġ{ Ġsolver Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Libraries . forEach Ġ{ Ġsolver . load Library ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsolver ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcustom Tabs . forEach Ġ{ Ġit . model Configurator ( model ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . stage . show () ĊĠĠĠ Ġ} Ċ } Ċ