/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠN az mul ĠI dr is . ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* Ġ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 Ġactions Ċ Ċ 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 . Common Data Keys Ċ import Ġcom . intellij . openapi . ui . Messages Ċ import Ġjava . net . URL Encoder Ċ Ċ class ĠAsk Question On Stack Overflow Action Ġ: ĠAn Action () Ġ{ ĊĠ Ġoverride Ġfun ĠactionPerformed ( event : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ ĠBrowser Util . browse (" https :// stackoverflow . com / questions / ask ") ĊĠ Ġ} Ċ Ċ } Ċ Ċ /** Ċ Ġ* Ġ[ handler ] Ġallows Ġthis Ġclass Ġto Ġbe Ġmocked . ĠIf Ġnothing Ġis Ġpassed , Ġthen Ġthis Ċ Ġ* Ġaction Ġdoes Ġwhat Ġit Ġis Ġsupposed Ġto . ĠOtherwise , Ġthis Ġhandler Ġgets Ġpassed Ċ Ġ* Ġtwo Ġthings : Ċ Ġ* Ġ 1 . Ġselected Text : ĠString Ċ Ġ* Ġ 2 . Ġlang Tag : ĠString Ċ Ġ*/ Ċ class ĠSearch On Stack Overflow Action ( ĊĠĠĠ Ġval Ġhandler : Ġ(( String , ĠString ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ: ĠAn Action () Ġ{ ĊĠ Ġoverride Ġfun Ġupdate ( event : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġwith ( event . get Required Data ( Common Data Keys . EDITOR )) Ġ{ ĊĠĠĠĠĠ Ġval Ġcondition Ġ= Ġcaret Model . current Caret . has Selection () ĊĠĠĠĠĠ Ġevent . presentation . isEnabled And Visible Ġ= Ġcondition ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun ĠactionPerformed ( event : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġval Ġlang Tag : ĠString Ġ= Ġwith ( event . getData ( Common Data Keys . P SI _ FILE )) Ġ{ ĊĠĠĠĠĠ Ġthis ?. run Ġ{ ĊĠĠĠĠĠĠĠ Ġ"+ [ ${ language . displayName . toLowerCase ()} + ]" ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġ?: Ġ"" ĊĊĠĠĠ Ġval Ġselected Text : ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġwith ( event . get Required Data ( Common Data Keys . EDITOR )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġcaret Model . current Caret . selected Text ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġ"" ĊĊĠĠĠ Ġval Ġmy Handler Ġ= Ġhandler Ġ?: Ġ{ Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠ Ġif Ġ( selected Text . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠMessages . showMessageDialog ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġevent . project , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Please Ġselect Ġsomething Ġbefore Ġrunning Ġthis Ġaction ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" Search Ġon ĠStack ĠOverflow ", ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMessages . get Warning Icon ()) ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĠURL Encoder . encode ( selected Text , Ġ" UTF - 8 ") Ġ+ Ġlang Tag ĊĠĠĠĠĠĠĠ ĠBrowser Util . browse (" https :// stackoverflow . com / search ? q =$ query ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġmy Handler . invoke ( selected Text , Ġlang Tag ) ĊĊĠ Ġ} Ċ Ċ }