/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package de.lessvoid.nifty.elements.tools; import de.lessvoid.nifty.elements.Element; import javax.annotation.Nonnull; import java.util.ArrayList; import java.util.Iterator; import java.util.NoSuchElementException; /** * * @author telamon */ public class ElementTreeTraverser implements Iterator<Element>{ @Nonnull private final ArrayList<Iterator<Element>> iterators = new ArrayList<Iterator<Element>>(); private Iterator<Element> current; public ElementTreeTraverser(@Nonnull Element e){ current = e.getChildren().listIterator(); } @Override public boolean hasNext() { return current.hasNext() || !iterators.isEmpty(); } @Override public Element next() { if(current.hasNext()){ Element e = current.next(); if(!e.getChildren().isEmpty()) iterators.add(e.getChildren().listIterator()); return e; }else if(!iterators.isEmpty()){ current = iterators.remove(0); return next(); } throw new NoSuchElementException(); } @Override public void remove() { throw new UnsupportedOperationException(); } }