package Ġcom . jetbrains . edu . course creator . actions . step ik Ċ Ċ import Ġcom . google . gson .* Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . application . run Write Action Ċ import Ġcom . intellij . openapi . file Editor . File Editor Manager Ċ import Ġcom . intellij . openapi . project . D umb Aware Action Ċ import Ġcom . intellij . openapi . vfs . V fs Util Ċ import Ġcom . jetbrains . edu . course creator . CC Utils Ċ import Ġcom . jetbrains . edu . learning . E du Names Ċ import Ġcom . jetbrains . edu . learning . E du Utils Ċ import Ġcom . jetbrains . edu . learning . Study Task Manager Ċ import Ġcom . jetbrains . edu . learning . course Format . Item Container Ċ import Ġcom . jetbrains . edu . learning . course Format . Lesson Ċ import Ġcom . jetbrains . edu . learning . course Format . Remote Course Ċ import Ġcom . jetbrains . edu . learning . course Format . Study Item Ċ Ċ @ Suppress (" Component Not Registered ") Ġ// Ġeduc ational - core . xml Ċ class ĠExport Step ik Ids Ġ: ĠD umb Aware Action (" Export ĠSte pi k ĠI ds ", Ġ" Exports ĠSte pi k Ġids Ġas Ġjson ", Ġnull ) Ġ{ ĊĊĠ Ġprivate Ġfun Ġ< T > ĠJsonObject . add Children ( propertyName : ĠString , Ġchildren : ĠList < T >, Ġserialize Child : Ġ( T ) Ġ-> ĠJson Element ) Ġ{ ĊĠĠĠ Ġval Ġjson Array Ġ= ĠJson Array () ĊĠĠĠ Ġfor Ġ( child Item Ġin Ġchildren ) Ġ{ ĊĠĠĠĠĠ Ġjson Array . add ( serialize Child ( child Item )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġadd ( propertyName , Ġjson Array ) ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġval Ġproject Ġ= Ġe . project Ġ?: Ġreturn ĊĠĠĠ Ġval Ġcourse Ġ= ĠStudy Task Manager . getInstance ( project ). course Ġ?: Ġreturn ĊĊĠĠĠ Ġval Ġserializer Ġ= ĠJsonSerializer < Study Item > Ġ{ Ġitem , Ġtype , Ġcontext Ġ-> ĊĠĠĠĠĠ Ġval ĠjsonObject Ġ= ĠJsonObject () ĊĠĠĠĠĠ ĠjsonObject . addProperty (" title ", Ġitem . name ) ĊĠĠĠĠĠ ĠjsonObject . addProperty (" id ", Ġitem . id ) ĊĊĠĠĠĠĠ Ġval Ġserialize Study Item : Ġ( Study Item ) Ġ-> ĠJson Element Ġ= Ġ{ Ġitem To Serialize Ġ-> Ġcontext . serialize ( item To Serialize , ĠStudy Item :: class . java ) Ġ} ĊĊĠĠĠĠĠ Ġif Ġ( item Ġis ĠItem Container ) Ġ{ ĊĠĠĠĠĠĠĠ ĠjsonObject . add Children (" items ", Ġitem . items , Ġserialize Study Item ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( item Ġis ĠLess on ) Ġ{ ĊĠĠĠĠĠĠĠ ĠjsonObject . add Children (" task _ list ", Ġitem . task List , Ġserialize Study Item ) ĊĠĠĠĠĠĠĠ ĠjsonObject . addProperty (" unit _ id ", Ġitem . unit Id ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( item Ġis ĠRemote Course ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( item . section Ids . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠjsonObject . add Children (" section Ids ", Ġitem . section Ids ) Ġ{ Ġid Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠJson Primitive ( id ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠjsonObject ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġgson Ġ= ĠGson Builder (). register Type Adapter ( Study Item :: class . java , Ġserializer ). set Pretty Print ing (). create () ĊĠĠĠ Ġval Ġjson Ġ= Ġgson . toJson ( course , ĠStudy Item :: class . java ) ĊĠĠĠ Ġrun Write Action Ġ{ ĊĠĠĠĠĠ Ġval Ġstep ik Ids File Ġ= ĠE du Utils . getC ourse Dir ( project ). find OrCreate Child Data ( this , ĠE du Names . STE PI K _ IDS _ JSON ) ĊĠĠĠĠĠ ĠV fs Util . save Text ( step ik Ids File , Ġjson ) ĊĠĠĠĠĠ ĠFile Editor Manager . getInstance ( project ). open File ( step ik Ids File , Ġtrue ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġupdate ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġval Ġpresentation Ġ= Ġe . presentation ĊĠĠĠ Ġpresentation . isEnabled And Visible Ġ= Ġfalse ĊĠĠĠ Ġval Ġproject Ġ= Ġe . project Ġ?: Ġreturn ĊĠĠĠ Ġif Ġ(! CC Utils . is Course Creator ( project )) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġcourse Ġ= ĠStudy Task Manager . getInstance ( project ). course Ġ?: Ġreturn ĊĠĠĠ Ġif Ġ( course Ġ! is ĠRemote Course ) Ġ{ ĊĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĠĠĠ Ġpresentation . isEnabled And Visible Ġ= Ġtrue ĊĠ Ġ} Ċ }