public static <T> Collection<T> getComponentsExtending(Component component, Class<? extends T> clazz) { Collection<T> components = new ArrayList<>(); addComponentsExtending(component, clazz, components); return components; }
public static <T> Collection<T> getComponentsExtending(Component component, Class<? extends T> clazz) { Collection<T> components = new ArrayList<T>(); addComponentsExtending(component, clazz, components); return components; }
public static <T> Collection<T> getComponentsExtending(Component component, Class<? extends T> clazz) { Collection<T> components = new ArrayList<T>(); addComponentsExtending(component, clazz, components); return components; }
private static <T> void addComponentsExtending(Component component, Class<? extends T> clazz, Collection<T> components) { if (component instanceof Container) { Container container = (Container) component; int nSubcomponents = container.getComponentCount(); for (int i = 0; i < nSubcomponents; ++i) { Component subComponent = container.getComponent(i); if (clazz.isAssignableFrom(subComponent.getClass())) { components.add(clazz.cast(subComponent)); } else { addComponentsExtending(subComponent, clazz, components); } } } }
private static <T> void addComponentsExtending(Component component, Class<? extends T> clazz, Collection<T> components) { if(component instanceof Container) { Container container = (Container) component; int nSubcomponents = container.getComponentCount(); for(int i = 0; i < nSubcomponents; ++i) { Component subComponent = container.getComponent(i); if(clazz.isAssignableFrom(subComponent.getClass())) { components.add(clazz.cast(subComponent)); } else { addComponentsExtending(subComponent, clazz, components); } } } }
private static <T> void addComponentsExtending(Component component, Class<? extends T> clazz, Collection<T> components) { if (component instanceof Container) { Container container = (Container) component; int nSubcomponents = container.getComponentCount(); for (int i = 0; i < nSubcomponents; ++i) { Component subComponent = container.getComponent(i); if (clazz.isAssignableFrom(subComponent.getClass())) { components.add(clazz.cast(subComponent)); } else { addComponentsExtending(subComponent, clazz, components); } } } } }