// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 Ġ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 . gr az ie . ide . ui . components . settings Ċ Ċ import Ġcom . intellij . gr az ie . Gr az ie Config Ċ import Ġcom . intellij . gr az ie . ide . ui . components . dsl . border Ċ import Ġcom . intellij . gr az ie . ide . ui . components . dsl . msg Ċ import Ġcom . intellij . gr az ie . ide . ui . components . dsl . padding Ċ import Ġcom . intellij . gr az ie . ide . ui . components . dsl . panel Ċ import Ġcom . intellij . gr az ie . j language . Lang Ċ import Ġcom . intellij . gr az ie . remote . Gr az ie Remote Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . options . Configurable Ui Ċ import Ġcom . intellij . openapi . project . guess Current Project Ċ import Ġcom . intellij . ui . layout . mig Layout .* Ċ import Ġcom . intellij . util . ui . J BU I Ċ import Ġnet . mig info com . layout . AC Ċ import Ġnet . mig info com . layout . CC Ċ import Ġnet . mig info com . swing . M ig Layout Ċ import Ġjavax . swing . J Component Ċ Ċ class ĠGr az ie Settings Panel Ġ: ĠConfigur able Ui < Gr az ie Config >, ĠDis posable Ġ{ ĊĠ Ġprivate Ġval Ġv cs Ġ= ĠGr az ie Commit Component () ĊĠ Ġprivate Ġval Ġnative Ġ= ĠGr az ie Native Language Component (:: download ) ĊĠ Ġprivate Ġval Ġdescription Ġ= ĠGr az ie Rule Description Component () ĊĠ Ġprivate Ġval Ġrules Ġ= ĠGr az ie Rules Component ( description . listener ) ĊĠ Ġprivate Ġval Ġlanguages Ġ= ĠGr az ie Languages Component (:: download , Ġrules :: add Lang , Ġrules :: remove Lang ) ĊĠ Ġprivate Ġval Ġstrategies Ġ= ĠGr az ie Programming Languages Component () ĊĊĠ Ġprivate Ġfun Ġdownload ( lang : ĠLang ): ĠBoolean Ġ{ ĊĠĠĠ Ġval Ġis Suc ceed Ġ= ĠGr az ie Remote . download ( lang , Ġguess Current Project ( vcs . component )) ĊĠĠĠ Ġif Ġ( is Suc ceed ) Ġupdate () ĊĠĠĠ Ġreturn Ġis Suc ceed ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġupdate () Ġ{ ĊĠĠĠ Ġnative . update () ĊĠĠĠ Ġlanguages . update () ĊĠĠĠ Ġrules . reset () ĊĠ Ġ} ĊĊĠ Ġfun Ġshow Option ( option : ĠString ?) Ġ= ĠRunnable Ġ{ Ġrules . filter ( option Ġ?: Ġ"") Ġ} ĊĊĠ Ġoverride Ġfun Ġis Modified ( settings : ĠGr az ie Config ) Ġ= Ġrules . is Modified ĊĠĠĠ Ġ. or ( settings . state . enabled Commit Integration Ġ!= Ġv cs . is Commit Integration Enabled ) ĊĠĠĠ Ġ. or ( settings . state . native Language Ġ!= Ġnative . language ) ĊĠĠĠ Ġ. or ( settings . state . enabled Languages Ġ!= Ġlanguages . values ) ĊĠĠĠ Ġ. or ( settings . state . enabled Grammar Str ategies Ġ!= Ġstrategies . enabled Str ategies IDs ) ĊĠĠĠ Ġ. or ( settings . state . disabled Grammar Str ategies Ġ!= Ġstrategies . disabled Str ategies IDs ) ĊĊĠ Ġoverride Ġfun Ġapply ( settings : ĠGr az ie Config ) Ġ{ ĊĠĠĠ ĠGr az ie Config . update Ġ{ Ġstate Ġ-> ĊĠĠĠĠĠ Ġval Ġenabled Languages Ġ= Ġstate . enabled Languages . to Mutable Set () ĊĠĠĠĠĠ Ġval Ġuser Disabled Rules Ġ= Ġstate . user Disabled Rules . to Mutable Set () ĊĠĠĠĠĠ Ġval Ġuser Enabled Rules Ġ= Ġstate . user Enabled Rules . to Mutable Set () ĊĊĠĠĠĠĠ Ġval Ġchosen Enabled Languages Ġ= Ġlanguages . values ĊĠĠĠĠĠ ĠLang . values (). forEach Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( chosen Enabled Languages . contains ( it )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġenabled Languages . add ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġenabled Languages . remove ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġval Ġ( enabled Rules , Ġdisabled Rules ) Ġ= Ġrules . state ĊĊĠĠĠĠĠ Ġenabled Rules . forEach Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠ Ġuser Disabled Rules . remove ( id ) ĊĠĠĠĠĠĠĠ Ġuser Enabled Rules . add ( id ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġdisabled Rules . forEach Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠ Ġuser Disabled Rules . add ( id ) ĊĠĠĠĠĠĠĠ Ġuser Enabled Rules . remove ( id ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġstate . copy ( ĊĠĠĠĠĠĠĠ Ġenabled Languages Ġ= Ġenabled Languages , ĊĠĠĠĠĠĠĠ Ġenabled Grammar Str ategies Ġ= Ġstrategies . enabled Str ategies IDs , ĊĠĠĠĠĠĠĠ Ġdisabled Grammar Str ategies Ġ= Ġstrategies . disabled Str ategies IDs , ĊĠĠĠĠĠĠĠ Ġuser Enabled Rules Ġ= Ġuser Enabled Rules , ĊĠĠĠĠĠĠĠ Ġuser Disabled Rules Ġ= Ġuser Disabled Rules , ĊĠĠĠĠĠĠĠ Ġnative Language Ġ= Ġnative . language , ĊĠĠĠĠĠĠĠ Ġenabled Commit Integration Ġ= Ġv cs . is Commit Integration Enabled ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġrules . reset () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġreset ( settings : ĠGr az ie Config ) Ġ{ ĊĠĠĠ Ġnative . language Ġ= Ġsettings . state . native Language ĊĠĠĠ Ġv cs . is Commit Integration Enabled Ġ= Ġsettings . state . enabled Commit Integration ĊĠĠĠ Ġlanguages . reset ( settings . state . enabled Languages . sorted With ( Comparator . comp aring ( Lang :: displayName ))) ĊĠĠĠ Ġstrategies . reset ( settings . state . enabled Grammar Str ategies , Ġsettings . state . disabled Grammar Str ategies ) ĊĠĠĠ Ġrules . reset () ĊĊĠĠĠ Ġupdate () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġget Component (): ĠJ Component Ġ{ ĊĠĠĠ Ġreturn Ġpanel ( M ig Layout ( create Layout Constraints (), ĠAC (). grow (), ĠAC (). index ( 1 ). grow ())) Ġ{ ĊĠĠĠĠĠ Ġpanel ( M ig Layout ( create Layout Constraints (), ĠAC (). grow ()), Ġconstraint Ġ= ĠCC (). grow X (). wrap ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġborder Ġ= Ġborder ( msg (" gr az ie . ui . settings . languages . text "), Ġfalse , ĠJ BU I . empty Insets (), Ġfalse ) ĊĊĠĠĠĠĠĠĠ Ġadd ( str ategies . component , ĠCC (). grow (). max Height (" "). width (" 4 5 % "). min Width (" 2 5 0 px "). align Y (" top ")) ĊĊĠĠĠĠĠĠĠ Ġpanel ( M ig Layout ( create Layout Constraints (), ĠAC (). grow (), ĠAC (). grow ()), ĠCC (). grow (). width (" 5 5 % "). min Width (" 3 5 0 px "). align Y (" top ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġborder Ġ= Ġpadding ( J BU I . in sets Left ( 2 0 )) ĊĊĠĠĠĠĠĠĠĠĠ Ġadd ( languages . component , ĠCC (). grow (). maxWidth (" 3 3 0 px "). min Height (" 8 0 px "). max Height (" 8 0 px "). wrap ()) ĊĠĠĠĠĠĠĠĠĠ Ġadd ( native . component , ĠCC (). wrap (). maxWidth (" 3 3 0 px ")) ĊĠĠĠĠĠĠĠĠĠ Ġadd ( vcs . component , ĠCC (). wrap (). maxWidth (" 3 3 0 px ")) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġupdate () ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġpanel ( M ig Layout ( create Layout Constraints (), ĠAC (). grow (), ĠAC (). grow ()), Ġconstraint Ġ= ĠCC (). grow ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġborder Ġ= Ġborder ( msg (" gr az ie . ui . settings . rules . configuration . text "), Ġfalse , ĠJ BU I . empty Insets ()) ĊĊĠĠĠĠĠĠĠ Ġadd ( rules . component , ĠCC (). grow (). width (" 4 5 % "). min Width (" 2 5 0 px ")) ĊĠĠĠĠĠĠĠ Ġadd ( description . component , ĠCC (). grow (). width (" 5 5 % ")) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġdispose () Ġ= Ġrules . dispose () Ċ } Ċ