package com.redhat.ceylon.eclipse.code.editor; import java.util.Iterator; import java.util.ResourceBundle; import org.eclipse.jface.text.source.Annotation; import org.eclipse.jface.text.source.IAnnotationModel; import org.eclipse.jface.text.source.IVerticalRulerInfo; import org.eclipse.ui.texteditor.ITextEditor; import org.eclipse.ui.texteditor.SelectMarkerRulerAction; public class CeylonSelectAnnotationRulerAction extends SelectMarkerRulerAction { IVerticalRulerInfo ruler; CeylonEditor editor; public CeylonSelectAnnotationRulerAction(ResourceBundle bundle, String prefix, ITextEditor editor, IVerticalRulerInfo ruler) { super(bundle, prefix, editor, ruler); this.ruler = ruler; this.editor = (CeylonEditor) editor; } @Override public void update() { //don't let super.update() be called! } @Override public void run() { //super.run(); int line = ruler.getLineOfLastMouseButtonActivity()+1; IAnnotationModel model= editor.getDocumentProvider() .getAnnotationModel(editor.getEditorInput()); for (@SuppressWarnings("unchecked") Iterator<Annotation> iter = model.getAnnotationIterator(); iter.hasNext();) { Annotation ann = iter.next(); if (ann instanceof RefinementAnnotation) { RefinementAnnotation ra = (RefinementAnnotation) ann; if (ra.getLine()==line) { ra.gotoRefinedDeclaration(editor); } } } } }