// Ġ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 . execution . process . elevation . settings Ċ Ċ import Ġcom . intellij . execution . process . elevation . Elevation Bundle Ċ import Ġcom . intellij . execution . process . medi ator . daemon . Quota Options Ċ import Ġcom . intellij . ide . n ls . N ls Messages Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . application . invoke And Wait IfNeeded Ċ import Ġcom . intellij . openapi . components .* Ċ import Ġcom . intellij . openapi . ui . Message Dialog Builder Ċ import Ġcom . intellij . openapi . ui . Messages . CANCEL Ċ import Ġcom . intellij . openapi . ui . Messages . YES Ċ import Ġcom . intellij . openapi . util . System Info Ċ import Ġcom . intellij . util . messages . Topic Ċ import Ġkotlin . time . Experimental Time Ċ import Ġkotlin . time . minutes Ċ Ċ @ Service Ċ @ State ( name Ġ= Ġ" Elevation ", Ġstorage s Ġ= Ġ[ Storage ( value Ġ= Ġ" security . xml ", Ġro aming Type Ġ= ĠRo aming Type . DISABLED )]) Ċ class ĠE levation Settings Ġ: ĠPersistent State Component With Modification Tracker < Elevation Settings . Elevation Options > Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun ĠgetInstance () Ġ= Ġservice < Elevation Settings >() ĊĊĠĠĠ Ġ@ Suppress (" EXPERIMENT AL _ IS _ NOT _ ENABLED ") ĊĠĠĠ Ġ@ Opt In ( Experimental Time :: class ) ĊĠĠĠ Ġprivate Ġval ĠDEFAULT _ GR ACE _ PERIOD _ MS Ġ= Ġ 1 5 . minutes . to Long Milliseconds () ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġoptions Ġ= ĠE levation Options () ĊĊĠ Ġvar Ġquota Options : ĠQu ota Options ĊĠĠĠ Ġget () Ġ= ĠQu ota Options ( time Limit Ms Ġ= Ġif Ġ( options . is Keep Auth ) Ġoptions . grace Period Ms Ġelse Ġ 0 L , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Refresh able Ġ= Ġoptions . is Keep Auth Ġ&& Ġoptions . is Refresh able ) ĊĠĠĠ Ġset ( newValue ) Ġ= Ġupdate Quota Options Ġ{ ĊĠĠĠĠĠ Ġval Ġis Keep Auth Ġ= ĠnewValue . time Limit Ms Ġ!= Ġ 0 L ĊĠĠĠĠĠ Ġoptions . is Keep Auth Ġ= Ġis Keep Auth ĊĠĠĠĠĠ Ġif Ġ( is Keep Auth ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoptions . grace Period Ms Ġ= ĠnewValue . time Limit Ms ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠ Ġvar Ġis Keep Auth : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġoptions . is Keep Auth ĊĠĠĠ Ġset ( value ) Ġ= Ġupdate Quota Options Ġ{ ĊĠĠĠĠĠ Ġoptions . is Keep Auth Ġ= Ġvalue ĊĠĠĠ Ġ}. also Ġ{ ĊĠĠĠĠĠ Ġif Ġ( value ) Ġis Settings Update Done Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠ Ġvar Ġis Refresh able : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġoptions . is Refresh able ĊĠĠĠ Ġset ( value ) Ġ= Ġupdate Quota Options Ġ{ ĊĠĠĠĠĠ Ġoptions . is Refresh able Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġvar Ġquota Time Limit Ms : ĠLong ĊĠĠĠ Ġget () Ġ= Ġoptions . grace Period Ms ĊĠĠĠ Ġset ( value ) Ġ= Ġupdate Quota Options Ġ{ ĊĠĠĠĠĠ Ġoptions . grace Period Ms Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġis Settings Update Done : ĠBoolean ĊĠĠĠ Ġget () Ġ= Ġsynchronized ( this ) Ġ{ Ġoptions . is Settings Update Done Ġ} ĊĠĠĠ Ġset ( value ) Ġ= Ġsynchronized ( this ) Ġ{ ĊĠĠĠĠĠ Ġoptions . is Settings Update Done Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate Quota Options ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠ Ġval ĠoldValue Ġ= Ġquota Options ĊĠĠĠ Ġblock () ĊĠĠĠ Ġval ĠnewValue Ġ= Ġquota Options ĊĠĠĠ Ġif Ġ( oldValue Ġ!= ĠnewValue ) Ġ{ ĊĠĠĠĠĠ ĠApplication Manager . getApplication (). message Bus . sync Publisher ( Listener . TOPIC ). on Daemon Quota Options Changed ( oldValue , ĠnewValue ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠgetState () Ġ= Ġoptions ĊĠ Ġoverride Ġfun Ġload State ( state : ĠE levation Options ) Ġ= Ġoptions . copyFrom ( state ) ĊĠ Ġoverride Ġfun ĠgetState Modification Count () Ġ= Ġoptions . modification Count ĊĊĠ Ġfun Ġask Enable Keep Auth IfNeeded (): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġis Settings Update Done Ġ|| Ġinvoke And Wait IfNeeded Ġ{ Ġdo Ask Enable Keep Auth IfNeeded () Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdo Ask Enable Keep Auth IfNeeded (): ĠBoolean Ġ{ ĊĠĠĠ ĠApplication Manager . getApplication (). assertIs Dispatch Thread () ĊĊĠĠĠ Ġif Ġ( is Settings Update Done ) Ġreturn Ġtrue ĊĊĠĠĠ Ġval Ġyes Text Ġ= ĠE levation Bundle . message (" keep . authorized . for . 0 ", ĠN ls Messages . format Duration ( DEFAULT _ GR ACE _ PERIOD _ MS )) ĊĠĠĠ Ġval Ġno Text Ġ= ĠE levation Bundle . message (" authorize . every . time ") ĊĊĠĠĠ Ġval Ġmessage Ġ= ĠEx plan atory Text Ui Util . message ( Elevation Bundle . message (" text . you . are . about . to . run . priv ileges . process "), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmax Line Length Ġ= Ġ 7 0 ) ĊĠĠĠ Ġval Ġtitle Ġ= ĊĠĠĠĠĠ Ġif Ġ( System Info . is Mac ) ĠE levation Bundle . message (" update . elevation . preferences ") ĊĠĠĠĠĠ Ġelse ĠE levation Bundle . message (" update . elevation . settings ") ĊĊĠĠĠ Ġval Ġyes No Cancel Result Ġ= ĠMessage Dialog Builder ĊĠĠĠĠĠ Ġ. yes No Cancel ( title , Ġmessage ) ĊĠĠĠĠĠ Ġ. yes Text ( yes Text ) ĊĠĠĠĠĠ Ġ. no Text ( no Text ) ĊĠĠĠĠĠ Ġ. guess Window And Ask () ĊĊĠĠĠ Ġif Ġ( yes No Cancel Result Ġ== ĠCANCEL ) Ġreturn Ġfalse ĊĊĠĠĠ Ġquota Time Limit Ms Ġ= ĠDEFAULT _ GR ACE _ PERIOD _ MS ĊĠĠĠ Ġis Keep Auth Ġ= Ġ( yes No Cancel Result Ġ== ĠYES ) ĊĠĠĠ Ġis Settings Update Done Ġ= Ġtrue ĊĠĠĠ Ġreturn Ġtrue ĊĠ Ġ} ĊĊĠ Ġinterface ĠListener Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġ@ Jvm Field ĊĠĠĠĠĠ Ġval ĠTOP IC Ġ= ĠTopic . create (" Elevation Settings . Listener ", ĠListener :: class . java ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Default ĊĠĠĠ Ġfun Ġon Daemon Quota Options Changed ( oldValue : ĠQu ota Options , ĠnewValue : ĠQu ota Options ) Ġ= ĠUnit ĊĠ Ġ} ĊĊĠ Ġclass ĠE levation Options Ġ: ĠBase State () Ġ{ ĊĠĠĠ Ġvar Ġis Settings Update Done Ġby Ġproperty ( false ) ĊĠĠĠ Ġvar Ġis Keep Auth Ġby Ġproperty ( false ) ĊĠĠĠ Ġvar Ġis Refresh able Ġby Ġproperty ( true ) ĊĠĠĠ Ġvar Ġgrace Period Ms Ġby Ġproperty ( DEFAULT _ GR ACE _ PERIOD _ MS ) ĊĠ Ġ} Ċ } Ċ