1 11 package org.eclipse.jface.text.source; 12 13 import org.eclipse.swt.graphics.Point; 14 import org.eclipse.swt.graphics.Rectangle; 15 16 import org.eclipse.jface.text.IInformationControlCreator; 17 import org.eclipse.jface.text.source.AnnotationBarHoverManager; 18 import org.eclipse.jface.text.source.IAnnotationHover; 19 import org.eclipse.jface.text.source.ISourceViewer; 20 21 28 class OverviewRulerHoverManager extends AnnotationBarHoverManager { 29 30 39 public OverviewRulerHoverManager(IOverviewRuler ruler, ISourceViewer sourceViewer, IAnnotationHover annotationHover, IInformationControlCreator creator) { 40 super(ruler, sourceViewer, annotationHover, creator); 41 setAnchor(ANCHOR_LEFT); 42 } 43 44 47 protected void computeInformation() { 48 Point location= getHoverEventLocation(); 49 int line= getVerticalRulerInfo().toDocumentLineNumber(location.y); 50 IAnnotationHover hover= getAnnotationHover(); 51 52 IInformationControlCreator controlCreator= null; 53 if (hover instanceof IAnnotationHoverExtension) 54 controlCreator= ((IAnnotationHoverExtension)hover).getHoverControlCreator(); 55 setCustomInformationControlCreator(controlCreator); 56 57 setInformation(hover.getHoverInfo(getSourceViewer(), line), computeArea(location.y)); 58 } 59 60 66 private Rectangle computeArea(int y) { 67 IOverviewRuler overviewRuler= (IOverviewRuler) getVerticalRulerInfo(); 69 70 int hover_height= overviewRuler.getAnnotationHeight(); 71 int hover_width= getVerticalRulerInfo().getControl().getSize().x; 72 73 int hover_y= y; 75 boolean hasAnnotation= true; 76 while (hasAnnotation && hover_y > y - hover_height) { 77 hover_y--; 78 hasAnnotation= overviewRuler.hasAnnotation(hover_y); 79 } 80 hover_y++; 81 82 return new Rectangle(0, hover_y, hover_width, hover_height); 83 } 84 } 85
| Popular Tags
|