// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . openapi . file Editor . impl Ċ Ċ import Ġcom . intellij . Common Bundle Ċ import Ġcom . intellij . ide . Browser Util Ċ import Ġcom . intellij . ide . Ide Bundle Ċ import Ġcom . intellij . ide . plugins . Multi Panel Ċ import Ġcom . intellij . openapi . application . invoke Later Ċ import Ġcom . intellij . openapi . editor . Editor Bundle Ċ import Ġcom . intellij . openapi . file Editor . File Editor Ċ import Ġcom . intellij . openapi . file Editor . File Editor Location Ċ import Ġcom . intellij . openapi . file Editor . File Editor State Ċ import Ġcom . intellij . openapi . util . UserData Holder Base Ċ import Ġcom . intellij . openapi . util . registry . Registry Ċ import Ġcom . intellij . ui . components . JB Loading Panel Ċ import Ġcom . intellij . ui . j cef . J CE F Html Panel Ċ import Ġcom . intellij . util . Alarm Ċ import Ġcom . intellij . util . Alarm Factory Ċ import Ġorg . cef . browser . C ef Browser Ċ import Ġorg . cef . browser . C ef Frame Ċ import Ġorg . cef . handler . C ef Load Handler Adapter Ċ import Ġorg . cef . handler . C ef RequestHandler Adapter Ċ import Ġorg . cef . network . C ef Request Ċ import Ġjava . awt . Border Layout Ċ import Ġjava . beans . Property ChangeListener Ċ Ċ internal Ġclass ĠHTML File Editor Ġprivate Ġconstructor () Ġ: ĠUser Data Holder Base (), ĠFile Editor Ġ{ ĊĠ Ġprivate Ġval Ġloading Panel Ġ= ĠJ B Loading Panel ( Border Layout (), Ġthis ) ĊĠ Ġprivate Ġval Ġcontent Panel Ġ= ĠJ CE F Html Panel ( null ) ĊĠ Ġprivate Ġval Ġalarm Ġ= ĠAlarm Factory . getInstance (). create ( Alarm . Thread ToUse . SW ING _ THREAD , Ġthis ) ĊĊĠ Ġprivate Ġval Ġmulti Panel Ġ= Ġobject Ġ: ĠMulti Panel () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġcreate ( key : ĠInt ) Ġ= Ġwhen Ġ( key ) Ġ{ ĊĠĠĠĠĠ ĠLO ADING _ KEY Ġ-> Ġloading Panel ĊĠĠĠĠĠ ĠCONTENT _ KEY Ġ-> Ġcontent Panel . component ĊĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠIllegalArgumentException (" Unknown Ġkey : Ġ${ key }") ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġlateinit Ġvar Ġfallback : ĠString ĊĊĠ Ġconstructor ( html : ĠString ) Ġ: Ġthis () Ġ{ ĊĠĠĠ Ġcontent Panel . load HTML ( html ) ĊĠĠĠ Ġfallback Ġ= Ġ"" ĊĠ Ġ} ĊĊĠ Ġconstructor ( url : ĠString , Ġtimeout Html : ĠString ? Ġ= Ġnull ) Ġ: Ġthis () Ġ{ ĊĠĠĠ Ġcontent Panel . load URL ( url ) ĊĠĠĠ Ġfallback Ġ= Ġtimeout Html Ġ?: ĠEditor Bundle . message (" message . html . editor . timeout ") ĊĠ Ġ} ĊĊĠ Ġinit Ġ{ ĊĠĠĠ Ġloading Panel . set Loading Text ( Common Bundle . get Loading TreeNode Text ()) ĊĊĠĠĠ Ġcontent Panel . jb C ef Client . add Load Handler ( object Ġ: ĠC ef Load Handler Adapter () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun ĠonLoad Start ( browser : ĠC ef Browser , Ġframe : ĠC ef Frame , Ġtransition Type : ĠC ef Request . Transition Type ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fallback . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġalarm . add Request ({ Ġcontent Panel . set Html ( fallback )}, ĠRegistry . intValue (" html . editor . timeout ", Ġ 1 0 0 0 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun ĠonLoad End ( browser : ĠC ef Browser , Ġframe : ĠC ef Frame , Ġhttp StatusCode : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġalarm . cancel All Requests () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġon Loading StateChange ( browser : ĠC ef Browser , ĠisLoading : ĠBoolean , Ġcan Go Back : ĠBoolean , Ġcan Go Forward : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( isLoading ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Panel . start Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Panel . select ( LOADING _ KEY , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġinvoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġloading Panel . stop Loading () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmulti Panel . select ( CONTENT _ KEY , Ġtrue ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, Ġcontent Panel . cef Browser ) ĊĊĠĠĠ Ġcontent Panel . jb C ef Client . add RequestHandler ( object Ġ: ĠC ef RequestHandler Adapter () Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġon Before Browse ( browser : ĠC ef Browser , Ġframe : ĠC ef Frame , Ġrequest : ĠC ef Request , Ġuser Gesture : ĠBoolean , Ġis Redirect : ĠBoolean ): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġif Ġ( user Gesture ) Ġ{ ĠBrowser Util . browse ( request . url ); Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġfalse ĊĠĠĠ Ġ}, Ġcontent Panel . cef Browser ) ĊĊĠĠĠ Ġmulti Panel . select ( CONTENT _ KEY , Ġtrue ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Component (): ĠMulti Panel Ġ= Ġmulti Panel ĊĠ Ġoverride Ġfun Ġget Preferred Focused Component (): ĠMulti Panel Ġ= Ġmulti Panel ĊĠ Ġoverride Ġfun ĠgetName (): ĠString Ġ= ĠIde Bundle . message (" tab . title . html . preview ") ĊĠ Ġoverride Ġfun ĠsetState ( state : ĠFile Editor State ) Ġ{ Ġ} ĊĠ Ġoverride Ġfun Ġis Modified (): ĠBoolean Ġ= Ġfalse ĊĠ Ġoverride Ġfun ĠisValid (): ĠBoolean Ġ= Ġtrue ĊĠ Ġoverride Ġfun Ġadd Property ChangeListener ( listener : ĠProperty ChangeListener ) Ġ{ Ġ} ĊĠ Ġoverride Ġfun Ġremove Property ChangeListener ( listener : ĠProperty ChangeListener ) Ġ{ Ġ} ĊĠ Ġoverride Ġfun ĠgetCurrent Location (): ĠFile Editor Location ? Ġ= Ġnull ĊĠ Ġoverride Ġfun Ġdispose () Ġ{ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġprivate Ġconst Ġval ĠLO ADING _ KEY Ġ= Ġ 1 ĊĠĠĠ Ġprivate Ġconst Ġval ĠCONTENT _ KEY Ġ= Ġ 0 ĊĠ Ġ} Ċ } Ċ