/** * Visit all components below the specified container. * * @param container container to start from * @param visitor visitor instance */ public static void walkComponents( com.haulmont.cuba.gui.components.ComponentContainer container, ComponentVisitor visitor ) { __walkComponents(container, visitor, ""); }
/** * Iterates over all components applying finder instance. * Stops when the component is found and returns {@code true}. * If no component is found returns {@code false}. * * @param container container to start from * @param finder finder instance * @return {@code true} if component has been found, {@code false} otherwise */ public static boolean walkComponents(com.haulmont.cuba.gui.components.ComponentContainer container, ComponentFinder finder) { return __walkComponents(container, finder); }
private static boolean __walkComponents(com.haulmont.cuba.gui.components.ComponentContainer container, ComponentFinder finder) { for (com.haulmont.cuba.gui.components.Component component : container.getOwnComponents()) { if (finder.visit(component)) { return true; } if (component instanceof com.haulmont.cuba.gui.components.ComponentContainer) { if (__walkComponents(((com.haulmont.cuba.gui.components.ComponentContainer) component), finder)) { return true; } } } return false; }
private static void __walkComponents( com.haulmont.cuba.gui.components.ComponentContainer container, ComponentVisitor visitor, String path ) { for (com.haulmont.cuba.gui.components.Component component : container.getOwnComponents()) { String id = component.getId(); if (id == null && component instanceof ActionOwner && ((ActionOwner) component).getAction() != null) { id = ((ActionOwner) component).getAction().getId(); } if (id == null) { id = component.getClass().getSimpleName(); } visitor.visit(component, path + id); if (component instanceof com.haulmont.cuba.gui.components.ComponentContainer) { String p = component instanceof Frame ? path + id + "." : path; __walkComponents(((com.haulmont.cuba.gui.components.ComponentContainer) component), visitor, p); } else if (component instanceof AppWorkArea) { // todo support HasInnerComponents AppWorkArea workArea = (AppWorkArea) component; if (workArea.getState() == AppWorkArea.State.INITIAL_LAYOUT) { VBoxLayout initialLayout = workArea.getInitialLayout(); __walkComponents(initialLayout, visitor, path); } } } }