// Ġ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 . jetbrains . python . ift . lesson . refactor ings Ċ Ċ import Ġcom . intellij . ide . DataManager Ċ import Ġcom . intellij . ide . actions . ex clusion . Ex clusion Handler Ċ import Ġcom . intellij . refactor ing . Ref actor ing Bundle Ċ import Ġcom . intellij . refactor ing . ui . Name Suggestions Field Ċ import Ġcom . intellij . ui . tree . Tree Visitor Ċ import Ġcom . intellij . usage View . Usage View Bundle Ċ import Ġcom . intellij . util . ui . tree . Tree Util Ċ import Ġcom . jetbrains . python . ift . Python Less ons Bundle Ċ import Ġorg . fest . swing . fixture . J Tree Fixture Ċ import Ġtraining . dsl .* Ċ import Ġtraining . learn . Less ons Bundle Ċ import Ġtraining . learn . course . K Lesson Ċ import Ġjavax . swing . JButton Ċ import Ġjavax . swing . J Tree Ċ import Ġjavax . swing . tree . Tree Path Ċ Ċ class ĠPython Rename Lesson Ġ: ĠK Lesson (" Rename ", ĠLess ons Bundle . message (" rename . lesson . name ")) Ġ{ ĊĠ Ġoverride Ġval Ġtest Script Properties Ġ= ĠTask TestContext . Test Script Properties ( 1 0 ) ĊĠ Ġprivate Ġval Ġtemplate Ġ= Ġ""" ĊĠĠĠĠĠ Ġclass ĠCh amp ion ship : ĊĠĠĠĠĠĠĠĠĠ Ġdef Ġ__ init __( self ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself .< name > Ġ= Ġ 0 ĊĠĠĠĠĠĠ ĊĠĠĠĠĠĠĠĠĠ Ġdef Ġmatches _ count ( self ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġself .< name > Ġ* Ġ( self .< name > Ġ- Ġ 1 ) Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĊĠĠĠĠĠĠĠĠĠ Ġdef Ġadd _ new _ team ( self ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself .< name > Ġ+= Ġ 1 ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdef Ġteam _ matches ( champ ): ĊĠĠĠĠĠĠĠĠĠ Ġchamp .< name >() Ġ- Ġ 1 ĊĊĠĠĠĠĠ Ġclass ĠCompany : ĊĠĠĠĠĠĠĠĠĠ Ġdef Ġ__ init __( self , Ġt ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġself . teams Ġ= Ġt ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġdef Ġcompany _ members ( company ): ĊĠĠĠĠĠĠĠĠĠ Ġmap ( lambda Ġteam Ġ: Ġteam . name , Ġcompany . teams ) ĊĊĠĠĠĠĠ Ġdef Ġteams (): ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 1 6 ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġc Ġ= ĠCh amp ion ship () ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġc .< caret >< name > Ġ= Ġteams () ĊĠĠĠĠĠĠĊĠĠĠĠĠ Ġprint ( c .< name >) ĊĠ Ġ""" . trim Indent () Ġ+ Ġ'\ n ' ĊĊĠ Ġprivate Ġval Ġsample Ġ= Ġparse Lesson Sample ( template . replace ("< name >", Ġ" teams ")) ĊĊĠ Ġoverride Ġval Ġlesson Content : ĠLess on Context . () Ġ-> ĠUnit Ġ= Ġ{ ĊĠĠĠ Ġprepare Sample ( sample ) ĊĠĠĠ Ġval Ġdynamic Word Ġ= ĠUsage View Bundle . message (" usage . view . results . node . dynamic ") ĊĠĠĠ Ġvar Ġreplace : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġdynamic Item : ĠString ? Ġ= Ġnull ĊĠĠĠ Ġtask (" Rename Element ") Ġ{ ĊĠĠĠĠĠ Ġtext ( Python Less ons Bundle . message (" python . rename . press . rename ", Ġaction ( it ), Ġcode (" teams "), Ġcode (" teams _ number "))) ĊĠĠĠĠĠ Ġtrigger By Ui Component And Highlight ( false , Ġfalse ) Ġ{ Ġui : ĠName Suggestions Field Ġ-> ĊĠĠĠĠĠĠĠ Ġui . addData Changed Listener Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreplace Ġ= Ġui . enter ed Name ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġtrigger By Found Path And Highlight Ġ{ Ġ_: ĠJ Tree , Ġpath : ĠTree Path Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġpath Str Ġ= Ġpath . getPath Component ( 1 ). toString () ĊĠĠĠĠĠĠĠ Ġif Ġ( path . path Count Ġ== Ġ 2 Ġ&& Ġpath Str . contains ( dynamic Word )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġdynamic Item Ġ= Ġpath Str ĊĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġelse Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġtest Ġ{ ĊĠĠĠĠĠĠĠ Ġactions ( it ) ĊĠĠĠĠĠĠĠ Ġdialog Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtype (" teams _ number ") ĊĠĠĠĠĠĠĠĠĠ Ġbutton (" Ref actor "). click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtask Ġ{ ĊĠĠĠĠĠ Ġ// ĠIncrease Ġdeterministic : Ġcollapse Ġnodes ĊĠĠĠĠĠ Ġbefore Ġ{ ĊĠĠĠĠĠĠĠ Ġ( previous . ui Ġas ? ĠJ Tree )?. let Ġ{ Ġtree Ġ-> ĊĠĠĠĠĠĠĠĠĠ ĠTree Util . collapse All ( tree , Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġval Ġdynamic References String Ġ= Ġ" [$ dynamic Word ]" ĊĠĠĠĠĠ Ġtext ( Python Less ons Bundle . message (" python . rename . expand . dynamic . references ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcode (" teams "), Ġstrong ( dynamic References String ))) ĊĊĠĠĠĠĠ Ġtrigger By Found Path And Highlight Ġ{ Ġ_: ĠJ Tree , Ġpath : ĠTree Path Ġ-> ĊĠĠĠĠĠĠĠ Ġpath . path Count Ġ== Ġ 6 Ġ&& Ġpath . getPath Component ( 5 ). toString (). contains (" company _ members ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġshow Warning If Find Toolbar Closed () ĊĠĠĠĠĠ Ġtest Ġ{ ĊĠĠĠĠĠĠĠ Ġ// TODO : ĠFix Ġtree Ġaccess ĊĠĠĠĠĠĠĠ Ġval Ġj Tree Ġ= Ġprevious . ui Ġas ? ĠJ Tree Ġ?: Ġreturn @ test ĊĠĠĠĠĠĠĠ Ġval Ġdi Ġ= Ġdynamic Item Ġ?: Ġreturn @ test ĊĠĠĠĠĠĠĠ Ġide Frame Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġj Tree Fixture Ġ= ĠJ Tree Fixture ( robot , Ġj Tree ) ĊĠĠĠĠĠĠĠĠĠ Ġj Tree Fixture . replace Separator (" @@ @ ") ĊĠĠĠĠĠĠĠĠĠ Ġj Tree Fixture . expand Path ( di ) ĊĠĠĠĠĠĠĠĠĠ Ġ// ĠWARNING : Ġseveral Ġexception Ġwill Ġbe Ġhere Ġbecause Ġof ĠUsage Node # toString Ġinside Ġinfo Ġoutput Ġduring Ġthis Ġoperation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtask Ġ{ ĊĠĠĠĠĠ Ġtext ( Python Less ons Bundle . message (" python . rename . exclude . item ", Ġcode (" company _ members "), Ġaction (" Editor Delete "))) ĊĊĠĠĠĠĠ Ġstate Check Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtree Ġ= Ġprevious . ui Ġas ? ĠJ Tree Ġ?: Ġreturn @ state Check Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġlast Ġ= Ġpath To Exclude ( tree ) Ġ?: Ġreturn @ state Check Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġdata Context Ġ= ĠData Manager . getInstance (). getData Context ( tree ) ĊĠĠĠĠĠĠĠ Ġval Ġex clusion Processor : ĠEx clusion Handler < *> Ġ= ĠEx clusion Handler . EXCL US ION _ HANDLER . getData ( data Context ) Ġ?: Ġreturn @ state Check Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġleaf ToBe Excluded Ġ= Ġlast . last Path Component ĊĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UN CHECK ED _ CAST ") ĊĠĠĠĠĠĠĠ Ġfun Ġ< T Ġ: ĠAny ?> Ġcast Hack ( processor : ĠEx clusion Handler < T >): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġreturn Ġprocessor . is Node Ex clusion Available ( leaf ToBe Excluded Ġas ĠT ) Ġ&& Ġprocessor . is Node Excluded ( leaf ToBe Excluded Ġas ĠT ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġcast Hack ( ex clusion Processor ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġshow Warning If Find Toolbar Closed () ĊĠĠĠĠĠ Ġtest Ġ{ ĊĠĠĠĠĠĠĠ Ġide Frame Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġtype (" come ") ĊĠĠĠĠĠĠĠĠĠ Ġinvoke Action Via Shortcut (" DELETE ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġconfirm Ref actor ing Button Ġ= ĠRefactor ing Bundle . message (" usage View . do Action "). drop Mnemonic () ĊĠĠĠ Ġtask Ġ{ ĊĠĠĠĠĠ Ġtrigger By Ui Component And Highlight ( highlight Inside Ġ= Ġfalse ) Ġ{ Ġbutton : ĠJButton Ġ-> ĊĠĠĠĠĠĠĠ Ġbutton . text ?. contains ( confirm Ref actor ing Button ) Ġ== Ġtrue ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġtask Ġ{ ĊĠĠĠĠĠ Ġval Ġresult Ġ= Ġreplace ?. let Ġ{ Ġtemplate . replace ("< name >", Ġit ). replace ("< caret >", Ġ"") Ġ} ĊĠĠĠĠĠ Ġtext ( Python Less ons Bundle . message (" python . rename . finish . refactor ing ", Ġstrong ( confirm Ref actor ing Button ))) ĊĠĠĠĠĠ Ġstate Check Ġ{ Ġeditor . document . text Ġ== Ġresult Ġ} ĊĠĠĠĠĠ Ġshow Warning If Find Toolbar Closed () ĊĠĠĠĠĠ Ġtest ( wait Editor ToBe Ready Ġ= Ġfalse ) Ġ{ ĊĠĠĠĠĠĠĠ Ġide Frame Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġbutton ( confirm Ref actor ing Button ). click () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġpath To Exclude ( tree : ĠJ Tree ): ĠTree Path ? Ġ{ ĊĠĠĠ Ġreturn ĠTree Util . promise Visit ( tree , ĠTree Visitor Ġ{ Ġpath Ġ-> ĊĠĠĠĠĠ Ġif Ġ( path . path Count Ġ== Ġ 7 Ġ&& Ġpath . getPath Component ( 6 ). toString (). contains (" lambda ")) ĊĠĠĠĠĠĠĠ ĠTree Visitor . Action . INTERRUPT ĊĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ ĠTree Visitor . Action . CONTINUE ĊĠĠĠ Ġ}). blocking Get ( 2 0 0 ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠTask Context . show Warning If Find Toolbar Closed () Ġ{ ĊĠĠĠ Ġshow Warning ( Python Less ons Bundle . message (" python . rename . find . window . closed . warning ", Ġaction (" Activate Find Tool Window ")), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrestore Task When Resolved Ġ= Ġtrue ) Ġ{ ĊĠĠĠĠĠ Ġprevious . ui ?. is Showing Ġ!= Ġtrue ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ