package Ġcom . virt link . editor services . lsp . resources Ċ Ċ import Ġcom . google . inject . Inject Ċ import Ġcom . virt link . editor services . Offset Ċ import Ġcom . virt link . editor services . Position Ċ import Ġcom . virt link . editor services . lsp . content . Document Content Manager Ċ import Ġcom . virt link . editor services . resources . IA esi Content Ċ import Ġcom . virt link . editor services . resources . I Content Ċ import Ġcom . virt link . editor services . resources . I ResourceManager Ċ import Ġjava . io . File Ċ import Ġjava . net . URI Ċ Ċ /** Ċ Ġ* ĠThe ĠL SP Ġresource Ġmanager . Ċ Ġ*/ Ċ @ Suppress (" Private PropertyName ") Ċ class ĠL sp ResourceManager Ġ@ Inject Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġdocument Content Manager : ĠDocument Content Manager ) ĊĠĠĠ Ġ: ĠI ResourceManager Ġ{ ĊĊĠĠĠ Ġ// ĠAn ĠURI Ġstarts Ġwith Ġthe Ġproject Ġname Ġ( always Ġ` project ` Ġin Ġour Ġcase ) ĊĠĠĠ Ġ// Ġfollowed Ġby Ġthe Ġproject - relative Ġpath Ġto Ġthe Ġfile Ġor Ġfolder . ĊĠĠĠ Ġ// ĠFor Ġexample : ĊĠĠĠ Ġ// Ġlsp :/// project / !/ folder / filename ĊĊĠĠĠ Ġprivate Ġval ĠL SP _ SCHEME : ĠString Ġ= Ġ" lsp " ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġproject ĠURI ; Ġor Ġnull Ġwhen Ġno Ġproject Ġis Ġopened . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġproject Uri : ĠURI ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠOpen s Ġthe Ġproject Ġwith Ġthe Ġspecified Ġproject ĠURI . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe Ġbase ĠURI Ġof Ġfiles Ġin Ġthe Ġproject . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġopen Project ( uri : ĠURI ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this . project Uri Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" There Ġis Ġalready Ġan Ġopen Ġproject : Ġ$ project Uri ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! uri . is Absolute ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" The Ġproject ĠURI Ġmust Ġbe Ġabsolute : Ġ$ uri ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . project Uri Ġ= Ġuri ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġclose Project () Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . project Uri Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġfile Ġfrom Ġthe ĠURI . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġuri ĠThe ĠURI . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe Ġfile ; Ġor Ġnull Ġwhen Ġit Ġcould Ġnot Ġbe Ġdetermined . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetFile ( uri : ĠURI ): ĠFile ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( uri . scheme Ġ!= ĠL SP _ SCHEME ) Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġproject Uri Ġ= Ġthis . project Uri Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval Ġproject Path Separator Ġ= Ġuri . path . indexOf (' !') ĊĠĠĠĠĠĠĠ Ġif Ġ( project Path Separator Ġ>= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= Ġuri . path . substring ( 0 , Ġproject Path Separator ). trim ('/') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpath Ġ= Ġuri . path . substring ( project Path Separator Ġ+ Ġ 1 ). trim Start ('/') ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠFile ( project Uri . resolve ( URI ( path )). path ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe ĠURI Ġfrom Ġa Ġfile . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfile ĠThe Ġfile . ĊĠĠĠĠ Ġ* Ġ@ return ĠThe ĠURI ; Ġor Ġnull Ġwhen Ġit Ġcould Ġnot Ġbe Ġdetermined . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Uri ( file : ĠFile ): ĠURI ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġproject Uri Ġ= Ġthis . project Uri Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġfile Uri Ġ= Ġproject Uri . rel ativ ize ( file . to URI ()) ĊĠĠĠĠĠĠĠ Ġif Ġ( file Uri . is Absolute ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġproject Ġis Ġnot Ġan Ġancestor Ġof Ġthis Ġfile . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= Ġ" project " ĊĠĠĠĠĠĠĠ Ġreturn ĠURI ("$ L SP _ SCHEME :// /$ projectName !/ ${ file Uri . path }") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfix Java Uri ( uri : ĠURI ): ĠURI Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( uri . scheme Ġ== Ġ" file " Ġ&& Ġ! uri . scheme Specific Part . startsWith ("// ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠURI ( uri . scheme Ġ+ Ġ" ://" Ġ+ Ġuri . scheme Specific Part ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġuri ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠTrans lates Ġan ĠL SP ĠURI Ġto Ġan ĠAES I ĠURI . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Uri From L SP Uri ( lsp Uri : ĠString ): ĠURI Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġget Uri ( File ( URI ( lsp Uri ))) !! ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Project Of ( uri : ĠURI ): ĠURI ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( getFile ( uri ) Ġ== Ġnull ) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġval ĠprojectName Ġ= Ġ" project " ĊĠĠĠĠĠĠĠ Ġreturn ĠURI ("$ L SP _ SCHEME :// /$ projectName /") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Project ( uri : ĠURI ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġuri . toString () Ġ== Ġ"$ L SP _ SCHEME :/// project /" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis Folder ( uri : ĠURI ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetFile ( uri )?. isDirectory Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis File ( uri : ĠURI ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetFile ( uri )?. isFile Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġexists ( uri : ĠURI ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠgetFile ( uri )?. exists () Ġ?: Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Children ( uri : ĠURI ): ĠIterable < URI >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠgetFile ( uri ) Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġfile . list Files (). map NotNull Ġ{ Ġf Ġ-> Ġget Uri ( f ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetContent ( uri : ĠURI ): ĠI Content ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . document Content Manager . get Latest Content ( uri ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetParent ( uri : ĠURI ): ĠURI ? Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġis Ġprobably Ġnot Ġcorrect Ġin Ġall Ġsituations . ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( uri . path . endsWith ("/ ")) Ġuri . resolve (" .. ") Ġelse Ġuri . resolve (".") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Offset ( content : ĠI Content , Ġposition : ĠPosition ): ĠOffset ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( content Ġas ? ĠIA esi Content )?. get Offset ( position ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Position ( content : ĠI Content , Ġoffset : ĠOffset ): ĠPosition ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( content Ġas ? ĠIA esi Content )?. getPosition ( offset ) ĊĠĠĠ Ġ} Ċ Ċ }