// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe ĠLICENSE Ġfile . Ċ package Ġcom . intellij . gr az ie . remote Ċ Ċ import Ġcom . intellij . gr az ie . Gr az ie Config Ċ import Ġcom . intellij . gr az ie . Gr az ie Dynamic Ċ import Ġcom . intellij . gr az ie . Gr az ie Plugin Ċ import Ġcom . intellij . gr az ie . ide . ui . components . dsl . msg Ċ import Ġcom . intellij . gr az ie . j language . Lang Ċ import Ġcom . intellij . openapi . progress . Progress Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . util . download . Download able File Service Ċ import Ġcom . intellij . util . lang . Url ClassLoader Ċ import Ġjava . nio . file . Path Ċ Ċ internal Ġobject ĠLang Downloader Ġ{ ĊĠ Ġfun Ġdownload ( lang : ĠLang , Ġproject : ĠProject ?): ĠBoolean Ġ{ ĊĠĠĠ Ġ// Ġcheck Ġif Ġlanguage Ġlib Ġalready Ġloaded ĊĠĠĠ Ġif Ġ( Gr az ie Remote . is Available Loc ally ( lang )) Ġreturn Ġtrue ĊĊĠĠĠ Ġval Ġresult Ġ= ĠProgress Manager . getInstance (). run Process With Progress S ynchronously < List < Path >, ĠException >( ĊĠĠĠĠĠ Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdown loader Ġ= ĠDownload able File Service . getInstance () ĊĠĠĠĠĠĠĠ Ġdown loader . create Downloader ( ĊĠĠĠĠĠĠĠĠĠ ĠlistOf ( downloader . create File Description ( lang . remote . url , Ġlang . remote . fileName )), ĊĠĠĠĠĠĠĠĠĠ Ġmsg (" gr az ie . settings . proof reading . languages . download . name ", Ġlang . native Name ) ĊĠĠĠĠĠĠĠ Ġ). download ( Gr az ie Dynamic . dynamic Folder . to File ()). map Ġ{ Ġit . first . to Path () Ġ} ĊĠĠĠĠĠ Ġ}, Ġmsg (" gr az ie . settings . proof reading . languages . download . name ", Ġlang . native Name ), Ġfalse , Ġproject ) ĊĊĊĠĠĠ Ġ// Ġnull Ġif Ġcanceled Ġor Ġfailed , Ġzero Ġresult Ġif Ġnothing Ġfound ĊĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠ Ġval Ġclass Loader Ġ= ĠUrl ClassLoader . build (). parent ( Gr az ie Plugin . class Loader ) ĊĠĠĠĠĠĠĠ Ġ. files ( result ). get () ĊĊĠĠĠĠĠ ĠGr az ie Dynamic . add Dyn ClassLoader ( class Loader ) ĊĊĠĠĠĠĠ ĠGr az ie Config . update Ġ{ Ġstate Ġ-> Ġstate . copy () Ġ} ĊĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} Ċ } Ċ