*******************************************************************************/
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;
public class JavaAnnotationIterator implements Iterator {
private Iterator fIterator;
- private IJavaAnnotation fNext;
+ private Annotation fNext;
private boolean fSkipIrrelevants;
+ private boolean fReturnAllAnnotations;
+ /**
+ * Equivalent to <code>JavaAnnotationIterator(model, skipIrrelevants, false)</code>.
+ */
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;