/******************************************************************************* * Copyright (c) 2014 Open Door Logistics (www.opendoorlogistics.com) * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License 3.0 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl.html * ******************************************************************************/ package com.opendoorlogistics.studio.components.map; import java.util.ArrayList; import java.util.Iterator; import org.apache.commons.collections.iterators.IteratorChain; import com.opendoorlogistics.codefromweb.IteratorChainApacheCollections440; import com.opendoorlogistics.core.gis.map.data.DrawableObject; public class LayeredDrawables implements Iterable<DrawableObject>{ private final Iterable<? extends DrawableObject> inactiveBackground; private final Iterable<? extends DrawableObject> active; private final Iterable<? extends DrawableObject> inactiveForeground; public LayeredDrawables(Iterable<? extends DrawableObject> inactiveBackground, Iterable<? extends DrawableObject> active, Iterable<? extends DrawableObject> inactiveForeground) { this.inactiveBackground = inactiveBackground; this.active = active; this.inactiveForeground = inactiveForeground; } public Iterable<? extends DrawableObject> getInactiveBackground() { return inactiveBackground; } public Iterable<? extends DrawableObject> getActive() { return active; } public Iterable<? extends DrawableObject> getInactiveForeground() { return inactiveForeground; } @Override public Iterator<DrawableObject> iterator() { ArrayList<Iterator<? extends DrawableObject>> its = new ArrayList<>(); if(inactiveBackground!=null){ its.add(inactiveBackground.iterator()); } if(active!=null){ its.add(active.iterator()); } if(inactiveForeground!=null){ its.add(inactiveForeground.iterator()); } return new IteratorChainApacheCollections440<DrawableObject>(its); } }