package Ġcom . jetbrains . r ider . plugins . unity . explorer Ċ Ċ import Ġcom . intellij . ide . util . tree View . Abstract TreeNode Ċ import Ġcom . intellij . openapi . Disposable Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs . Virtual File Ċ import Ġcom . intellij . openapi . vfs . Virtual File Event Ċ import Ġcom . intellij . openapi . vfs . Virtual File Listener Ċ import Ġcom . intellij . openapi . vfs . Virtual FileManager Ċ import Ġcom . intellij . ui . tree . Tree Visitor Ċ import Ġcom . jetbrains . r ider . model . rd Unity Model Ċ import Ġcom . jetbrains . r ider . project View . solution Ċ import Ġcom . jetbrains . r ider . project View . views . Solution View Visitor Ċ import Ġcom . jetbrains . r ider . util . lifetime . Lifetime Ċ Ċ class ĠUnity Explorer Packages View Updater ( project : ĠProject , Ġprivate Ġval Ġpane : ĠUnity Explorer , Ġprivate Ġval Ġpackages Manager : ĠPackages Manager ): ĠDis posable Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlifetime Definition Ġ= ĠL ifetime . create ( Lifetime . E ternal ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġa Ġfile Ġlistener Ġfor ĠPackages / manifest . json . ĠIf Ġit 's Ġadded , Ġdeleted Ġor Ġmodified , Ġrefresh Ġall ĊĠĠĠĠĠĠĠ Ġval Ġlistener Ġ= ĠFile Listener ( project ) ĊĠĠĠĠĠĠĠ Ġval Ġmanager Ġ= ĠVirtual FileManager . getInstance () ĊĠĠĠĠĠĠĠ Ġmanager . add Virtual File Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġlifetime Definition . lifetime . add Ġ{ Ġmanager . remove Virtual File Listener ( listener ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠUpdate Ġthe Ġmodules Ġnode Ġwhenever Ġthe ĠUnity Ġeditor 's Ġapplication Ġpath Ġchanges ĊĠĠĠĠĠĠĠ Ġproject . solution . rd Unity Model . application Path . adv ise ( lifetime Definition . lifetime ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠRefresh Ġthe Ġpackage Ġmanagers Ġcached Ġview Ġof Ġthe Ġpackages Ġand Ġrefresh Ġthe Ġbuilt Ġin Ġpackages Ġnode ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġhave Ġto Ġrefresh Ġthe Ġpackages Ġbecause Ġthe Ġpackage Ġdata Ġfor Ġbuilt Ġin Ġpackages Ġis Ġresolved Ġas Ġeither ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġknown Ġor Ġunknown , Ġbased Ġon Ġthe Ġbuilt Ġin Ġpackage Ġroot ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackages Manager . refresh () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpane . refresh ( object : ĠSolution View Visitor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit ( node : ĠAbstract TreeNode < *> ): ĠTree Visitor . Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Ġis ĠPackages Root Ġ|| Ġnode Ġis ĠReadOnly Packages Root ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠI Ġwould Ġexpect ĠSKIP _ SI BL INGS Ġto Ġwork Ġhere , Ġbut Ġit Ġcauses Ġiteration Ġto Ġstop . ĠDon 't Ġknow Ġwhy ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTree Visitor . Action . CONTINUE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Ġis ĠBuiltin Packages Root ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTree Visitor . Action . INTERRUPT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTree Visitor . Action . SKIP _ CHILD REN ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, Ġfalse , Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdispose () Ġ{ ĊĠĠĠĠĠĠĠ Ġlifetime Definition . terminate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Unity Explorer Root () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRefresh Ġthe Ġpackages Ġmanager Ġcached Ġview Ġof Ġthe Ġpackages Ġand Ġupdate Ġthe Ġentire Ġtree Ġ- Ġgiving Ġchance Ġto Ġadd Ġor ĊĠĠĠĠĠĠĠ Ġ// Ġremove Ġthe ĠPackages Ġnode ĊĠĠĠĠĠĠĠ Ġpackages Manager . refresh () ĊĠĠĠĠĠĠĠ Ġpane . update From Root () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Packages Root () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠRefresh Ġthe Ġpackages Ġmanager Ġcached Ġview Ġof Ġthe Ġpackages Ġand Ġupdate Ġjust Ġthe ĠPackages Ġtree ĊĠĠĠĠĠĠĠ Ġpackages Manager . refresh () ĊĠĠĠĠĠĠĠ Ġpane . refresh ( object : ĠSolution View Visitor () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġvisit ( node : ĠAbstract TreeNode < *> ): ĠTree Visitor . Action Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( node Ġis ĠPackages Root ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTree Visitor . Action . INTERRUPT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠTree Visitor . Action . SKIP _ CHILD REN ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}, Ġfalse , Ġtrue ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcontains File ( file : ĠVirtual File ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġpane . model . root . contains ( file ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġinner Ġclass ĠFile Listener ( private Ġval Ġproject : ĠProject ) Ġ: ĠVirtual File Listener Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcontents Changed ( event : ĠVirtual File Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event . file Ġ== Ġproject . base Dir . find File By RelativePath (" Packages / manifest . json ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Packages Root () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġif Ġ( event . file . name Ġ== Ġ" package . json " Ġ&& Ġcontains File ( event . file )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġhave Ġto Ġrefresh Ġfrom Ġroot Ġbecause Ġthe Ġpackage Ġmetadata Ġmight Ġbe Ġchanging Ġdependencies , Ġwhich ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġcan Ġaffect Ġversion Ġresolution Ġand Ġthe Ġtop Ġlevel Ġlist Ġof Ġpackages ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Packages Root () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfile Deleted ( event : ĠVirtual File Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Packages Folder ( event . file ) Ġ|| Ġis Manifest Json ( event . file )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Unity Explorer Root () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġfile Created ( event : ĠVirtual File Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Packages Folder ( event . file ) Ġ|| Ġis Manifest Json ( event . file )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Unity Explorer Root () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis Packages Folder ( file : ĠVirtual File ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile Ġ!= Ġnull Ġ&& Ġfile . name Ġ== Ġ" Packages " Ġ&& Ġfile . parent Ġ== Ġproject . base Dir ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġis Manifest Json ( file : ĠVirtual File ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfile Ġ!= Ġnull Ġ&& Ġfile . name Ġ== Ġ" manifest . json " Ġ&& Ġis Packages Folder ( file . parent ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }