package Ġcom . jetbrains . edu . learning . step ik . course Ċ Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġcom . jetbrains . edu . learning .* Ċ import Ġcom . jetbrains . edu . learning . compatibility . Course Compatibility . Companion . validate Language Ċ import Ġcom . jetbrains . edu . learning . compatibility . Course Compatibility . Compatible Ċ import Ġcom . jetbrains . edu . learning . compatibility . Course Compatibility . In compatible Version Ċ import Ġcom . jetbrains . edu . learning . configuration . E du Configurator Manager Ċ import Ġcom . jetbrains . edu . learning . course Format . E du Course Ċ import Ġcom . jetbrains . edu . learning . messages . E du Core Bundle . message Ċ import Ġcom . jetbrains . edu . learning . step ik . Step ik Names Ċ import Ġcom . jetbrains . edu . learning . step ik . hyper skill . J BA _ DEFAULT _ URL Ċ Ċ class ĠStart Step ik Course Action Ġ: ĠStart Course Action ( Step ik Names . STE PI K ) Ġ{ ĊĠ Ġoverride Ġval Ġdialog : ĠImport Course Dialog ĊĠĠĠ Ġget () Ġ= ĠImport Step ik Course Dialog ( course Connector ) ĊĠ Ġoverride Ġval Ġcourse Connector : ĠCourse Connector Ġ= ĠSte pi k Course Connector ĊĊĠ Ġoverride Ġfun Ġimport Course (): ĠE du Course ? Ġ{ ĊĠĠĠ Ġval Ġcourse Ġ= Ġsuper . import Course () Ġ?: Ġreturn Ġnull ĊĠĠĠ Ġif Ġ( course . is Adaptive ) Ġ{ ĊĠĠĠĠĠ Ġshow Adaptive Courses Are NotSupported Notification ( course . name ) ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( course Ġis ĠSte pi k Course ) Ġ{ ĊĠĠĠĠĠ Ġval Ġlanguage Ġ= Ġget Language For Step ik Course ( course ) ĊĠĠĠĠĠ Ġlanguage ?. let Ġ{ ĊĠĠĠĠĠĠĠ Ġcourse . type Ġ= Ġ"${ Step ik Names . PY CHAR M _ PREFIX }${ JSON _ FORMAT _ VERSION } Ġ${ language . id }" ĊĠĠĠĠĠĠĠ Ġcourse . programming Language Ġ= Ġ"${ language . id } Ġ${ language . version }". trim () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġcourse . validate Language (). onError Ġ{ ĊĠĠĠĠĠĠĠ ĠMessages . show Error Dialog ( it , Ġmessage (" error . failed . to . import . course ")) ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġif Ġ( language ?. language Ġ== Ġnull Ġ|| Ġlanguage . language ?. id Ġ! in ĠE du Configurator Manager . supported E du Languages ) Ġreturn Ġnull ĊĠĠĠĠĠ Ġreturn Ġcourse ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġif Ġ( is Compatible E du Course ( course )) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcourse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġnull ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Language For Step ik Course ( course : ĠSte pi k Course ): ĠE du Language ? Ġ{ ĊĠĠĠ Ġval Ġlanguages Ġ= Ġget Languages Under Progress ( course ). onError Ġ{ ĊĠĠĠĠĠ ĠMessages . show Error Dialog ( it , Ġmessage (" error . failed . to . import . course ")) ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( languages . isEmpty ()) Ġ{ ĊĠĠĠĠĠ ĠMessages . show Error Dialog ( message (" error . no . supported . languages ", Ġcourse . name ), Ġmessage (" error . failed . to . import . course ")) ĊĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġchoose Language IfNeeded ( languages , Ġcourse ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġis Compatible E du Course ( course : ĠE du Course ): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġwhen Ġ( course . compatibility ) Ġ{ ĊĠĠĠĠĠ ĠCompat ible Ġ-> Ġtrue ĊĠĠĠĠĠ ĠIn compatible Version Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Failed Import Course Message ( message (" error . update . plugin ", Ġcourse . name )) ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ// ĠTODO : Ġallow Ġto Ġinstall / enable Ġplugins Ġhere ĊĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġshow Failed Import Course Message ( message (" error . programming . language . not . supported ", Ġcourse . name )) ĊĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġchoose Language IfNeeded ( languages : ĠList < E du Language >, Ġcourse : ĠSte pi k Course ): ĠE du Language ? Ġ{ ĊĠĠĠ Ġreturn Ġif Ġ( languages . size Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠ Ġlanguages [ 0 ] ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠ Ġval Ġsupported Languages Ġ= Ġlanguages . filter Ġ{ Ġit . language ?. id Ġin ĠE du Configurator Manager . supported E du Languages Ġ} ĊĠĠĠĠĠ Ġval Ġchoose Language Dialog Ġ= ĠChoose Step ik Course Language Dialog ( supported Languages , Ġcourse . name ) ĊĠĠĠĠĠ Ġif Ġ( choose Language Dialog . show AndGet ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġchoose Language Dialog . selected Language () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġshow Adaptive Courses Are NotSupported Notification ( course Name : ĠString ) Ġ{ ĊĠĠĠ ĠMessages . show Error Dialog ( message (" error . adaptive . courses . not . supported . message ", Ġcourse Name , ĠJ BA _ DEFAULT _ URL , ĠE du Names . J BA ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmessage (" error . adaptive . courses . not . supported . title ")) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġget Languages Under Progress ( course : ĠSte pi k Course ): ĠResult < List < E du Language >, ĠString > Ġ{ ĊĠĠĠ Ġreturn ĠProgress Manager . getInstance (). run Process With Progress S ynchronously < Result < List < E du Language >, ĠString >, ĠRuntimeException >( ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ ĠProgress Manager . getInstance (). progress Indicator . isIn determinate Ġ= Ġtrue ĊĠĠĠĠĠĠĠ ĠE du Utils . exec Cancel able Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠSte pi k Course Connector . get Supported Languages ( course ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, Ġmessage (" step ik . getting . languages "), Ġtrue , Ġnull ) ĊĠ Ġ} Ċ }