1) Moved net.sourceforge.phpeclipse.ui\src\net\sourceforge\phpdt back to net.sourcefo...
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpeclipse / phpeditor / JavaAnnotationIterator.java
index 66b9669..40ef7c2 100644 (file)
  *******************************************************************************/
 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()
         */