// ĠCopyright Ġ 2 0 0 0 - 2 0 2 0 Ġ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 Ġorg . jetbrains . plugins . github . pull request . ui . tool window Ċ Ċ import Ġcom . intellij . code Insight . Auto Popup Controller Ċ import Ġcom . intellij . code Insight . completion . Completion ResultSet Ċ import Ġcom . intellij . code Insight . completion . Insert Handler Ċ import Ġcom . intellij . code Insight . completion . Insertion Context Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Ċ import Ġcom . intellij . code Insight . lookup . Lookup Element Builder Ċ import Ġcom . intellij . openapi . editor . Editor Modification Util Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . util . TextField Completion Provider D umb Aware Ċ import Ġorg . jetbrains . plugins . github . api . data . Github Issue State Ċ import Ġorg . jetbrains . plugins . github . api . data . request . search . Github Issue Search Sort Ċ import Ġorg . jetbrains . plugins . github . pull request . data . GH PR Search Query Ċ Ċ class ĠGH PR Search Completion Provider ( project : ĠProject ) Ġ: ĠTextField Completion Provider D umb Aware ( true ) Ġ{ ĊĠ Ġprivate Ġval Ġadd Colon Insert Handler Ġ= Ġobject Ġ: ĠInsert Handler < Lookup Element > Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġhandle Insert ( context : ĠInsert ion Context , Ġitem : ĠLookup Element ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( context . completion Char Ġ== Ġ': ') Ġreturn ĊĠĠĠĠĠ Ġval Ġeditor Ġ= Ġcontext . editor ĊĠĠĠĠĠ Ġif Ġ(! is At Colon ( context )) Ġ{ ĊĠĠĠĠĠĠĠ ĠEditor Modification Util . insert String At Caret ( editor , Ġ": ") ĊĠĠĠĠĠĠĠ Ġcontext . commit Document () ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ ĠAuto Popup Controller . getInstance ( project ). auto Popup Member Lookup ( editor , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis At Colon ( context : ĠInsert ion Context ): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġval Ġstart Offset Ġ= Ġcontext . start Offset ĊĠĠĠĠĠ Ġval Ġdocument Ġ= Ġcontext . document ĊĠĠĠĠĠ Ġreturn Ġdocument . text Length Ġ> Ġstart Offset Ġ&& Ġdocument . chars Sequence [ start Offset ] Ġ== Ġ':' ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġadd Completion Variants ( text : ĠString , Ġoffset : ĠInt , Ġprefix : ĠString , Ġresult : ĠCompletion ResultSet ) Ġ{ ĊĠĠĠ Ġval Ġqualifier Name Ġ= ĠgetCurrent Qualifier Name ( text , Ġoffset ) ĊĠĠĠ Ġif Ġ( qual ifier Name Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( GH PR Search Query . Qualifier Name . state ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tail Text (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Insert Handler ( add Colon Insert Handler )) ĊĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( GH PR Search Query . Qualifier Name . author ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tail Text (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Type Text (" username ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Insert Handler ( add Colon Insert Handler )) ĊĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( GH PR Search Query . Qualifier Name . assign ee ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tail Text (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Type Text (" username ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Insert Handler ( add Colon Insert Handler )) ĊĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( GH PR Search Query . Qualifier Name . after ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tail Text (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Type Text (" YYYY - MM - DD ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Insert Handler ( add Colon Insert Handler )) ĊĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( GH PR Search Query . Qualifier Name . before ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tail Text (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Type Text (" YYYY - MM - DD ", Ġtrue ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Insert Handler ( add Colon Insert Handler )) ĊĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( GH PR Search Query . Qualifier Name . sortBy ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Tail Text (": ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Insert Handler ( add Colon Insert Handler )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġelse Ġwhen Ġ{ ĊĠĠĠĠĠ Ġqualifier Name . equals ( GH PR Search Query . Qualifier Name . state . name , Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( state Ġin ĠGithub Issue State . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( state . name )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġqualifier Name . equals ( GH PR Search Query . Qualifier Name . sortBy . name , Ġtrue ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( sort Ġin ĠGithub Issue Search Sort . values ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġresult . addElement ( Lookup Element Builder . create ( sort . name )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠPrefix Ġis Ġthe Ġchar Ġsequence Ġfrom Ġlast Ġspace Ġor Ġfirst Ġcolon Ġafter Ġspace / line Ġstart Ġto Ġcaret ĊĠĠ Ġ*/ ĊĠ Ġoverride Ġfun Ġget Prefix ( current Text Prefix : ĠString ): ĠString Ġ{ ĊĠĠĠ Ġval Ġspace Idx Ġ= Ġcurrent Text Prefix . lastIndexOf (' Ġ') ĊĠĠĠ Ġval Ġcolon Idx Ġ= Ġcurrent Text Prefix . indexOf (' :', ĠMath . max ( space Idx , Ġ 0 )) ĊĠĠĠ Ġreturn Ġcurrent Text Prefix . substring ( Math . max ( space Idx , Ġcolon Idx ) Ġ+ Ġ 1 ) ĊĠ Ġ} ĊĊĠ Ġ/** ĊĠĠ Ġ* ĠCurrent Ġqualifier Ġname Ġis Ġthe Ġnearest Ġchar Ġsequence Ġin Ġbetween Ġspace Ġand Ġcolon Ġor Ġbefore Ġfirst Ġcolon ĊĠĠ Ġ* Ġ" q name : test " Ġ-> Ġ" q name " ĊĠĠ Ġ* Ġ" q name : test : test " Ġ-> Ġ" q name " ĊĠĠ Ġ* Ġ" Ġq name : test : test " Ġ-> Ġ" q name " ĊĠĠ Ġ* Ġ" Ġq name : test : test Ġ" Ġ-> Ġnull ĊĠĠ Ġ*/ ĊĠ Ġprivate Ġfun ĠgetCurrent Qualifier Name ( text : ĠString , Ġoffset : ĠInt ): ĠString ? Ġ{ ĊĠĠĠ Ġval Ġspace Idx Ġ= Ġtext . lastIndexOf (' Ġ', Ġoffset Ġ- Ġ 1 ) ĊĠĠĠ Ġval Ġcolon Idx Ġ= Ġtext . indexOf (' :', ĠMath . max ( space Idx , Ġ 0 )) ĊĠĠĠ Ġif Ġ( colon Idx Ġ< Ġ 0 Ġ|| Ġspace Idx Ġ> Ġcolon Idx ) Ġreturn Ġnull ĊĠĠĠ Ġreturn Ġtext . substring ( space Idx Ġ+ Ġ 1 , Ġcolon Idx ) ĊĠ Ġ} Ċ }