package Ġcom . jetbrains . edu . course creator . actions . placeholder Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . command . undo . Basic Undo able Action Ċ import Ġcom . intellij . openapi . editor . Editor Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . jetbrains . edu . learning . course Format . Task File Ċ import Ġcom . jetbrains . edu . learning . yaml . Yaml Format Synchron izer Ċ Ċ abstract Ġclass ĠTask File Undo able Action ( protected Ġval Ġproject : ĠProject , Ġprotected Ġval Ġtask File : ĠTask File , Ġprotected Ġval Ġeditor : ĠEditor ) Ġ: ĠBasic Undo able Action ( editor . document ) Ġ{ ĊĊĠ Ġoverride Ġfun Ġredo () Ġ{ ĊĠĠĠ Ġperform Redo () ĊĠĠĠ Ġupdate Config Files () ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġundo () Ġ{ ĊĠĠĠ Ġif Ġ( perform Undo ()) Ġ{ ĊĠĠĠĠĠ Ġupdate Config Files () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġabstract Ġfun Ġperform Undo (): ĠBoolean ĊĊĠ Ġabstract Ġfun Ġperform Redo () ĊĊĠ Ġprivate Ġfun Ġupdate Config Files () Ġ{ ĊĠĠĠ Ġ// invoke Later Ġhere Ġis Ġneeded Ġbecause Ġone Ġcan 't Ġchange Ġdocuments Ġwhile Ġredo / undo ĊĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠ Ġif Ġ( project . is Disposed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn @ invoke Later ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠYaml Format Synchron izer . save Item ( task File . task ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ }