package Ġorg . are nd . yaml Ċ Ċ import Ġcom . intellij . App Topics Ċ import Ġcom . intellij . openapi . editor . Document Ċ import Ġcom . intellij . openapi . file Editor . File Document Manager Ċ import Ġcom . intellij . openapi . file Editor . File Document Manager Listener Ċ import Ġcom . intellij . openapi . module . Module Util Ċ import Ġcom . intellij . openapi . module . Module Util Core Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . vfs .* Ċ import Ġcom . intellij . openapi . vfs . new vfs . Bulk File Listener Ċ import Ġcom . intellij . openapi . vfs . new vfs . events .* Ċ import Ġorg . are nd . module . config . Are nd Module Config Service Ċ import Ġorg . are nd . util . FileUtils Ċ Ċ class ĠYAML File Listener ( private Ġval Ġproject : ĠProject ) Ġ: ĠBulk File Listener , ĠFile Document Manager Listener Ġ{ ĊĠĠĠ Ġfun Ġregister () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġconnection Ġ= Ġproject . message Bus . connect () ĊĠĠĠĠĠĠĠ Ġconnection . subscribe ( Virtual FileManager . V FS _ CHANG ES , Ġthis ) ĊĠĠĠĠĠĠĠ Ġconnection . subscribe ( App Topics . FILE _ DOCUMENT _ SYNC , Ġthis ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore Document Saving ( document : ĠDocument ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile Document Manager . getInstance (). getFile ( document ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġif Ġ( file . name Ġ== ĠFileUtils . LIBRARY _ CONFIG _ FILE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠAre nd Module Config Service . getInstance ( Module Util Core . find Module For File ( file , Ġproject )) ?. copyFrom YAML () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġbefore ( events : ĠList < V File Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( event Ġin Ġevents ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( event Ġis ĠV File Delete Event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess ( event , Ġevent . file . name , Ġevent . file . parent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġafter ( events : ĠList < V File Event >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( event Ġin Ġevents ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( event ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠV File Create Event Ġ-> Ġprocess ( event , Ġevent . child Name , Ġnull , Ġevent . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠV File Move Event Ġ-> Ġprocess ( event , Ġevent . file . name , Ġevent . old Parent , Ġevent . new Parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠV File Copy Event Ġ-> Ġprocess ( event , Ġevent . file . name , Ġnull , Ġevent . new Parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠV File Property ChangeEvent Ġ-> Ġif Ġ( event . propertyName Ġ== ĠVirtual File . PROP _ NAME ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess ( event , Ġevent . oldValue Ġas ĠString , Ġevent . file . parent , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprocess ( event , Ġevent . newValue Ġas ĠString , Ġnull , Ġevent . file . parent ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġprocess ( event : ĠV File Event , ĠfileName : ĠString , Ġold Parent : ĠVirtual File ?, Ġnew Parent : ĠVirtual File ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( old Parent Ġ== Ġnull Ġ&& Ġnew Parent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( fileName Ġ== ĠFileUtils . LIBRARY _ CONFIG _ FILE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= Ġevent . file Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġservice Ġ= ĠAre nd Module Config Service . getInstance ( Module Util . find Module For File ( file , Ġproject )) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot Ġ= Ġservice . root Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( root Ġ== Ġold Parent Ġ|| Ġroot Ġ== Ġnew Parent ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġservice . copyFrom YAML () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }