package Ġbe . ma arten bal li au w . r ider . reverse package search Ċ Ċ import Ġcom . intellij . ide . Browser Util Ċ import Ġcom . intellij . openapi . action System . An Action Ċ import Ġcom . intellij . openapi . action System . An ActionEvent Ċ import Ġcom . intellij . openapi . action System . Data Keys Ċ Ċ import Ġjava . io . Unsupported EncodingException Ċ import Ġjava . net . URL Encoder Ċ Ċ /* Ċ Code Ġin Ġthis Ġclass Ġis Ġheav ily Ġbased Ġon Ġhttps :// code . google . com / archive / p / ide ia - google - search / Ċ Ġ*/ Ċ Ċ class ĠReverse Package Search Action Ġ: ĠAn Action () Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠactionPerformed ( ae : ĠAn ActionEvent ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġae . getData ( Data Keys . EDITOR ) ĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġae . getData ( Data Keys . PROJECT ) ĊĠĠĠĠĠĠĠ Ġval Ġword Ġ= Ġget Word At Caret ( editor !!. document . chars Sequence , Ġeditor . caret Model . offset ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( word Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġquery : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= ĠURL Encoder . encode ( word , Ġ" UTF - 8 ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠUnsupported EncodingException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠBrowser Util . browse (" https :// package search . azure websites . net /? q =" Ġ+ Ġquery , Ġproject ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġupdate ( e : ĠAn ActionEvent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠIn Ġthis Ġmethod , Ġwe Ġdecide Ġwhether Ġour Ġaction Ġis Ġshown Ġin Ġthe Ġcurrent Ġcontext Ġor Ġnot . ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġshould Ġonly Ġbe Ġvisible Ġwhen : ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠA Ġproject Ġis Ġloaded ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠAn Ġeditor Ġis Ġopen ĊĠĠĠĠĠĠĠ Ġ// Ġ- ĠA ĠPsi Element Ġis Ġavailable ĊĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠ Ġ( current ĠPsi Element Ġis Ġa Ġfull ĠFile Ġinstead Ġof Ġa Ġsyntax Ġtree Ġwe Ġcan Ġreason Ġabout , Ġbut Ġgood Ġto Ġcheck ) ĊĊĠĠĠĠĠĠĠ Ġval Ġproject Ġ= Ġe !!. getData ( Data Keys . PROJECT ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( project Ġ== Ġnull Ġ|| Ġproject . is Default ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . presentation . isVisible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . presentation . isEnabled Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġe . getData ( Data Keys . EDITOR ) ĊĠĠĠĠĠĠĠ Ġval Ġpsi Element Ġ= Ġe . getData ( Data Keys . P SI _ ELEMENT ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( editor Ġ== Ġnull Ġ|| Ġpsi Element Ġ== Ġnull Ġ|| Ġeditor . document . text Length Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġe . presentation . isEnabled And Visible Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġe . presentation . isEnabled And Visible Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġget Word At Caret ( editor Text : ĠCharSequence , Ġcaret Offset : ĠInt ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġcaret Offset Ġ= Ġcaret Offset ĊĊĠĠĠĠĠĠĠ Ġif Ġ( editor Text . isEmpty ()) Ġreturn Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( caret Offset Ġ> Ġ 0 Ġ&& Ġ! Character . is Java Identifier Part ( editor Text [ caret Offset ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ&& ĠCharacter . is Java Identifier Part ( editor Text [ caret Offset Ġ- Ġ 1 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcaret Offset -- ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Character . is Java Identifier Part ( editor Text [ caret Offset ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġstart Ġ= Ġcaret Offset ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġend Ġ= Ġcaret Offset ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( start Ġ> Ġ 0 Ġ&& ĠCharacter . is Java Identifier Part ( editor Text [ start Ġ- Ġ 1 ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstart -- ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( end Ġ< Ġeditor Text . length Ġ&& ĠCharacter . is Java Identifier Part ( editor Text [ end ])) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġend ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġeditor Text . sub Sequence ( start , Ġend ). toString () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ }