/******************************************************************************* Ċ Ġ* ĠCopyright Ġ 2 0 0 0 - 2 0 1 6 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ* Ċ Ġ************************************************************************* ******/ Ċ package Ġorg . jetbrains . kotlin . completion Ċ Ċ import Ġcom . intellij . psi . util . Psi Tree Util Ċ import Ġjavax . swing . Image Icon Ċ import Ġjavax . swing . Swing Utilities Ċ import Ġjavax . swing . text . Styled Document Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Declaration Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Function Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Package Fragment Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Package View Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Value Parameter Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Variable Descriptor Ċ import Ġorg . jetbrains . kotlin . psi . Kt Import Directive Ċ import Ġorg . jetbrains . kotlin . renderer . Descriptor Renderer Ċ import Ġorg . jetbrains . kotlin . utils . Kotlin Image Provider Ċ import Ġorg . netbeans . modules . cs l . api . Element Handle Ċ import Ġorg . netbeans . modules . cs l . api . Html Formatter Ċ import Ġorg . netbeans . modules . cs l . spi . Default Completion Proposal Ċ import Ġorg . jetbrains . kotlin . navigation . netbeans . getElement With Source Ċ import Ġorg . jetbrains . kotlin . resolve . lang . java . resolver . Net Beans Java Source Element Ċ import Ġorg . netbeans . api . project . Project Ċ import Ġorg . jetbrains . kotlin . navigation . netbeans . move Caret To Offset Ċ import Ġorg . jetbrains . kotlin . resolve . lang . java . get Java Doc Ċ import Ġorg . jetbrains . kotlin . diagnostics . netbeans . parser . Kotlin Parser Ċ import Ġjavax . swing . text . Document Ċ import Ġorg . netbeans . modules . cs l . api . Element Kind Ċ Ċ class ĠKotlin Completion Proposal ( private Ġval Ġid en Start Offset : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdescriptor : ĠDeclaration Descriptor , Ġval Ġdoc : ĠStyled Document , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix : ĠString , Ġval Ġproject : ĠProject ) Ġ: ĠDefault Completion Proposal (), ĠInser table Proposal Ġ{ ĊĊĠĠĠ Ġval Ġtext : ĠString Ġ= Ġdescriptor . name . identifier ĊĠĠĠ Ġprivate Ġval Ġproposal : ĠString Ġ= ĠDescriptor Renderer . ONLY _ NAMES _ WITH _ SHORT _ TYPES . render ( descriptor ) ĊĠĠĠ Ġval Ġtype : ĠString ĊĠĠĠ Ġprivate Ġval Ġproposal Name : ĠString ĊĠĠĠ Ġprivate Ġval ĠFIELD _ ICON : ĠImage Icon ? Ġ= ĠKotlin Image Provider . getImage ( descriptor ) ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsplit ted Ġ= Ġproposal . split (": ") ĊĠĠĠĠĠĠĠ Ġproposal Name Ġ= Ġsplit ted [ 0 ] ĊĠĠĠĠĠĠĠ Ġtype Ġ= Ġif Ġ( split ted . size Ġ> Ġ 1 ) Ġsplit ted [ 1 ] Ġelse Ġ"" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Element (): ĠElement Handle ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsource Ġ= Ġget Element With Source ( descriptor , Ġproject ) Ġas ? ĠNet Beans Java Source Element Ġ?: Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġval Ġhandle Ġ= Ġsource . getElement Binding () ĊĠĠĠĠĠĠĠ Ġval Ġdoc Ġ= Ġhandle . get Java Doc ( project ) Ġ?: Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġreturn ĠElement Handle . Url Handle ( doc . raw Comment Text ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget L hs Html ( formatter : ĠHtml Formatter ) Ġ= Ġproposal Name ĊĠĠĠ Ġoverride Ġfun Ġget R hs Html ( formatter : ĠHtml Formatter ) Ġ= Ġtype ĊĠĠĠ Ġoverride Ġfun ĠgetName () Ġ= Ġproposal Name ĊĠĠĠ Ġoverride Ġfun Ġget Insert Prefix () Ġ= Ġproposal Name ĊĠĠĠ Ġoverride Ġfun Ġget Sort Text () Ġ= Ġproposal Name ĊĠĠĠ Ġoverride Ġfun Ġget Anchor Offset () Ġ= Ġid en Start Offset ĊĠĠĠ Ġoverride Ġfun Ġget Icon () Ġ= ĠFIELD _ ICON ĊĊĠĠĠ Ġoverride Ġfun Ġget Kind () Ġ= Ġwhen Ġ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠVariable Descriptor Ġ-> ĠElement Kind . FIELD ĊĠĠĠĠĠĠĠ Ġis ĠFunction Descriptor Ġ-> ĠElement Kind . METHOD ĊĠĠĠĠĠĠĠ Ġis ĠClass Descriptor Ġ-> ĠElement Kind . CLASS ĊĠĠĠĠĠĠĠ Ġis ĠPackage Fragment Descriptor , Ġis ĠPackage View Descriptor Ġ-> ĠElement Kind . PACKAGE ĊĠĠĠĠĠĠĠ Ġelse Ġ-> ĠElement Kind . OTHER ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Sort Pri o Override () Ġ= Ġwhen Ġ( descriptor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠVariable Descriptor Ġ-> Ġ 2 0 ĊĠĠĠĠĠĠĠ Ġis ĠFunction Descriptor Ġ-> Ġ 3 0 ĊĠĠĠĠĠĠĠ Ġis ĠClass Descriptor Ġ-> Ġ 4 0 ĊĠĠĠĠĠĠĠ Ġis ĠPackage Fragment Descriptor , Ġis ĠPackage View Descriptor Ġ-> Ġ 1 0 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ 1 5 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġfunction Action () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfunction Descriptor Ġ= Ġdescriptor Ġas ĠFunction Descriptor ĊĠĠĠĠĠĠĠ Ġval Ġparams Ġ= Ġfunction Descriptor . value Parameters ĊĊĠĠĠĠĠĠĠ Ġval Ġimport Directive : ĠK t Import Directive ? Ġ= ĠPsi Tree Util . get Non Strict Parent OfType ( Kotlin Parser . file ?. findElement At ( iden Start Offset Ġ- Ġ 1 ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠK t Import Directive :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġis Import Ġ= Ġimport Directive Ġ!= Ġnull ĊĊĠĠĠĠĠĠĠ Ġdoc . remove ( iden Start Offset , Ġprefix . length ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( is Import ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . insert String ( iden Start Offset , Ġtext , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ing Utilities . invoke Later Ġ{ Ġmove Caret To Offset ( doc , Ġid en Start Offset Ġ+ Ġtext . length ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( params . size Ġ== Ġ 1 Ġ&& Ġname . contains (" -> ")) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdoc . insert String ( iden Start Offset , Ġ"$ text Ġ{ Ġ Ġ} ", Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ing Utilities . invoke Later Ġ{ Ġmove Caret To Offset ( doc , Ġid en Start Offset Ġ+ Ġ"$ text Ġ{ Ġ". length ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġdoc . insert String ( iden Start Offset , Ġ"$ text ${ params . join ToString ( prefix Ġ= Ġ" (", Ġpostfix Ġ= Ġ") ") Ġ{ ĠgetValue Parameter ( it ) Ġ}} ", Ġnull ) ĊĠĠĠĠĠĠĠ Ġif Ġ( params . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSw ing Utilities . invoke Later Ġ{ Ġmove Caret To Offset ( doc , Ġid en Start Offset Ġ+ Ġtext . length Ġ+ Ġ 1 ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetValue Parameter ( desc : ĠValue Parameter Descriptor ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġkotlin Type Ġ= Ġdesc . type ĊĠĠĠĠĠĠĠ Ġval Ġclassifier Descriptor Ġ= Ġkotlin Type . constructor . declaration Descriptor Ġ?: Ġreturn Ġdesc . name . asString () ĊĊĠĠĠĠĠĠĠ Ġval ĠtypeName Ġ= Ġclassifier Descriptor . name . asString () ĊĠĠĠĠĠĠĠ Ġreturn ĠgetValue ForType ( typeName ) Ġ?: Ġdesc . name . asString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġdo Insert ( document : ĠDocument ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( descriptor Ġis ĠFunction Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Action () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . remove ( iden Start Offset , Ġprefix . length ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdocument . insert String ( iden Start Offset , Ġtext , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ interface ĠInser table Proposal Ġ{ ĊĠĠĠ Ġfun Ġdo Insert ( document : ĠDocument ) Ċ } Ċ