package Ġnet . d ank ito . richt ext editor . java . fx Ċ Ċ import Ġjavafx . scene . layout . Priority Ċ import Ġjavafx . scene . layout . Region Ċ import Ġjavafx . scene . layout . V Box Ċ import Ġjavafx . scene . web . WebView Ċ import Ġnet . d ank ito . richt ext editor . JavaScript Executor Base Ċ import Ġnet . d ank ito . richt ext editor . callback . GetCurrent Html Callback Ċ import Ġnet . d ank ito . richt ext editor . model . Theme Ċ import Ġt orn ad of x .* ĊĊ Ċ open Ġclass ĠRich Text Editor Ġ: ĠV Box () Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġconst Ġval ĠDefault Html Ġ= ĠJavaScript Executor Base . Default Html ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprotected Ġvar ĠwebView Ġ= ĠWebView () ĊĊĠĠĠ Ġval Ġjava Script Executor Ġ= ĠJava FX JavaScript Executor ( web View ) ĊĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Html Editor () ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġsetup Html Editor () Ġ{ ĊĠĠĠĠĠĠĠ ĠminHeight Ġ= Ġ 2 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġpref Height Ġ= ĠRegion . USE _ COMP UT ED _ SIZE ĊĠĠĠĠĠĠĠ Ġuse Max Width Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġis Fill Width Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ ĠwebView . min Height Ġ= Ġ 2 0 0 . 0 ĊĠĠĠĠĠĠĠ ĠwebView . pref Height Ġ= ĠRegion . USE _ COMP UT ED _ SIZE ĊĠĠĠĠĠĠĠ ĠwebView . max Height Ġ= ĠDouble . MAX _ VALUE ĊĊĠĠĠĠĠĠĠ ĠwebView . is ContextMenu Enabled Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ ĠwebView . on ContextMenu Requested Ġ= ĠEventHandler < ContextMenu Event > Ġ{ Ġevent Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġdon 't Ġwhy Ġthese Ġin sets Ġare Ġneeded , Ġfigured Ġthem Ġout Ġby Ġtrial Ġan Ġerror Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġshow ContextMenu At Position ( event . x . toInt () Ġ- Ġ 1 4 , Ġevent . y . toInt () Ġ- Ġ 1 2 ) Ċ // ĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġthis . children . add ( web View ) ĊĠĠĠĠĠĠĠ ĠV Box . set V grow ( web View , ĠPriority . ALWAYS ) ĊĠĠĠĠĠĠĠ ĠwebView . pref Height Property (). bind ( this . height Property ()) ĊĠĠĠĠĠĠĠ ĠwebView . pref Width Property (). bind ( this . width Property ()) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġopen Ġfun Ġclean Up () Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView . engine . load Worker . cancel () ĊĊĠĠĠĠĠĠĠ ĠwebView . engine . load ("") Ġ// Ġto Ġstop Ġaudio Ġ/ Ġvideo Ġplayback Ġetc . ĊĠĠĠ Ġ} ĊĊĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġopen Ġfun Ġfocus Editor ( also Call JavaScript Focus Function : ĠBoolean Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠ ĠwebView . request Focus () ĊĊĠĠĠĠĠĠĠ Ġif ( also Call JavaScript Focus Function ) Ġ{ Ġ// ĠCalling Ġfocus () Ġchanges Ġeditor 's Ġstate , Ġthis Ġis Ġnot Ġdes irable Ġin Ġall Ġcircumstances ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexecute Editor JavaScript Function (" focus () ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/* ĠĠĠĠĠ ĠEditor Ġbase Ġsettings ĠĠĠĠĠĠĠ Ġ*/ ĊĊĠĠĠ Ġopen Ġfun Ġset Theme ( theme : ĠTheme ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Script Executor . set Theme ( theme ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Theme ( theme Name : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Script Executor . set Theme ( theme Name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Editor Font Family ( fontFamily : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute Editor JavaScript Function (" set Base Font Family ('$ fontFamily '); ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Editor FontSize ( px : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute Editor JavaScript Function (" set Base FontSize (' ${ px } px '); ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Padding ( padding : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġset Padding ( padding , Ġpadding , Ġpadding , Ġpadding ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġset Padding ( left : ĠDouble , Ġtop : ĠDouble , Ġright : ĠDouble , Ġbottom : ĠDouble ) Ġ{ ĊĠĠĠĠĠĠĠ Ġexecute Editor JavaScript Function (" set Padding (' ${ left } px ', Ġ'${ top } px ', Ġ'${ right } px ', Ġ'${ bottom } px '); ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġexecute Editor JavaScript Function ( java Script : ĠString , Ġresult Callback : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Script Executor . execute Editor JavaScript Function ( java Script , Ġresult Callback ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġopen Ġfun Ġset Html ( html : ĠString , ĠbaseUrl : ĠString ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Script Executor . set Html ( html , ĠbaseUrl ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġin Ġmost Ġcases Ġthe Ġmethod Ġyou Ġwant . ĊĠĠĠĠ Ġ* ĠQueries Ġunderlying ĠJavaScript Ġcode Ġfor Ġreal Ġcurrent Ġhtml Ġ( not Ġcached Ġone Ġas Ġget Cached Html ()). ĊĠĠĠĠ Ġ* ĠDue Ġto Ġthe Ġnature Ġof Ġunderlying ĠJavaScript Ġimplementation Ġthis Ġmethod Ġhas Ġto Ġbe Ġasynchronous . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġget Cached Html () Ġfor Ġexplanation Ġwhy Ġit 's Ġsensible Ġto Ġuse Ġthis Ġmethod . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠConvenience Ġmethod Ġfor ĠKotlin Ġusers . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun ĠgetCurrent Html Async ( callback : Ġ( String ) Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Script Executor . getCurrent Html Async ( callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġin Ġmost Ġcases Ġthe Ġmethod Ġyou Ġwant . ĊĠĠĠĠ Ġ* ĠQueries Ġunderlying ĠJavaScript Ġcode Ġfor Ġreal Ġcurrent Ġhtml Ġ( not Ġcached Ġone Ġas Ġget Cached Html ()). ĊĠĠĠĠ Ġ* ĠDue Ġto Ġthe Ġnature Ġof Ġunderlying ĠJavaScript Ġimplementation Ġthis Ġmethod Ġhas Ġto Ġbe Ġasynchronous . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġget Cached Html () Ġfor Ġexplanation Ġwhy Ġit 's Ġsensible Ġto Ġuse Ġthis Ġmethod . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun ĠgetCurrent Html Async ( callback : ĠGetCurrent Html Callback ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjava Script Executor . getCurrent Html Async ( callback ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBlocks Ġwhile Ġdoing Ġasync ĠgetCurrent Html Async () Ġcall . ĠYou Ġshouldn 't Ġcall Ġthis Ġon ĠUI Ġthread Ġas Ġtill Ġresponse Ġfrom ĠJavaScript Ġis Ġretrieved ĠUI Ġthread Ġis Ġblocked . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun ĠgetCurrent Html Blocking (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjava Script Executor . getCurrent Html Blocking () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġif Ġhtml Ġis Ġequal Ġto Ġhtml ĠRich Text Editor Ġsets Ġby Ġdefault Ġat Ġstart Ġ(< p > âĢĭ </ p >) ĊĠĠĠĠ Ġ* Ġso Ġthat ĠRich Text Editor Ġcan Ġbe Ġconsidered Ġas Ġ' empty '. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġfun Ġis Default Rich Text Editor Html ( html : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġjava Script Executor . is Default Rich Text Editor Html ( html ) ĊĠĠĠ Ġ} Ċ Ċ } Ċ