// ĠCopyright Ġ 2 0 0 0 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ġand Ġcontributors . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . ui . preview Ċ Ċ import Ġcom . intellij . code With Me . ClientId Ċ import Ġcom . intellij . openapi . application . Application Manager . getApplication Ċ import Ġcom . intellij . openapi . application . Modal ity State . state For Component Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . editor . Editor Factory Ċ import Ġcom . intellij . openapi . editor . Editor Kind Ċ import Ġcom . intellij . openapi . editor . colors . Editor Colors Util Ċ import Ġcom . intellij . openapi . editor . ex . Editor Ex Ċ import Ġcom . intellij . openapi . editor . highlighter . Editor Highlight er Factory Ċ import Ġcom . intellij . openapi . file Editor . Open FileDescriptor Ċ import Ġcom . intellij . openapi . ui . Splitter Ċ import Ġcom . intellij . psi . Psi Document Manager Ċ import Ġcom . intellij . psi . Psi Manager Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġkotlin . properties . Deleg ates . observable Ċ Ċ class ĠDescriptor Preview ( val Ġsplit ter : ĠSplit ter , Ġval Ġeditable : ĠBoolean , Ġval Ġid : ĠClient Id ?) Ġ{ ĊĊĠ Ġfun Ġeditor () Ġ= Ġeditor ĊĠ Ġfun Ġclose () Ġ= Ġopen ( null ) ĊĠ Ġfun Ġopen ( descriptor : ĠOpen FileDescriptor ?) Ġ{ ĊĠĠĠ Ġthis . descriptor Ġ= Ġdescriptor ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġeditor : ĠEditor ? Ġby Ġobservable ( null ) Ġ{ Ġ_, Ġold Editor , Ġnew Editor Ġ-> ĊĠĠĠ Ġif Ġ( old Editor Ġ!== Ġnew Editor ) Ġ{ ĊĠĠĠĠĠ Ġold Editor ?. let Ġ{ ĠEditor Factory . getInstance (). release Editor ( it ) Ġ} ĊĠĠĠĠĠ Ġsplit ter . second Component Ġ= Ġnew Editor ?. component ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġdescriptor : ĠOpen FileDescriptor ? Ġby Ġobservable ( null ) Ġ{ Ġ_, Ġold Descriptor , Ġnew Descriptor Ġ-> ĊĠĠĠ Ġif Ġ( old Descriptor Ġ!== Ġnew Descriptor ) Ġ{ ĊĠĠĠĠĠ Ġval Ġnew Editor Ġ= Ġwhen Ġ( new Descriptor ?. file ) Ġ{ ĊĠĠĠĠĠĠĠ Ġold Descriptor ?. file Ġ-> Ġeditor ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġnew Descriptor ?. prepare Preview Editor ( editor ). also Ġ{ Ġeditor Ġ= Ġit Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( new Editor Ġ!= Ġnull Ġ&& Ġnew Descriptor ?. range Marker Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġget Application (). invoke Later ({ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( new Descriptor Ġ=== Ġdescriptor Ġ&& Ġnew Editor Ġ=== Ġeditor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠClient Id . with ClientId ( id ) Ġ{ Ġnew Descriptor . navigate In ( new Editor ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġstate For Component ( splitter )) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠOpen FileDescriptor . prepare Preview Editor ( old : ĠEditor ?): ĠEditor ? Ġ{ ĊĠĠĠ Ġif Ġ(! file . isValid Ġ|| Ġfile . isDirectory Ġ|| Ġproject . is Disposed ) Ġreturn Ġnull ĊĠĠĠ Ġval Ġpsi Ġ= ĠPsi Manager . getInstance ( project ). find File ( file ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġdocument Ġ= ĠPsi Document Manager . getInstance ( project ). getDocument ( psi ) Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġval Ġreuse Ġ= Ġold ?. let Ġ{ Ġ! it . is Disposed Ġ&& Ġit . document Ġ=== Ġdocument Ġ} Ġ?: Ġfalse ĊĠĠĠ Ġif Ġ( reuse ) Ġreturn Ġold ĊĊĠĠĠ Ġval Ġeditor Ġ= Ġwhen Ġ( editable ) Ġ{ ĊĠĠĠĠĠ Ġtrue Ġ-> ĠEditor Factory . getInstance (). create Editor ( document , Ġproject , ĠEditor Kind . PRE VIEW ) ĊĠĠĠĠĠ Ġelse Ġ-> ĠEditor Factory . getInstance (). create Viewer ( document , Ġproject , ĠEditor Kind . PRE VIEW ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( editor Ġis ĠEditor Ex ) Ġ{ ĊĠĠĠĠĠ Ġval Ġscheme Ġ= ĠEditor Colors Util . getGlobal OrDefault Color Scheme () ĊĠĠĠĠĠ Ġeditor . colors Scheme Ġ= Ġscheme ĊĠĠĠĠĠ Ġeditor . highlighter Ġ= ĠEditor Highlight er Factory . getInstance (). create Editor Highlight er ( file , Ġscheme , Ġproject ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġwith ( editor . settings ) Ġ{ ĊĠĠĠĠĠ Ġis Animated Scrolling Ġ= Ġfalse ĊĠĠĠĠĠ Ġis Ref rain From Scrolling Ġ= Ġfalse ĊĠĠĠĠĠ Ġis Line Numbers Shown Ġ= Ġtrue ĊĠĠĠĠĠ Ġis Fold ing Outline Shown Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġeditor . setBorder ( J BU I . B orders . empty ()) ĊĠĠĠ Ġreturn Ġeditor ĊĠ Ġ} Ċ } Ċ