// ĠCopyright Ġ 2 0 0 0 - 2 0 1 9 Ġ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 Ġcom . intellij . code Insight . hints . presentation Ċ Ċ import Ġcom . intellij . openapi . application . Application Manager Ċ import Ġcom . intellij . openapi . editor . Editor Factory Ċ import Ġcom . intellij . openapi . editor . event . Editor MouseEvent Ċ import Ġcom . intellij . openapi . editor . event . Editor MouseEvent Area Ċ import Ġcom . intellij . openapi . editor . event . Editor Mouse Listener Ċ import Ġcom . intellij . openapi . editor . event . Editor Mouse Motion Listener Ċ import Ġcom . intellij . openapi . project . Project Ċ import Ġcom . intellij . openapi . startup . Startup Activity Ċ import Ġjava . awt . Point Ċ Ċ /** Ċ Ġ* ĠGlobal Ġmouse Ġlistener , Ġthat Ġprovide Ġevents Ġto Ġin lay Ġhints Ġat Ġmouse Ġcoordinates . Ċ Ġ*/ Ċ class ĠPresentation Mouse Handler Ġ: ĠStartup Activity Ġ{ ĊĠ Ġoverride Ġfun Ġrun Activity ( project : ĠProject ) Ġ{ ĊĠĠĠ Ġval Ġeditor Factory Ġ= ĠApplication Manager . getApplication (). getComponent ( Editor Factory :: class . java ) ĊĠĠĠ Ġval Ġmult ic aster Ġ= Ġeditor Factory . event Mult ic aster ĊĠĠĠ Ġmult ic aster . add Editor Mouse Listener ( mouse Listener , Ġproject ) ĊĠĠĠ Ġmult ic aster . add Editor Mouse Motion Listener ( mouse Motion Listener , Ġproject ) ĊĠ Ġ} ĊĊĠ Ġprivate Ġvar Ġactive Presentation Ġ: ĠIn lay Presentation ? Ġ= Ġnull ĊĊĠ Ġprivate Ġval Ġmouse Listener Ġ= Ġobject : ĠEditor Mouse Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmouse Clicked ( e : ĠEditor MouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! e . is Cons umed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġe . editor ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġe . mouse Event ĊĠĠĠĠĠĠĠ Ġif Ġ( editor . get MouseEvent Area ( event ) Ġ!= ĠEditor MouseEvent Area . EDIT ING _ AREA ) Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġpoint Ġ= Ġevent . point ĊĠĠĠĠĠĠĠ Ġval Ġin lay Ġ= Ġeditor . in lay Model . getElement At ( point , ĠPresentation Renderer :: class . java ) Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= Ġin lay . bounds Ġ?: Ġreturn ĊĠĠĠĠĠĠĠ Ġval Ġin lay Point Ġ= ĠPoint ( bounds . x , Ġbounds . y ) ĊĠĠĠĠĠĠĠ Ġval Ġtranslated Ġ= ĠPoint ( event . x Ġ- Ġin lay Point . x , Ġevent . y Ġ- Ġin lay Point . y ) ĊĠĠĠĠĠĠĠ Ġin lay . renderer . presentation . mouse Clicked ( event , Ġtranslated ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġval Ġmouse Motion Listener Ġ= Ġobject : ĠEditor Mouse Motion Listener Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġmouse Moved ( e : ĠEditor MouseEvent ) Ġ{ ĊĠĠĠĠĠ Ġif Ġ(! e . is Cons umed ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġeditor Ġ= Ġe . editor ĊĠĠĠĠĠĠĠ Ġval Ġevent Ġ= Ġe . mouse Event ĊĠĠĠĠĠĠĠ Ġ// ĠTODO Ġhere Ġalso Ġmay Ġbe Ġhandling Ġof ĠESC Ġkey ĊĠĠĠĠĠĠĠ Ġif Ġ( editor . get MouseEvent Area ( event ) Ġ!= ĠEditor MouseEvent Area . EDIT ING _ AREA ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġactive Presentation ?. mouse Exit ed () ĊĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġin lay Ġ= Ġeditor . in lay Model . getElement At ( event . point , ĠPresentation Renderer :: class . java ) ĊĠĠĠĠĠĠĠ Ġval Ġpresentation Ġ= Ġin lay ?. renderer ?. presentation ĊĠĠĠĠĠĠĠ Ġif Ġ( active Presentation Ġ!= Ġpresentation ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġactive Presentation ?. mouse Exit ed () ĊĠĠĠĠĠĠĠĠĠ Ġactive Presentation Ġ= Ġpresentation ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( presentation Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġbounds Ġ= Ġin lay . bounds Ġ?: Ġreturn ĊĠĠĠĠĠĠĠĠĠ Ġval Ġin lay Point Ġ= ĠPoint ( bounds . x , Ġbounds . y ) ĊĠĠĠĠĠĠĠĠĠ Ġval Ġtranslated Ġ= ĠPoint ( event . x Ġ- Ġin lay Point . x , Ġevent . y Ġ- Ġin lay Point . y ) ĊĠĠĠĠĠĠĠĠĠ Ġpresentation . mouse Moved ( event , Ġtranslated ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ }