package net.sf.openrocket.rocketvisitors;
import java.util.ArrayList;
import java.util.List;
import net.sf.openrocket.rocketcomponent.RocketComponent;
public class ListComponents<T extends RocketComponent> extends DepthFirstRecusiveVisitor<List<T>> {
private final Class<T> componentClazz;
protected List<T> components = new ArrayList<T>();
public ListComponents(Class<T> componentClazz) {
super();
this.componentClazz = componentClazz;
}
@Override
public List<T> getResult() {
return components;
}
@Override
protected void doAction(RocketComponent visitable) {
if (componentClazz.isAssignableFrom(visitable.getClass())) {
components.add((T) visitable);
}
}
}