*******************************************************************************/
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
+ * <code>JavaAnnotationIterator(model, skipIrrelevants, false)</code>.
+ */
+ 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()
*/