// ĠCopyright Ġ 2 0 0 0 - 2 0 1 8 Ġ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 . diff . tools . util . base Ċ Ċ import Ġcom . intellij . diff . util . Diff Places Ċ import Ġcom . intellij . diff . util . Diff Util Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . components . Persistent State Component Ċ import Ġcom . intellij . openapi . components . State Ċ import Ġcom . intellij . openapi . components . Storage Ċ import Ġcom . intellij . openapi . components . service Ċ import Ġcom . intellij . openapi . util . Key Ċ import Ġcom . intellij . util . EventDispatcher Ċ import Ġcom . intellij . util . xml b . annotations . Option Tag Ċ import Ġcom . intellij . util . xml b . annotations . Transient Ċ import Ġcom . intellij . util . xml b . annotations . X Map Ċ import Ġjava . util .* Ċ Ċ @ State ( name Ġ= Ġ" Text Diff Settings ", Ġstorage s Ġ= Ġ[( Storage ( value Ġ= ĠDiff Util . DIFF _ CONFIG )) ]) Ċ class ĠText Diff Settings Holder Ġ: ĠPersistent State Component < Text Diff Settings Holder . State > Ġ{ ĊĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠ Ġ@ Jvm Field Ġval ĠCON TEXT _ RANGE _ MODES : ĠInt Array Ġ= Ġint ArrayOf ( 1 , Ġ 2 , Ġ 4 , Ġ 8 , Ġ- 1 ) ĊĠĠĠ Ġ@ Jvm Field Ġval ĠCON TEXT _ RANGE _ MODE _ LABEL S : ĠArray < String > Ġ= ĠarrayOf (" 1 ", Ġ" 2 ", Ġ" 4 ", Ġ" 8 ", Ġ" Disable ") ĊĠ Ġ} ĊĊĠ Ġdata Ġclass ĠShared Settings ( ĊĠĠĠ Ġ// ĠF rag ments Ġsettings ĊĠĠĠ Ġvar ĠCON TEXT _ RANGE : ĠInt Ġ= Ġ 4 , ĊĊĠĠĠ Ġvar ĠMER GE _ AUTO _ AP PLY _ NON _ CONF LI CT ED _ CHANG ES : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġvar ĠMER GE _ LST _ G UT TER _ MARK ERS : ĠBoolean Ġ= Ġtrue ĊĠ Ġ) ĊĊĠ Ġdata Ġclass ĠPlace Settings ( ĊĠĠĠ Ġ// ĠDiff Ġsettings ĊĠĠĠ Ġvar ĠH IG HL IGHT _ POLICY : ĠHighlight Policy Ġ= ĠHighlight Policy . BY _ WORD , ĊĠĠĠ Ġvar ĠIG NORE _ POLICY : ĠIgnore Policy Ġ= ĠIgnore Policy . DEFAULT , ĊĊĠĠĠ Ġ// ĠPresentation Ġsettings ĊĠĠĠ Ġvar ĠENABLE _ SYNC _ SCROLL : ĠBoolean Ġ= Ġtrue , ĊĊĠĠĠ Ġ// ĠEditor Ġsettings ĊĠĠĠ Ġvar ĠSHOW _ WH IT ESP ACES : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġvar ĠSHOW _ LINE _ NUMBER S : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġvar ĠSHOW _ IND ENT _ LINES : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġvar ĠUSE _ SOFT _ WRAP S : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġvar ĠH IG HL IGHT ING _ LEVEL : ĠHigh lighting Level Ġ= ĠHigh lighting Level . IN SPE CTION S , ĊĠĠĠ Ġvar ĠREAD _ ONLY _ LOCK : ĠBoolean Ġ= Ġtrue , ĊĊĠĠĠ Ġ// ĠF rag ments Ġsettings ĊĠĠĠ Ġvar ĠEXP AND _ BY _ DEFAULT : ĠBoolean Ġ= Ġtrue ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġ@ Transient ĊĠĠĠ Ġval Ġevent Dispatcher : ĠEvent Dispatcher < Text Diff Settings . Listener > Ġ= ĠEvent Dispatcher . create ( Text Diff Settings . Listener :: class . java ) ĊĠ Ġ} ĊĊĠ Ġclass ĠText Diff Settings Ġinternal Ġconstructor ( private Ġval ĠSHARE D _ SETTINGS : ĠShared Settings , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠPL ACE _ SETTINGS : ĠPlace Settings ) Ġ{ ĊĠĠĠ Ġconstructor () Ġ: Ġthis ( Shared Settings (), ĠPlace Settings ()) ĊĊĠĠĠ Ġfun Ġadd Listener ( listener : ĠListener , Ġdis posable : ĠDis posable ) Ġ{ ĊĠĠĠĠĠ ĠPL ACE _ SETTINGS . event Dispatcher . addListener ( listener , Ġdis posable ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠPresentation Ġsettings ĊĊĠĠĠ Ġvar Ġis Enable Sync Scroll : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . ENABLE _ SYNC _ SCROLL ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . ENABLE _ SYNC _ SCROLL Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġ// ĠDiff Ġsettings ĊĊĠĠĠ Ġvar Ġhighlight Policy : ĠHighlight Policy ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . HIG HL IGHT _ POLICY ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . HIG HL IGHT _ POLICY Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPL ACE _ SETTINGS . event Dispatcher . mult ic aster . highlight Policy Changed () Ġ} ĊĊĠĠĠ Ġvar Ġignore Policy : ĠIgnore Policy ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . IGNORE _ POLICY ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . IGNORE _ POLICY Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPL ACE _ SETTINGS . event Dispatcher . mult ic aster . ignore Policy Changed () Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠMerge ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġvar Ġis Auto Apply Non Conflict ed Changes : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠSHARE D _ SETTINGS . MERGE _ AUTO _ AP PLY _ NON _ CONF LI CT ED _ CHANG ES ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠSHARE D _ SETTINGS . MERGE _ AUTO _ AP PLY _ NON _ CONF LI CT ED _ CHANG ES Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġis Enable Lst G utter Markers In Merge : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠSHARE D _ SETTINGS . MERGE _ LST _ G UT TER _ MARK ERS ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠSHARE D _ SETTINGS . MERGE _ LST _ G UT TER _ MARK ERS Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġ// ĠEditor Ġsettings ĊĊĠĠĠ Ġvar Ġis Show Line Numbers : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . SHOW _ LINE _ NUMBER S ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . SHOW _ LINE _ NUMBER S Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġis Show Wh ites p aces : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . SHOW _ WH IT ESP ACES ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . SHOW _ WH IT ESP ACES Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġis Show Indent Lines : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . SHOW _ IND ENT _ LINES ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . SHOW _ IND ENT _ LINES Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġis Use Soft Wrap s : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . USE _ SOFT _ WRAP S ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . USE _ SOFT _ WRAP S Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġhighlighting Level : ĠHigh lighting Level ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . HIG HL IGHT ING _ LEVEL ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . HIG HL IGHT ING _ LEVEL Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġcontext Range : ĠInt ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠSHARE D _ SETTINGS . CONTEXT _ RANGE ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠSHARE D _ SETTINGS . CONTEXT _ RANGE Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġis Expand ByDefault : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . EXPAND _ BY _ DEFAULT ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . EXPAND _ BY _ DEFAULT Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġvar Ġis ReadOnly Lock : ĠBoolean ĊĠĠĠĠĠ Ġget () ĠĠĠĠĠ Ġ= ĠPL ACE _ SETTINGS . READ _ ONLY _ LOCK ĊĠĠĠĠĠ Ġset ( value ) Ġ{ ĠPL ACE _ SETTINGS . READ _ ONLY _ LOCK Ġ= Ġvalue Ġ} ĊĊĠĠĠ Ġ// ĊĠĠĠ Ġ// ĠImp l ĊĠĠĠ Ġ// ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠ Ġ@ Jvm Field Ġval ĠKEY : ĠKey < Text Diff Settings > Ġ= ĠKey . create (" Text Diff Settings ") ĊĊĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġget Settings (): ĠText Diff Settings Ġ= Ġget Settings ( null ) ĊĠĠĠĠĠ Ġ@ Jvm Static Ġfun Ġget Settings ( place : ĠString ?): ĠText Diff Settings Ġ= Ġservice < Text Diff Settings Holder >(). get Settings ( place ) ĊĠĠĠĠĠ Ġinternal Ġfun ĠgetDefault Settings ( place : ĠString ): ĠText Diff Settings Ġ= ĊĠĠĠĠĠĠĠ ĠText Diff Settings ( Shared Settings (), Ġservice < Text Diff Settings Holder >(). default Place Settings ( place )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinterface ĠListener Ġ: ĠEvent Listener Ġ{ ĊĠĠĠĠĠ Ġfun Ġhighlight Policy Changed () Ġ{} ĊĠĠĠĠĠ Ġfun Ġignore Policy Changed () Ġ{} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġget Settings ( place : ĠString ?): ĠText Diff Settings Ġ{ ĊĠĠĠ Ġval Ġplace Key Ġ= Ġplace Ġ?: ĠDiff Places . DEFAULT ĊĠĠĠ Ġval Ġplace Settings Ġ= Ġmy State . PL ACES _ MAP . get Or Put ( place Key ) Ġ{ Ġdefault Place Settings ( place Key ) Ġ} ĊĠĠĠ Ġreturn ĠText Diff Settings ( my State . SHARED _ SETTINGS , Ġplace Settings ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcopy State Without Defaults (): ĠState Ġ{ ĊĠĠĠ Ġval Ġresult Ġ= ĠState () ĊĠĠĠ Ġresult . SHARED _ SETTINGS Ġ= Ġmy State . SHARED _ SETTINGS ĊĠĠĠ Ġresult . PL ACES _ MAP Ġ= ĠDiff Util . trim Default Values ( my State . PL ACES _ MAP ) Ġ{ Ġdefault Place Settings ( it ) Ġ} ĊĠĠĠ Ġreturn Ġresult ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġdefault Place Settings ( place : ĠString ): ĠPlace Settings Ġ{ ĊĠĠĠ Ġval Ġsettings Ġ= ĠPlace Settings () ĊĠĠĠ Ġif Ġ( place Ġ== ĠDiff Places . CHANG ES _ VIEW ) Ġ{ ĊĠĠĠĠĠ Ġsettings . EXPAND _ BY _ DEFAULT Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( place Ġ== ĠDiff Places . COMMIT _ DIALOG ) Ġ{ ĊĠĠĠĠĠ Ġsettings . EXPAND _ BY _ DEFAULT Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( place Ġ== ĠDiff Places . V CS _ LOG _ VIEW ) Ġ{ ĊĠĠĠĠĠ Ġsettings . EXPAND _ BY _ DEFAULT Ġ= Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġsettings ĊĠ Ġ} ĊĊĊĠ Ġclass ĠState Ġ{ ĊĠĠĠ Ġ@ Option Tag ĊĠĠĠ Ġ@ X Map ĊĠĠĠ Ġ@ Jvm Field Ġvar ĠPL ACES _ MAP : ĠTreeMap < String , ĠPlace Settings > Ġ= ĠTreeMap () ĊĠĠĠ Ġ@ Jvm Field Ġvar ĠSHARE D _ SETTINGS : ĠShared Settings Ġ= ĠShared Settings () ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġmy State : ĠState Ġ= ĠState () ĊĊĠ Ġoverride Ġfun ĠgetState (): ĠState Ġ{ ĊĠĠĠ Ġreturn Ġcopy State Without Defaults () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġload State ( state : ĠState ) Ġ{ ĊĠĠĠ Ġmy State Ġ= Ġstate ĊĠ Ġ} Ċ }