package Ġio . un th rott led . dok i . notification Ċ Ċ import Ġcom . intellij . ide . plugins . PluginManager Core . get Plugin Ċ import Ġcom . intellij . ide . plugins . PluginManager Core . get Plugin Or Platform By ClassName Ċ import Ġcom . intellij . notification . Notification Group Manager Ċ import Ġcom . intellij . notification . Notification Listener Ċ import Ġcom . intellij . notification . Notification Type Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . file Editor . impl . HT MLE d itor Provider Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . project . Project Manager Ċ import Ġcom . intellij . openapi . wm . impl . Ide Background Util Ċ import Ġcom . intellij . ui . Color Util Ċ import Ġcom . intellij . ui . JB Color Ċ import Ġcom . intellij . util . ui . UI Util Ċ import Ġio . un th rott led . dok i . icon . D oki Icons Ċ import Ġio . un th rott led . dok i . prom otions . Message Bundle Ċ import Ġio . un th rott led . dok i . themes . Background Ċ import Ġio . un th rott led . dok i . themes . D oki Theme Ċ import Ġio . un th rott led . dok i . themes . Theme Manager Ċ import Ġio . un th rott led . dok i . util . to HexString Ċ import Ġorg . intellij . lang . annotations . Language Ċ import Ġorg . jetbrains . annotations . N ls Ċ import Ġjava . awt . Color Ċ Ċ @ Suppress (" Long Method ", Ġ" Max Line Length ") Ċ @ Language (" HTML ") Ċ private Ġfun Ġbuild Update Message ( ĊĠ Ġcurrent Theme : ĠD oki Theme , ĊĠ Ġis New User : ĠBoolean , ĊĠ Ġversion Number : ĠString , Ċ ): ĠString Ġ{ ĊĠ Ġval Ġaccent Color Ġ= ĠJ B Color . named Color ( ĊĠĠĠ ĠD oki Theme . ACC ENT _ COLOR , ĊĠĠĠ ĠUI Util . getText Area Foreground () ĊĠ Ġ) ĊĠ Ġval Ġdark er Accent Color Ġ= ĠColor Util . dark er ( accent Color , Ġ 1 ). to HexString () ĊĠ Ġval Ġaccent Hex Ġ= Ġaccent Color . to HexString () ĊĠ Ġval Ġstroke Color Ġ= ĠJ B Color . named Color (" D oki . Icon . Accent . Contrast . color ", ĠColor . WHITE ) ĊĠĠĠ Ġ. to HexString () ĊĠ Ġval Ġinfo Foreground Hex Ġ= ĠUI Util . getContext Help Foreground (). to HexString () ĊĠ Ġval Ġbackground Ġ= Ġcurrent Theme . get Background (). orElse ( ĊĠĠĠ ĠBackground (" es sex _ dark . png ", ĠIde Background Util . Anchor . MIDDLE _ RIGHT , Ġ 1 ) ĊĠ Ġ) ĊĊĠ Ġval Ġg reeting Ġ= Ġif Ġ( isNew User ) Ġ{ ĊĠĠĠ Ġ// language = html ĊĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġ< p > L ooks Ġlike Ġyou Ġare Ġnew , Ġ< strong > welcome !</ strong > ĠYou Ġnow Ġhave Ġa Ġ< em > lot </ em > Ġof Ġthemes Ġnow .< br Ġ/> ĊĠĠĠĠĠĠĠĠĠ ĠFeel Ġfree Ġto Ġbrowse Ġ< br Ġ/> Ġ< a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhref =" https :// dok i - theme . un th rott led . io / themes "> https :// dok i - theme . un th rott led . io / themes </ a ></ p > ĊĠĠĠ Ġ""" . trim Indent () ĊĠ Ġ} Ġelse Ġ{ ĊĠĠĠ Ġ// language = html ĊĠĠĠ Ġ""" ĊĠĠĠĠĠ Ġ< p >< strong > Thank ĠYou </ strong > Ġfor Ġupdating ! ĠI Ġchanged Ġsome Ġthings .< br Ġ/> ĊĠĠĠĠĠĠĠĠĠ ĠYou Ġcan Ġfind Ġmore Ġinformation Ġhere : Ġ< br Ġ/> Ġ< a ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhref =" https :// dok i - theme . un th rott led . io / products / jetbrains / updates /$ version Number ? theme Id =${ current Theme . id }"> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhttps :// dok i - theme . un th rott led . io / products / jetbrains / updates /$ version Number ĊĠĠĠĠĠ Ġ</ a ></ p > ĊĠĠĠ Ġ""" . trim Indent () ĊĠ Ġ} ĊĊĠ Ġreturn Ġ""" ĊĠ Ġ< html Ġlang =' en '> ĊĊĠ Ġ< head > ĊĠĠĠĠĠ Ġ< meta Ġcharset =" utf - 8 "/> ĊĠĠĠĠĠ Ġ< style > ĊĠĠĠĠĠĠĠĠĠ Ġ@ font - face Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - family : Ġ" V ictor ĠMono "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc : Ġurl (" https :// dok i - theme . un th rott led . io / v ictor - mono / V ictor Mono - Medium Italic . woff ") Ġformat (" woff "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - weight : Ġ 3 0 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - style : Ġitalic ; ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġ@ font - face Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - family : Ġ" V ictor ĠMono "; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc : Ġurl (" https :// dok i - theme . un th rott led . io / v ictor - mono / V ictor Mono - Medium . woff ") Ġformat (" woff "); ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - weight : Ġ 7 0 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - style : Ġnormal ; ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĊĠĠ ĊĠĠĠĠĠĠĠĠĠ Ġbody Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground - color : Ġ${ current Theme . getColor (" base Background "). to HexString ()}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmargin : Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - size : Ġlarge ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ${ current Theme . getColor (" foreground Color "). to HexString ()}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbox - sizing : Ġborder - box ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfont - family : Ġ- apple - system , ĠB link Mac System Font , Ġ" Segoe ĠUI ", ĠRob oto , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠO xygen - Sans , ĠUbuntu , ĠC ant are ll , Ġ" Helvetica ĠNeue ", Ġsans - serif ; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext - align : Ġcenter ; ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠ ĊĠĠĠĠĠĠĠĠĠ Ġ* ::- webkit - scrollbar - thumb Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground - color : Ġ${ current Theme . getColor (" accent Color Transparent "). to HexString ()}; ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġ* ::- webkit - scrollbar Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth : Ġ 0 . 5 em ; ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġ:: - moz - selection Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbackground : Ġ${ current Theme . getColor (" selection Background "). to HexString ()}; ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ${ current Theme . getColor (" selection Foreground "). to HexString ()}; ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĊĠĠ ĊĠĠ ĊĠĠĠĠĠĠĠĠĠ Ġ:: selection Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġbackground : Ġ${ current Theme . getColor (" selection Background "). to HexString ()}; ĊĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ${ current Theme . getColor (" selection Foreground "). to HexString ()}; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. center Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtext - align : Ġcenter ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġa Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ${ current Theme . editor Accent Color . to HexString ()}; ĊĠĠĠĠĠĠĠĠĠ Ġfont - weight : Ġbold ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġh 2 Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmargin : Ġ 1 6 px Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - weight : Ġ 3 0 0 ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - size : Ġ 2 2 px ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġh 3 Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmargin : Ġ 4 px Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - weight : Ġbold ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - size : Ġ 1 4 px ; ĊĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ${ current Theme . getColor (" info Foreground "). to HexString ()} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. accent ed Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ${ current Theme . editor Accent Color . to HexString ()}; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. info - foreground Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ$ info Foreground Hex ; ĊĠĠĠĠĠĠĠĠĠ Ġtext - align : Ġcenter ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. header Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcolor : Ġ${ current Theme . editor Accent Color . to HexString ()}; ĊĠĠĠĠĠĠĠĠĠ Ġtext - align : Ġcenter ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. logo - container Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmargin - top : Ġ 8 px ; ĊĠĠĠĠĠĠĠĠĠ Ġtext - align : Ġcenter ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. display - image Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmax - height : Ġ 2 5 6 px ; ĊĠĠĠĠĠĠĠĠĠ Ġtext - align : Ġcenter ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ# main Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġposition : Ġfixed Ġ! important ; ĊĠĠĠĠĠĠĠĠĠ Ġwidth : Ġ 1 0 0 %; ĊĠĠĠĠĠĠĠĠĠ Ġheight : Ġ 1 0 0 %; ĊĠĠĠĠĠĠĠĠĠ Ġz - index : Ġ- 3 ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmain Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpadding : Ġ 2 rem ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ. wall paper Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġposition : Ġfixed ; ĊĠĠĠĠĠĠĠĠĠ Ġwidth : Ġ 1 0 0 %; ĊĠĠĠĠĠĠĠĠĠ Ġheight : Ġ 1 0 0 %; ĊĠĠĠĠĠĠĠĠĠ Ġz - index : Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠ Ġtop : Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠ Ġleft : Ġ 0 ; ĊĠĠĠĠĠĠĠĠĠ Ġbackground : Ġurl (' https :// dok i . assets . un th rott led . io / background s / wall papers / transparent / sm ol /${ background . name }') Ġ${ get Anchor ( background . position )}; ĊĠĠĠĠĠĠĠĠĠ Ġbackground - size : Ġcover ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ# background Image Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġz - index : Ġ- 2 ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġh 1 Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfont - size : Ġ 3 rem ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - weight : Ġ 3 0 0 ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġp Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġmargin - bottom : Ġ 2 rem ; ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġh 3 Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġpadding - top : Ġ 1 rem ; ĊĠĠĠĠĠĠĠĠĠ Ġmargin - bottom : Ġ 2 rem ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - weight : Ġ 5 0 0 ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - size : Ġ 1 . 2 5 rem ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - family : Ġ" V ictor ĠMono ", Ġ" Courier ĠNew ", ĠCour ier , Ġmonospace ; ĊĠĠĠĠĠĠĠĠĠ Ġfont - style : Ġitalic ; ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ</ style > ĊĠĠĠĠĠ Ġ< script > ĊĠĠĠĠĠĠĠ Ġlet Ġprevious Listener ; ĊĊĠĠĠĠĠĠĠ Ġfunction Ġdraw Background () Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġconst Ġbackground Canvas Ġ= Ġdocument . getElementById ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" background Image " ĊĠĠĠĠĠĠĠĠĠ Ġ); ĊĠĠĠĠĠĠĠĠĠ Ġconst Ġctx Ġ= Ġbackground Canvas . getContext (" 2 d "); ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ(! ctx ) Ġreturn ; ĊĠĠĠĠĠĠĠĠĠ Ġconst Ġmain Canvas Ġ= Ġdocument . getElementById (" main "); ĊĠĠĠĠĠĠĠĠĠ Ġif Ġ(! main Canvas ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ; ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġconst Ġbounding Rect Ġ= Ġmain Canvas . getBoundingClientRect (); ĊĠĠĠĠĠĠĠĠĠ Ġconst Ġw Ġ= Ġbounding Rect . width ; ĊĠĠĠĠĠĠĠĠĠ Ġconst Ġh Ġ= Ġbounding Rect . height ; ĊĊĠĠĠĠĠĠĠĠĠ Ġbackground Canvas . setAttribute (' width ', ĠString ( w )); ĊĠĠĠĠĠĠĠĠĠ Ġbackground Canvas . setAttribute (' height ', ĠString ( h )) ĊĊ ĊĠĠĠĠĠĠĠĠĠ Ġctx . clear Rect ( 0 , Ġ 0 , Ġw , Ġh ); ĊĠĠĠĠĠĠĠĠĠ Ġctx . beginPath (); ĊĠĠĠĠĠĠĠĠĠ Ġctx . moveTo ( 0 , Ġh Ġ* Ġ 0 . 8 5 ); ĊĠĠĠĠĠĠĠĠĠ Ġctx . quadr atic Curve To ( w Ġ/ Ġ 1 . 8 5 , Ġh , Ġw , Ġh Ġ/ Ġ 2 ); ĊĠĠĠĠĠĠĠĠĠ Ġctx . lineTo ( w , Ġh ); ĊĠĠĠĠĠĠĠĠĠ Ġctx . lineTo ( 0 , Ġh ); ĊĊĠĠĠĠĠĠĠĠĠ Ġconst Ġcolor Ġ= Ġ'${ current Theme . getColor (" header Color "). to HexString () }' ĊĠĠĠĠĠĠĠĠĠ Ġctx . fillStyle Ġ= Ġcolor ; ĊĠĠĠĠĠĠĠĠĠ Ġctx . stroke Style Ġ= Ġcolor ; ĊĠĠĠĠĠĠĠĠĠ Ġctx . fill (); ĊĠĠĠĠĠĠĠĠĠ Ġctx . close Path (); ĊĠĠĠĠĠĠĠĠĠ Ġctx . stroke (); ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdocument . addEventListener (" DOM Content Loaded ", Ġ() Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġdraw Background (); ĊĠĠĠĠĠĠĠĠĠ Ġconst Ġlistener Ġ= Ġ() Ġ=> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdraw Background (); ĊĠĠĠĠĠĠĠĠĠ Ġ}; ĊĠĠĠĠĠĠĠĠĠ Ġprevious Listener Ġ= Ġlistener ; ĊĠĠĠĠĠĠĠĠĠ Ġwindow . addEventListener (' resize ', Ġlistener ); ĊĠĠĠĠĠĠĠ Ġ}); ĊĠĠĠĠĠ Ġ</ script > ĊĠĠĠ Ġ</ head > ĊĊĠĠĠ Ġ< body > ĊĠĠĠĠĠ Ġ< div Ġid =" main "> ĊĠĠĠĠĠĠĠ Ġ< canvas Ġid =" background Image " Ġwidth =" 1 5 0 " Ġheight =" 1 5 0 "></ canvas > ĊĠĠĠĠĠĠĠ Ġ< div Ġclass =" wall paper "></ div > ĊĠĠĠĠĠ Ġ</ div > ĊĠĠĠĠĠ Ġ< main > ĊĠĠĠĠĠĠĠ Ġ< h 1 > The ĠD oki ĠTheme </ h 1 > ĊĠĠĠĠĠĠĠ Ġ< svg Ġstyle =" width : Ġ 1 0 0 %; Ġheight : Ġ 1 0 0 %; Ġmax - height : Ġ 1 4 5 px ;" Ġversion =" 1 . 1 " ĠviewBox =" 0 Ġ 0 Ġ 5 4 . 2 7 5 Ġ 5 9 . 2 8 1 " ĊĠĠĠĠĠĠĠĠĠ Ġxmlns =" http :// www . w 3 . org / 2 0 0 0 / svg "> ĊĠĠĠĠĠĠĠĠĠ Ġ< path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd =" m 5 2 . 5 7 7 Ġ 1 4 . 9 5 2 c 1 . 9 0 9 5 Ġ 3 . 3 0 7 3 Ġ 1 . 9 0 9 5 Ġ 2 6 . 0 6 9 Ġ 0 Ġ 2 9 . 3 7 5 - 1 . 9 0 9 5 Ġ 3 . 3 0 6 9 - 2 1 . 6 2 3 Ġ 1 4 . 6 8 8 - 2 5 . 4 4 1 Ġ 1 4 . 6 8 8 - 3 . 8 1 8 9 Ġ 0 - 2 3 . 5 3 2 - 1 1 . 3 8 1 - 2 5 . 4 4 1 - 1 4 . 6 8 8 - 1 . 9 0 9 5 - 3 . 3 0 7 3 - 1 . 9 0 9 5 - 2 6 . 0 6 9 Ġ 0 - 2 9 . 3 7 5 Ġ 1 . 9 0 9 5 - 3 . 3 0 7 3 Ġ 2 1 . 6 2 3 - 1 4 . 6 8 8 Ġ 2 5 . 4 4 1 - 1 4 . 6 8 8 Ġ 3 . 8 1 8 9 Ġ 0 Ġ 2 3 . 5 3 2 Ġ 1 1 . 3 8 1 Ġ 2 5 . 4 4 1 Ġ 1 4 . 6 8 8 z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill ="$ accent Hex " Ġstroke - width =". 1 2 4 8 " Ġstyle =" paint - order : stroke Ġfill Ġmarkers " Ġ/> ĊĠĠĠĠĠĠĠĠĠ Ġ< path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd =" m 4 5 . 8 5 4 Ġ 9 . 5 9 8 7 c 0 . 0 3 8 7 3 Ġ 0 . 1 0 7 5 5 Ġ 0 . 0 7 8 0 4 Ġ 0 . 2 1 4 8 9 Ġ 0 . 1 1 4 2 Ġ 0 . 3 2 3 5 Ġ 0 . 7 3 8 3 4 Ġ 0 . 6 8 9 1 - 6 . 4 5 7 9 Ġ 3 2 . 4 1 6 - 4 5 . 0 9 Ġ 2 6 . 5 - 0 . 1 7 9 1 4 - 0 . 5 4 1 2 8 - 0 . 3 4 6 4 9 - 1 . 0 7 4 - 0 . 5 0 8 5 - 1 . 6 0 3 Ġ 0 . 1 8 8 3 5 Ġ 4 . 4 9 5 7 Ġ 0 . 6 2 7 8 2 Ġ 8 . 3 0 0 7 Ġ 1 . 3 2 4 5 Ġ 9 . 5 0 7 4 Ġ 1 . 9 0 9 Ġ 3 . 3 0 7 Ġ 2 1 . 6 2 3 Ġ 1 4 . 6 8 8 Ġ 2 5 . 4 4 1 Ġ 1 4 . 6 8 8 Ġ 3 . 8 1 8 2 Ġ 0 Ġ 2 3 . 5 3 2 - 1 1 . 3 8 1 Ġ 2 5 . 4 4 1 - 1 4 . 6 8 8 Ġ 1 . 9 0 9 5 - 3 . 3 0 5 9 Ġ 1 . 9 0 9 5 - 2 6 . 0 6 8 Ġ 0 - 2 9 . 3 7 6 - 0 . 6 4 3 3 - 1 . 1 1 4 4 - 3 . 3 2 6 3 - 3 . 1 5 0 1 - 6 . 7 2 3 5 - 5 . 3 5 3 5 z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill ="$ dark er Accent Color " Ġstroke - width =". 1 2 4 8 " Ġstyle =" paint - order : stroke Ġfill Ġmarkers " Ġ/> ĊĠĠĠĠĠĠĠĠĠ Ġ< path ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd =" m 2 7 . 3 6 3 Ġ 2 1 . 7 3 8 c 0 . 8 6 6 4 1 - 0 . 4 7 5 9 7 Ġ 3 . 7 8 7 7 - 2 . 4 0 1 6 Ġ 8 . 0 5 6 - 3 . 3 7 6 3 Ġ 9 . 8 4 0 8 - 2 . 2 4 7 2 Ġ 1 3 . 6 2 3 Ġ 8 . 6 0 3 Ġ 7 . 8 2 0 7 Ġ 1 6 . 7 8 5 - 5 . 1 8 4 1 Ġ 5 . 9 5 3 - 1 0 . 5 6 5 Ġ 8 . 6 8 7 6 - 1 5 . 8 7 7 Ġ 1 2 . 2 1 - 5 . 3 1 1 4 - 3 . 5 2 2 3 - 1 0 . 6 9 2 - 6 . 2 5 7 - 1 5 . 8 7 7 - 1 2 . 2 1 - 5 . 8 0 2 8 - 8 . 1 8 1 4 - 2 . 0 2 - 1 9 . 0 3 1 Ġ 7 . 8 2 0 7 - 1 6 . 7 8 5 Ġ 4 . 2 6 8 3 Ġ 0 . 9 7 4 6 6 Ġ 7 . 1 8 9 5 Ġ 2 . 9 0 0 3 Ġ 8 . 0 5 6 Ġ 3 . 3 7 6 3 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill ="$ accent Hex " Ġstroke ="$ stroke Color " Ġstroke - dash array =" 1 0 . 8 3 4 9 3 5 0 1 , Ġ 5 . 4 1 7 4 6 7 5 1 , Ġ 2 . 7 0 8 7 3 3 7 5 , Ġ 5 . 4 1 7 4 6 7 5 1 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstroke - line cap =" round " Ġstroke - mit er limit =" 6 " Ġstroke - width =" 2 . 7 0 8 7 " Ġstyle =" paint - order : stroke Ġfill Ġmarkers " Ġ/> ĊĠĠĠĠĠĠĠĠĠ Ġ< path Ġtransform =" matrix (. 2 6 4 5 8 Ġ 0 Ġ 0 Ġ. 2 6 4 5 8 Ġ-. 0 0 0 1 0 6 9 7 Ġ 0 )" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd =" m 1 6 1 . 0 3 Ġ 7 3 . 6 8 4 c - 1 5 . 8 Ġ 2 7 . 9 2 - 4 8 . 5 4 6 Ġ 6 2 . 4 0 3 - 1 1 0 . 9 1 Ġ 6 6 . 3 6 1 Ġ 1 7 . 5 0 8 Ġ 1 7 . 6 6 6 Ġ 3 5 . 5 0 7 Ġ 2 7 . 1 4 5 Ġ 5 3 . 3 0 1 Ġ 3 8 . 9 4 5 Ġ 2 0 . 0 7 7 - 1 3 . 3 1 3 Ġ 4 0 . 4 1 4 - 2 3 . 6 4 8 Ġ 6 0 . 0 0 8 - 4 6 . 1 4 8 Ġ 1 5 . 2 7 6 - 2 1 . 5 4 1 Ġ 1 2 . 9 7 - 4 7 . 9 7 - 2 . 4 0 2 4 - 5 9 . 1 5 8 z " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill ="$ dark er Accent Color " Ġstyle =" paint - order : stroke Ġfill Ġmarkers " Ġ/> ĊĠĠĠĠĠĠĠ Ġ</ svg > ĊĠĠĠĠĠĠĠ Ġ< h 3 > A Ġlarge Ġcollection Ġof Ġthemes Ġbuilt Ġwith Ġlove Ġand Ġcare </ h 3 > ĊĊĠĠĠĠĠĠĠ Ġ< p > Unfortunately , ĠI Ġwas Ġunable Ġto Ġload Ġyour Ġupdate .< br Ġ/> ĊĠĠĠĠĠĠĠĠĠ ĠSo Ġyou Ġare Ġstuck Ġwith Ġme , Ġthe Ġoffline Ġfallback .</ p > ĊĠĠĠĠĠĠĠ Ġ$ greeting ĠĠĊĠĠĠĠĠ Ġ</ main > ĊĠĠĠ Ġ</ body > ĊĊĠĠĠ Ġ</ html > ĊĠ Ġ""" . trim Indent () Ċ } Ċ Ċ fun Ġget Anchor ( position : ĠIde Background Util . Anchor ): ĠString Ġ{ ĊĠ Ġreturn Ġwhen Ġ( position ) Ġ{ ĊĠĠĠ ĠIde Background Util . Anchor . MIDDLE _ LEFT Ġ-> Ġ" left " ĊĠĠĠ ĠIde Background Util . Anchor . MIDDLE _ RIGHT Ġ-> Ġ" right " ĊĠĠĠ Ġelse Ġ-> Ġ" center " ĊĠ Ġ} Ċ } Ċ Ċ object ĠUpdate Notification Ġ{ ĊĊĠ Ġprivate Ġval Ġnotification Group Ġ= ĠNotification Group Manager . getInstance () ĊĠĠĠ Ġ. get Notification Group (" D oki ĠTheme ĠUpdates ") ĊĊĠ Ġprivate Ġval Ġdefault Listener Ġ= ĠNotification Listener . Url Opening Listener ( false ) ĊĊĠ Ġprivate Ġfun Ġshow D oki Notification ( ĊĠĠĠ Ġ@ N ls ( capital ization Ġ= ĠN ls . Capital ization . Sentence ) Ġtitle : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ@ N ls ( capital ization Ġ= ĠN ls . Capital ization . Sentence ) Ġcontent : ĠString , ĊĠĠĠ Ġproject : ĠProject ? Ġ= Ġnull , ĊĠĠĠ Ġlistener : ĠNotification Listener Ġ= Ġdefault Listener , ĊĠĠĠ Ġactions : ĠList < An Action > Ġ= Ġempty List (), ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġnotification Ġ= Ġnotification Group . create Notification ( ĊĠĠĠĠĠ Ġcontent , ĊĠĠĠĠĠ ĠNotification Type . INFORMATION , ĊĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. setTitle ( title ) ĊĠĠĠĠĠ Ġ. set Listener ( listener ) ĊĠĠĠĠĠ Ġ. setIcon ( D oki Icons . General . PLUGIN _ LOG O ) ĊĠĠĠ Ġactions . forEach Ġ{ ĊĠĠĠĠĠ Ġnotification . addAction ( it ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġnotification . is Important Ġ= Ġtrue ĊĠĠĠ Ġnotification . notify ( project ) ĊĠ Ġ} ĊĊĠ Ġfun Ġshow Notification Ac ross Projects ( ĊĠĠĠ Ġ@ N ls ( capital ization Ġ= ĠN ls . Capital ization . Sentence ) Ġtitle : ĠString Ġ= Ġ"", ĊĠĠĠ Ġ@ N ls ( capital ization Ġ= ĠN ls . Capital ization . Sentence ) Ġcontent : ĠString , ĊĠĠĠ Ġlistener : ĠNotification Listener Ġ= Ġdefault Listener , ĊĠĠĠ Ġactions : ĠList <( Project ?) Ġ-> ĠAn Action > Ġ= Ġempty List () ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠProject Manager . getInstance (). open Projects . forEach Ġ{ Ġproject Ġ-> ĊĠĠĠĠĠ Ġshow D oki Notification ( title , Ġcontent , Ġproject , Ġlistener , Ġactions . map Ġ{ Ġit ( project ) Ġ}) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun ĠsendMessage ( ĊĠĠĠ Ġtitle : ĠString , ĊĠĠĠ Ġmessage : ĠString , ĊĠĠĠ Ġproject : ĠProject ? Ġ= Ġnull ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġshow D oki Notification ( ĊĠĠĠĠĠ Ġtitle , ĊĠĠĠĠĠ Ġmessage , ĊĠĠĠĠĠ Ġproject Ġ= Ġproject , ĊĠĠĠĠĠ Ġlistener Ġ= Ġdefault Listener ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun Ġdisplay ( ĊĠĠĠ Ġproject : ĠProject , ĊĠĠĠ Ġnew Version : ĠString , ĊĠĠĠ Ġis New User : ĠBoolean , ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġplugin Name Ġ= ĊĠĠĠĠĠ Ġget Plugin ( ĊĠĠĠĠĠĠĠ Ġget Plugin Or Platform By ClassName ( Update Notification :: class . java . canonical Name ) ĊĠĠĠĠĠ Ġ) ?. name ĊĠĠĠ Ġval Ġcurrent Theme Ġ= ĠTheme Manager . instance . current Theme . orElse ( Theme Manager . instance . default Theme ) ĊĠĠĠ Ġval Ġcontent Ġ= Ġbuild Update Message ( current Theme , Ġis New User , Ġnew Version ) ĊĊĠĠĠ Ġval Ġurl Parameters Ġ= ĊĠĠĠĠĠ Ġif Ġ( isNew User ) Ġ"" ĊĠĠĠĠĠ Ġelse Ġ"/ products / jetbrains / updates /$ new Version " ĊĠĠĠ ĠHT MLE d itor Provider . open Editor ( ĊĠĠĠĠĠ Ġproject , ĊĠĠĠĠĠ Ġ"$ plugin Name ĠUpdate ", ĊĠĠĠĠĠ Ġ" https :// dok i - theme . un th rott led . io $ url Parameters ? theme Id =${ current Theme . id }", ĊĠĠĠĠĠ Ġcontent , ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun Ġdisplay Restart Message () Ġ{ ĊĠĠĠ Ġshow D oki Notification ( ĊĠĠĠĠĠ ĠMessage Bundle . getMessage (" notification . restart . title "), ĊĠĠĠĠĠ ĠMessage Bundle . getMessage (" notification . restart . body "), ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun Ġdisplay Animation Install Message () Ġ{ ĊĠĠĠ Ġshow D oki Notification ( ĊĠĠĠĠĠ ĠMessage Bundle . getMessage (" notification . animation . install . title "), ĊĠĠĠĠĠ ĠMessage Bundle . getMessage (" notification . animation . install . body "), ĊĠĠĠ Ġ) ĊĠ Ġ} ĊĊĠ Ġfun Ġdisplay Read me Install Message () Ġ{ ĊĠĠĠ Ġshow D oki Notification ( ĊĠĠĠĠĠ ĠMessage Bundle . message (" notification . no . show . readme . title "), ĊĠĠĠĠĠ ĠMessage Bundle . message (" notification . no . show . readme . body "), ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ