/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 0 . ĠJetBrains Ġs . r . o . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠMIT Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ Ġ*/ Ċ Ċ package Ġfrontend Context Demo Ċ Ċ import Ġjavafx . application . Platform Ċ import Ġjet brains . datal ore . plot . Mon ol ith ic A wt Ċ import Ġjet brains . datal ore . plot . builder . presentation . Style Ċ import Ġjet brains . datal ore . vis . svg . Svg Svg Element Ċ import Ġjet brains . datal ore . vis . swing . Scene Mapper J fx Panel Ċ import Ġjet brains . lets Plot . Frontend Context Ċ import Ġjava . awt . Color Ċ import Ġjava . awt . Dimension Ċ import Ġjava . awt . Flow Layout Ċ import Ġjavax . swing .* Ċ Ċ class ĠSw ing J fx Demo Frontend Context ( private Ġval Ġtitle : ĠString ) Ġ: ĠFrontend Context Ġ{ ĊĠĠĠ Ġprivate Ġval Ġplot Specs Ġ= ĠArrayList < Mutable Map < String , ĠAny >>() ĊĊĠĠĠ Ġoverride Ġfun Ġdisplay ( plot Spec Raw : ĠMutable Map < String , ĠAny >) Ġ{ ĊĠĠĠĠĠĠĠ Ġplot Specs . add ( plot Spec Raw ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow All () Ġ{ ĊĠĠĠĠĠĠĠ ĠSw ing Utilities . invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġframe Ġ= ĠJ Frame ( title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpanel Ġ= ĠJPanel () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpanel . layout Ġ= ĠBox Layout ( panel , ĠBox Layout . Y _ AXIS ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġbuild Ġplots ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( plot Spec Ġin Ġplot Specs ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcomponent Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMon ol ith ic A wt . build Plot From Raw Specs ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġplot Spec , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSVG _ COMPONENT _ FACTORY _ J FX , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJ FX _ ED T _ EXECUT OR , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠCOMP UT ATION _ MESSAGES _ HANDLER ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdecor ated Ġ= Ġobject Ġ: ĠJPanel ( Flow Layout ( 0 , Ġ 0 , Ġ 0 )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Minimum Size (): ĠDimension Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpreferred Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Maximum Size (): ĠDimension Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġpreferred Size ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecor ated . border Ġ= ĠBorder Factory . create Line Border ( Color . blue , Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdecor ated . add ( component ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel . add ( Box . create Rigid Area ( Dimension ( 0 , Ġ 5 ))) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpanel . add ( decor ated ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe . content Pane . add ( J ScrollPane ( panel )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe . default Close Operation Ġ= ĠWindow Constants . EXIT _ ON _ CLOSE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe . size Ġ= ĠFRAME _ SIZE ĊĠĠĠĠĠĠĠĠĠĠĠ Ġframe . isVisible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠSVG _ COMPONENT _ FACTORY _ J FX Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġsvg : ĠSvg Svg Element Ġ-> ĠScene Mapper J fx Panel ( svg , ĠlistOf ( Style . J FX _ PLOT _ STY LES HE ET )) Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠJ FX _ ED T _ EXECUT OR Ġ= Ġ{ Ġrunnable : Ġ() Ġ-> ĠUnit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( Platform . is Fx Application Thread ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrunnable . invoke () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPlatform . run Later ( run nable ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠCOMP UT ATION _ MESSAGES _ HANDLER : Ġ( List < String >) Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( message Ġin Ġit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" PLOT ĠMESSAGE : Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠFRAME _ SIZE Ġ= ĠDimension ( 7 0 0 , Ġ 7 0 0 ) ĊĠĠĠ Ġ} Ċ }