package Ġui Ċ Ċ import Ġcom . intellij . code Insight . daemon . Line Marker Info Ċ import Ġcom . intellij . code Insight . daemon . Line Marker Provider Ċ import Ġcom . intellij . ide . Browser Util Ċ import Ġcom . intellij . openapi . action System .* Ċ import Ġcom . intellij . openapi . editor . markup . G utter Icon Renderer Ċ import Ġcom . intellij . openapi . util . Icon Loader Ċ import Ġcom . intellij . psi . Psi Element Ċ import Ġcom . intellij . psi . tree . Token Set Ċ import Ġcom . intellij . util . Function Ċ import Ġcom . thought works . qd ox . model . Java Class Ċ import Ġorg . intellij . plugins . markdown . lang . Markdown Element Types Ċ import Ġorg . intellij . plugins . markdown . lang . Markdown TokenType Sets Ċ import Ġpsi . find Child Element Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . format . DateTime Formatter Ċ import Ġjava . time . format . Format Style Ċ import Ġjavax . swing . Icon ĊĊ Ċ class ĠMarkdown Line Marker Provider Ġ: ĠLine Marker Provider Ġ{ ĊĊĠ Ġprivate Ġval Ġmy Token Set Of Matching Element Types Ġ= ĠToken Set . create ( Markdown Element Types . INLINE _ LINK ) ĊĊĠ Ġoverride Ġfun Ġget Line Marker Info ( element : ĠPsi Element ): ĠLine Marker Info < *> ? Ġ{ ĊĠĠĠ Ġif Ġ(! my Token Set Of Matching Element Types . contains ( element . node . elementType )) Ġreturn Ġnull ĊĠĠĠ Ġreturn ĠRun Line Marker Info ( element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcon Loader . get Icon ("/ icons / ic _ lin emark er provider . svg ", Ġjava Class ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate Action Group ( element ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcreate ToolTip Provider ( element )) ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġcreate ToolTip Provider ( inline Link Element : ĠPsi Element ): ĠFunction < in ĠPsi Element , ĠString > Ġ{ ĊĠĠĠ Ġval Ġlink Destination Element Ġ= ĊĠĠĠĠĠĠĠ Ġfind Child Element ( inline Link Element , ĠMarkdown TokenType Sets . LINK _ DEST INATION , Ġnull ) ĊĠĠĠ Ġval Ġlink Destination Ġ= Ġlink Destination Element ?. text ĊĠĠĠ Ġval Ġtooltip Provider Ġ= ĊĠĠĠĠĠĠĠ ĠFunction Ġ{ Ġelement : ĠPsi Element Ġ-> ĊĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= ĠLocalDateTime . now () ĊĠĠĠĠĠĠĠĠĠ Ġval Ġformatter Ġ= ĠDateTime Formatter . of Localized DateTime ( Format Style . SHORT ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġformatted Ġ= Ġcurrent . format ( formatter ) ĊĠĠĠĠĠĠĠĠĠ Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (" Tooltip Ġcalculated Ġat Ġ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend ( formatted ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend (", Ġfor ĠURL : Ġ$ link Destination ") ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġtooltip Provider ĊĠ Ġ} ĊĊĠ Ġfun Ġcreate Action Group ( inline Link Element : ĠPsi Element ): ĠDefault Action Group Ġ{ ĊĠĠĠ Ġval Ġlink Destination Element Ġ= ĊĠĠĠĠĠĠĠ Ġfind Child Element ( inline Link Element , ĠMarkdown TokenType Sets . LINK _ DEST INATION , Ġnull ) ĊĠĠĠ Ġval Ġlink Destination Ġ= Ġlink Destination Element ?. text ĊĠĠĠ Ġval Ġgroup Ġ= ĠDefault Action Group () ĊĠĠĠ Ġgroup . add ( Open Url Action ( link Destination )) ĊĠĠĠ Ġgroup . add ( Action Manager . getInstance (). getAction (" My Plugin . Open Tool Window Action ")) ĊĠĠĠ Ġreturn Ġgroup ĊĠ Ġ} Ċ Ċ } Ċ Ċ class ĠRun Line Marker Info ( element : ĠPsi Element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon : ĠIcon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġmy Action Group : ĠDefault Action Group , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip Provider : ĠFunction < in ĠPsi Element , ĠString >? Ċ ) Ġ: ĠLine Marker Info < Psi Element >( element , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelement . text Range , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġicon , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtooltip Provider , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠG utter Icon Renderer . Alignment . CENTER ) Ġ{ ĊĠ Ġoverride Ġfun Ġcreate G utter Renderer (): ĠG utter Icon Renderer ? Ġ{ ĊĠĠĠ Ġreturn Ġobject Ġ: ĠLine Marker G utter Icon Renderer < Psi Element >( this ) Ġ{ ĊĠĠĠĠĠ Ġoverride Ġfun Ġget Click Action (): ĠAn Action ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġis Navigate Action (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġoverride Ġfun Ġget PopupMenu Actions (): ĠAction Group ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġmy Action Group ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ class ĠOpen Url Action ( val Ġlink Destination : ĠString ?) Ġ: ĊĠ ĠAn Action (" Open ĠLink ", Ġ" Open ĠURL Ġdestination Ġin Ġbrowser ", ĊĠĠĠĠĠĠĠĠĠĠ ĠIcon Loader . get Icon ("/ icons / ic _ extension . svg ", ĠOpen Url Action :: class . java )) Ġ{ ĊĠ Ġoverride Ġfun ĠactionPerformed ( e : ĠAn ActionEvent ) Ġ{ ĊĠĠĠ Ġlink Destination ?. apply Ġ{ ĊĠĠĠĠĠ ĠBrowser Util . open ( this ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ Ċ }