package Ġutils Ċ Ċ import Ġcom . intellij . ide . util . Properties Component Ċ import Ġcom . intellij . openapi . vfs . Local FileSystem Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . file Editor . File Editor Manager Ċ import Ġcom . intellij . openapi . file Editor . Open FileDescriptor Ċ import Ġcom . intellij . openapi . file Editor . ex . File Editor Provider Manager Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġcom . intellij . openapi . util . Icon Loader Ċ import Ġmodel . Code Type Ċ import Ġjava . io . File Ċ import Ġjava . io . IOException Ċ import Ġjavax . swing . Icon ĊĊ Ċ /** Ċ Ġ* Ġ@ author Ġdeadline Ċ Ġ* Ġ@ time Ġ 2 0 1 8 / 5 / 1 0 Ċ Ġ*/ Ċ object ĠUtils Ġ{ ĊĊĠĠĠ Ġfun Ġ< T > Ġshow Choose Dialog ( source Array : ĠArray < Pair < String , ĠT >>, Ġblock : Ġ( T ) Ġ-> ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( source Array ) ĊĠĠĠĠĠĠĠ Ġval Ġarray : ĠArray < String ?> Ġ= ĠarrayOf Null s < String >( source Array . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġitem ) Ġin Ġsource Array . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray [ index ] Ġ= Ġitem . first ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠMessages . show Choose Dialog (" choose ĠType ", Ġ" choose ĠType ", Ġarray , Ġarray [ 0 ], Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsource Array [ position ]. second ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T > Ġshow Choose Dialog ( source Array : ĠArray < T >, Ġblock : Ġ( T ) Ġ-> ĠString ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ ĠcheckNotNull ( source Array ) ĊĠĠĠĠĠĠĠ Ġval Ġarray : ĠArray < String ?> Ġ= ĠarrayOf Null s < String >( source Array . size ) ĊĠĠĠĠĠĠĠ Ġfor Ġ(( index , Ġitem ) Ġin Ġsource Array . with Index ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġarray [ index ] Ġ= Ġblock ( item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġposition Ġ= ĠMessages . show Choose Dialog (" choose ĠType ", Ġ" choose ĠType ", Ġarray , Ġarray [ 0 ], Ġnull ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsource Array [ position ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ è¾ĵåħ¥ æ¡Ĩ dialog ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Input Dialog () Ġ= ĠMessages . show Input Dialog ( null , Ġ" Input Ġclass Ġname ", Ġ" Input Ġclass Ġname ", Ġnull ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġæł¹æį® çĶ¨æĪ· è®¾ç½® èİ·åıĸ é»ĺè®¤ çļĦ è¯Ńè¨Ģ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠgetDefault Code Type (): ĠCode Type Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġvalue Ġ= ĠProperties Component . getInstance (). getInt ( Default _ Language _ Key , ĠDefault _ Language _ Java ) ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( value Ġ== ĠDefault _ Language _ Java ) ĠCode Type . Java Ġelse ĠCode Type . Kotlin ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵå¼Ģ ç±» æĸĩä»¶ ĊĠĠĠĠ Ġ* Ġ@ param ĠfilePath ĊĠĠĠĠ Ġ* Ġ@ param Ġproject ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġopen File In Panel ( filePath : ĠString , Ġproject : ĠProject ) Ġ{ ĊĠĠĠĠĠĠĠ ĠApplication Manager . getApplication (). invoke Later Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠLocal FileSystem . getInstance (). refresh And Find File By Path ( filePath ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( file Ġ!= Ġnull Ġ&& Ġfile . isValid ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġproviders Ġ= ĠFile Editor Provider Manager . getInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. get Providers ( project , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( providers . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor Ġ= ĠOpen FileDescriptor ( project , Ġfile ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠFile Editor Manager . getInstance ( project ). open Text Editor ( descriptor , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ æīĵå¼Ģ æĸĩä»¶å¤¹ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġopen Directory ( directory : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfile Ġ= ĠFile ( directory ) ĊĠĠĠĠĠĠĠ Ġif Ġ(! file . exists () Ġ|| Ġ! file . isDirectory ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava . awt . Desktop . get Desktop (). open ( file ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIOException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġèİ·åıĸ åĽ¾çīĩ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġget Icon ( name : ĠString ): ĠIcon Ġ= ĠIcon Loader . get Icon ("/ icons /$ name ") Ċ }