DRY: better inhert from FilterIterator

Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/NodesInContentRangeIterator.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/NodesInContentRangeIterator.java
index 3b7de6a..703741e 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/NodesInContentRangeIterator.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/dom/NodesInContentRangeIterator.java
@@ -10,52 +10,20 @@
  *******************************************************************************/

 package org.eclipse.vex.core.internal.dom;

 

-import java.util.Iterator;

-import java.util.NoSuchElementException;

+import org.eclipse.vex.core.internal.core.FilterIterator;

+import org.eclipse.vex.core.internal.core.IFilter;

 

 /**

  * @author Florian Thienel

  */

-public class NodesInContentRangeIterator implements Iterator<Node> {

-

-	private final Iterator<Node> nodes;

-	private final ContentRange contentRange;

-

-	private Node currentNode;

+public class NodesInContentRangeIterator extends FilterIterator<Node> {

 

 	public NodesInContentRangeIterator(final Iterable<Node> nodes, final ContentRange contentRange) {

-		this.contentRange = contentRange;

-		this.nodes = nodes.iterator();

-		nextStep();

-	}

-

-	private void nextStep() {

-		while (nodes.hasNext()) {

-			currentNode = nodes.next();

-			if (!currentNode.isAssociated()) {

-				return;

+		super(nodes.iterator(), new IFilter<Node>() {

+			public boolean matches(final Node node) {

+				return contentRange.contains(node.getRange());

 			}

-			if (contentRange.contains(currentNode.getRange())) {

-				return;

-			}

-		}

-		currentNode = null;

+		});

 	}

 

-	public boolean hasNext() {

-		return currentNode != null;

-	}

-

-	public Node next() {

-		if (!hasNext()) {

-			throw new NoSuchElementException();

-		}

-		final Node next = currentNode;

-		nextStep();

-		return next;

-	}

-

-	public void remove() {

-		throw new UnsupportedOperationException("Cannot remove node.");

-	}

 }
\ No newline at end of file