X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaAnnotationIterator.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaAnnotationIterator.java index 66b9669..ad4eb24 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaAnnotationIterator.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaAnnotationIterator.java @@ -10,8 +10,10 @@ *******************************************************************************/ package net.sourceforge.phpeclipse.phpeditor; +import java.util.Collections; import java.util.Iterator; +import org.eclipse.jface.text.source.Annotation; import org.eclipse.jface.text.source.IAnnotationModel; @@ -21,29 +23,49 @@ import org.eclipse.jface.text.source.IAnnotationModel; public class JavaAnnotationIterator implements Iterator { private Iterator fIterator; - private IJavaAnnotation fNext; + private Annotation fNext; private boolean fSkipIrrelevants; + private boolean fReturnAllAnnotations; + /** + * Equivalent to JavaAnnotationIterator(model, skipIrrelevants, false). + */ public JavaAnnotationIterator(IAnnotationModel model, boolean skipIrrelevants) { - fIterator= model.getAnnotationIterator(); + this(model, skipIrrelevants, false); + } + + /** + * Returns a new JavaAnnotationIterator. + * @param model the annotation model + * @param skipIrrelevants whether to skip irrelevant annotations + * @param returnAllAnnotations Whether to return non IJavaAnnotations as well + */ + public JavaAnnotationIterator(IAnnotationModel model, boolean skipIrrelevants, boolean returnAllAnnotations) { + fReturnAllAnnotations= returnAllAnnotations; + if (model != null) + fIterator= model.getAnnotationIterator(); + else + fIterator= Collections.EMPTY_LIST.iterator(); fSkipIrrelevants= skipIrrelevants; skip(); } private void skip() { while (fIterator.hasNext()) { - Object next= fIterator.next(); + Annotation next= (Annotation) fIterator.next(); if (next instanceof IJavaAnnotation) { - IJavaAnnotation a= (IJavaAnnotation) next; if (fSkipIrrelevants) { - if (a.isRelevant()) { - fNext= a; + if (!next.isMarkedDeleted()) { + fNext= next; return; } } else { - fNext= a; + fNext= next; return; } + } else if (fReturnAllAnnotations) { + fNext= next; + return; } } fNext= null;