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..40ef7c2 100644 --- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaAnnotationIterator.java +++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/phpeditor/JavaAnnotationIterator.java @@ -10,45 +10,76 @@ *******************************************************************************/ 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; - /** * Filters problems based on their types. */ public class JavaAnnotationIterator implements Iterator { - + private Iterator fIterator; - private IJavaAnnotation fNext; + + private Annotation fNext; + private boolean fSkipIrrelevants; - - public JavaAnnotationIterator(IAnnotationModel model, boolean skipIrrelevants) { - fIterator= model.getAnnotationIterator(); - fSkipIrrelevants= skipIrrelevants; + + private boolean fReturnAllAnnotations; + + /** + * Equivalent to + * JavaAnnotationIterator(model, skipIrrelevants, false). + */ + public JavaAnnotationIterator(IAnnotationModel model, + boolean skipIrrelevants) { + 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; + fNext = null; } - + /* * @see Iterator#hasNext() */