/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġrespective Ġauthors Ġand Ġdevelopers . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . compose . desktop . ide . preview Ċ Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . components . Service Ċ import Ġorg . jetbrains . compose . desktop . ui . tool ing . preview . rpc . Frame Config Ċ import Ġorg . jetbrains . compose . desktop . ui . tool ing . preview . rpc . Preview Manager Ċ import Ġorg . jetbrains . compose . desktop . ui . tool ing . preview . rpc . Preview ManagerImpl Ċ import Ġjava . awt . Dimension Ċ import Ġjava . io . ByteArray InputStream Ċ import Ġjavax . image io . Image IO Ċ import Ġjavax . swing . J Component Ċ import Ġjavax . swing . event . Ancestor Event Ċ import Ġjavax . swing . event . Ancestor Listener Ċ Ċ @ Service Ċ class ĠPreview State Service Ġ: ĠDis posable Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġmy Panel : ĠPreview Panel ? Ġ= Ġnull ĊĠĠĠ Ġprivate Ġval Ġpreview Manager : ĠPreview Manager Ġ= ĠPreview ManagerImpl Ġ{ Ġframe Ġ-> ĊĠĠĠĠĠĠĠ ĠByteArrayInputStream ( frame . bytes ). use Ġ{ Ġinput Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġimage Ġ= ĠImage IO . read ( input ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmy Panel ?. preview Image ( image , ĠDimension ( frame . width , Ġframe . height )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġgradle Callback Port : ĠInt ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġpreview Manager . gradle Callback Port ĊĊĠĠĠ Ġprivate Ġval Ġmy Listener Ġ= Ġobject Ġ: ĠAn cestor Listener Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġupdate Frame Size ( c : ĠJ Component ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġframe Config Ġ= ĠFrame Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth Ġ= Ġc . width , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight Ġ= Ġc . height , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscale Ġ= Ġc . graphics Configuration . default Transform . scale X ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpreview Manager . update Frame Config ( frame Config ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġancestor Added ( event : ĠAn cestor Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Frame Size ( event . component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġancestor Removed ( event : ĠAn cestor Event ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġancestor Moved ( event : ĠAn cestor Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Frame Size ( event . component ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Panel ?. remove Ancestor Listener ( my Listener ) ĊĠĠĠĠĠĠĠ Ġpreview Manager . close () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġregister Preview Panel ( panel : ĠPreview Panel ) Ġ{ ĊĠĠĠĠĠĠĠ Ġmy Panel Ġ= Ġpanel ĊĠĠĠĠĠĠĠ Ġpanel . add Ancestor Listener ( my Listener ) ĊĠĠĠ Ġ} Ċ } Ċ