/* Ċ Ġ* ĠThe ĠMIT ĠLicense Ġ( MIT ) Ċ Ġ* Ċ Ġ* ĠFX GL Ġ- ĠJava FX ĠGame ĠLibrary Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 5 - 2 0 1 7 ĠAl mas B Ġ( al mas lvl @ gmail . com ) Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . al mas b . fx gl . app Ċ Ċ import Ġcom . al mas b . fx gl . logging . System Logger Ċ import Ġcom . al mas b . fx gl . util . ExceptionHandler Ċ import Ġcom . google . inject . Inject Ċ import Ġjavafx . scene . control . Button Type Ċ import Ġjavafx . scene . control . Dialog Ċ import Ġjavafx . scene . control . Label Ċ import Ġjavafx . scene . control . TextArea Ċ import Ġjavafx . scene . layout . Grid Pane Ċ import Ġjavafx . scene . layout . Priority Ċ import Ġjavafx . stage . Modal ity Ċ import Ġjava . io . PrintWriter Ċ import Ġjava . io . String Writer Ċ Ċ /** Ċ Ġ* ĠDefault Ġexception Ġhandler Ġservice Ġprovider . Ċ Ġ* Ċ Ġ* Ġ@ author ĠAl mas ĠB aim ag amb et ov Ġ( al mas lvl @ gmail . com ) Ċ Ġ*/ Ċ class ĠFX GL ExceptionHandler Ċ @ Inject Ġprivate Ġconstructor () Ġ: ĠException Handler Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlog Ġ= ĠFX GL . getLogger ( java Class ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ ĠThread . setDefault Un caught ExceptionHandler ({ Ġthread , Ġe Ġ-> Ġhandle Fatal ( e ) Ġ}) ĊĊĠĠĠĠĠĠĠ Ġlog . debug (" Service Ġ[ ExceptionHandler ] Ġinitialized ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlog . warning (" Ca ught ĠException : Ġ$ e ") ĊĠĠĠĠĠĠĠ ĠFX GL . getDisplay (). show Error Box ( e ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġhandled Once Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Fatal ( e : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( handled Once ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjust Ġignore Ġto Ġavoid Ġspam ming Ġdialog s ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhandled Once Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġlog . fatal (" Un caught ĠException :"); ĊĠĠĠĠĠĠĠ Ġlog . fatal ( System Logger . error Trace AsString ( e )); ĊĠĠĠĠĠĠĠ Ġlog . fatal (" Application Ġwill Ġnow Ġexit "); ĊĊĠĠĠĠĠĠĠ Ġval Ġapp Ġ= ĠFX GL . getApp () ĊĠĠĠĠĠĠĠ Ġapp . pause () ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Ġ= ĠDialog < Button Type >() ĊĠĠĠĠĠĠĠ Ġdialog . title Ġ= Ġ" Un caught ĠException " ĊĊĠĠĠĠĠĠĠ Ġval Ġdialog Pane Ġ= Ġdialog . dialog Pane ĊĠĠĠĠĠĠĠ Ġdialog Pane . content Text Ġ= Ġ" Exception Ġdetails :" ĊĠĠĠĠĠĠĠ Ġdialog Pane . button Types . addAll ( Button Type . OK ) ĊĊĠĠĠĠĠĠĠ Ġdialog Pane . content Text Ġ= Ġe . toString () ĊĠĠĠĠĠĠĠ Ġdialog . init Modal ity ( Modal ity . APPLICATION _ MOD AL ) ĊĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= ĠLabel (" Exception Ġstack trace :") ĊĠĠĠĠĠĠĠ Ġval Ġsw Ġ= ĠString Writer () ĊĠĠĠĠĠĠĠ Ġval Ġpw Ġ= ĠPrintWriter ( sw ) ĊĠĠĠĠĠĠĠ Ġe . printStackTrace ( pw ) ĊĠĠĠĠĠĠĠ Ġpw . close () ĊĊĠĠĠĠĠĠĠ Ġval Ġtext Area Ġ= ĠText Area ( sw . toString ()) ĊĠĠĠĠĠĠĠ Ġtext Area . is Editable Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġtext Area . is Wrap Text Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġtext Area . set Pref Size ( 6 0 0 . 0 , Ġ 6 0 0 . 0 ) ĊĠĠĠĠĠĠĠ Ġtext Area . maxWidth Ġ= Ġjava . lang . Double . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġtext Area . max Height Ġ= Ġjava . lang . Double . MAX _ VALUE ĊĊĠĠĠĠĠĠĠ ĠGrid Pane . set V grow ( textArea , ĠPriority . ALWAYS ) ĊĠĠĠĠĠĠĠ ĠGrid Pane . set H grow ( textArea , ĠPriority . ALWAYS ) ĊĊĠĠĠĠĠĠĠ Ġval Ġroot Ġ= ĠGrid Pane () ĊĠĠĠĠĠĠĠ Ġroot . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġroot . maxWidth Ġ= Ġjava . lang . Double . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġroot . add ( label , Ġ 0 , Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġroot . add ( textArea , Ġ 0 , Ġ 1 ) ĊĊĠĠĠĠĠĠĠ Ġdialog Pane . expand able Content Ġ= Ġroot ĊĠĠĠĠĠĠĠ Ġdialog . show And Wait () ĊĊĠĠĠĠĠĠĠ Ġapp . exit () ĊĠĠĠ Ġ} Ċ }