Example usage for org.apache.wicket Page visitChildren

List of usage examples for org.apache.wicket Page visitChildren

Introduction

In this page you can find the example usage for org.apache.wicket Page visitChildren.

Prototype

public final <R> R visitChildren(final IVisitor<Component, R> visitor) 

Source Link

Document

Traverses all child components in this container, calling the visitor's visit method at each one.

Usage

From source file:com.googlecode.wicketwebbeans.containers.ContainerModelTest.java

License:Apache License

private void detachModels(Page page) {
    page.visitChildren(new IVisitor<Component>() {
        public Object component(Component component) {
            try {
                // detach any models of the component
                component.detachModels();
            } catch (Exception e) {
                // Ignore
            }/*  ww w  .j ava2  s  . com*/

            return IVisitor.CONTINUE_TRAVERSAL;
        }
    });
}

From source file:de.inren.frontend.application.InRenApplication.java

License:Apache License

public FeedbackPanel getFeedbackPanel(Page page) {
    return (FeedbackPanel) page.visitChildren(new FeedbackPanelVisitor());
}

From source file:de.micromata.genome.junittools.wicket.TpsbWicketTools.java

License:Apache License

/**
 * Internal finder./*from ww w.j  ava 2  s.  c o  m*/
 * 
 * @param <X> the generic type
 * @param tester the tester
 * @param startComponent the start component
 * @param componentClass the component class
 * @param matcher the matcher
 * @return the list
 */
private static <X extends Component> List<X> internalFinder(WicketTester tester, MarkupContainer startComponent,
        Class<X> componentClass, final Matcher<Component> matcher) {
    final List<X> results = new LinkedList<X>();
    Page lastRenderedPage = tester.getLastRenderedPage();

    if (lastRenderedPage == null) {
        throw new IllegalStateException("You must call #goToPage before you can find components.");
    }

    if (componentClass == null) {
        componentClass = (Class<X>) Component.class;
    }
    final Class<? extends Component> searchComponent = componentClass;

    IVisitor<Component, Object> visitor = new IVisitor<Component, Object>() {
        @Override
        public void component(Component object, IVisit<Object> visit) {
            if (LOG.isDebugEnabled() == true) {
                LOG.debug("candite for wicket internalFinder: " + object.getClass().getSimpleName() + "|"
                        + object.getId() + "|" + object.getPath());
            }
            if (searchComponent.isAssignableFrom(object.getClass()) == true) {

                if (matcher.match(object) == true) {
                    if (matcher instanceof TpsbWicketMatchSelector) {
                        results.add((X) ((TpsbWicketMatchSelector) matcher).selectMatched(object));
                    } else {
                        results.add((X) object);
                    }
                }
            }
        }
    };
    if (startComponent == null) {
        lastRenderedPage.visitChildren(visitor);
    } else {
        startComponent.visitChildren(visitor);
    }
    return results;
}

From source file:de.micromata.genome.junittools.wicket.TpsbWicketTools.java

License:Apache License

/**
 * Find components for property model property.
 * //from ww w.  j a  va  2  s. co m
 * @param <X> the generic type
 * @param tester the tester
 * @param startComponent the start component
 * @param componentClass the component class
 * @param property the property
 * @return the list
 * @deprecated use TpsbWicketMatchSelector
 */
@Deprecated
public static <X extends Component> List<X> _findComponentsForPropertyModelProperty(WicketTester tester,
        final MarkupContainer startComponent, final Class<X> componentClass, final String property) {
    final List<X> results = new LinkedList<X>();
    Page lastRenderedPage = tester.getLastRenderedPage();

    if (lastRenderedPage == null) {
        throw new IllegalStateException("You must call #goToPage before you can find components.");
    }

    if (componentClass == null || property == null) {
        throw new IllegalArgumentException("You must provide not null arguments.");
    }

    IVisitor<Component, Object> visitor = new IVisitor<Component, Object>() {
        @Override
        public void component(Component object, IVisit<Object> visit) {
            if (LOG.isDebugEnabled() == true) {
                LOG.debug("candite for wicket internalFinder: " + object.getClass().getSimpleName() + "|"
                        + object.getId() + "|" + object.getPath());
            }
            if (componentClass.isAssignableFrom(object.getClass()) == true) {
                IModel<?> defaultModel = object.getDefaultModel();
                if (defaultModel instanceof AbstractPropertyModel == true) {
                    AbstractPropertyModel propertyModel = (AbstractPropertyModel) defaultModel;
                    if (StringUtils.equals(property, propertyModel.getPropertyExpression()) == true) {
                        results.add((X) object);
                    }
                }
            }
        }
    };
    if (startComponent == null) {
        lastRenderedPage.visitChildren(visitor);
    } else {
        startComponent.visitChildren(visitor);
    }
    return results;
}

From source file:org.apache.isis.viewer.wicket.model.models.WicketComponentUtils.java

License:Apache License

/**
 * Locates a component implementing the required class on the supplied page.
 *//*from  w  w w . j  a  v  a 2  s .  c  om*/
public static <T> T getFrom(Page page, final Class<T> cls) {
    final Object[] pComponent = new Object[1];
    page.visitChildren(new DeepChildFirstVisitor() {
        @Override
        public void component(Component component, IVisit<Void> visit) {
            if (cls.isAssignableFrom(component.getClass())) {
                pComponent[0] = component;
                visit.stop();
            }
        }

        @Override
        public boolean preCheck(Component component) {
            return false;
        }
    });

    return (T) pComponent[0];
}

From source file:org.apache.isis.viewer.wicket.ui.panels.FormExecutorDefault.java

License:Apache License

private void addComponentsToRedraw(final AjaxRequestTarget target) {
    final List<Component> componentsToRedraw = Lists.newArrayList();
    final List<Component> componentsNotToRedraw = Lists.newArrayList();

    final Page page = target.getPage();
    page.visitChildren(new IVisitor<Component, Object>() {
        @Override/*  www . j av  a  2  s. c o m*/
        public void component(final Component component, final IVisit<Object> visit) {
            if (component.getOutputMarkupId() && !(component instanceof Page)) {
                List<Component> listToAddTo = shouldRedraw(component) ? componentsToRedraw
                        : componentsNotToRedraw;
                listToAddTo.add(component);
            }
        }

        private boolean shouldRedraw(final Component component) {

            // hmm... this doesn't work, because I think that the components
            // get removed after they've been added to target.
            // so.. still getting WARN log messages from XmlPartialPageUpdate

            //                final Page page = component.findParent(Page.class);
            //                if(page == null) {
            //                    // as per logic in XmlPartialPageUpdate, this has already been
            //                    // removed from page so don't attempt to redraw it
            //                    return false;
            //                }

            final Object defaultModel = component.getDefaultModel();
            if (!(defaultModel instanceof ScalarModel)) {
                return true;
            }
            final ScalarModel scalarModel = (ScalarModel) defaultModel;
            final UnchangingFacet unchangingFacet = scalarModel.getFacet(UnchangingFacet.class);
            return unchangingFacet == null || !unchangingFacet.value();
        }
    });

    for (Component componentNotToRedraw : componentsNotToRedraw) {
        MarkupContainer parent = componentNotToRedraw.getParent();
        while (parent != null) {
            parent = parent.getParent();
        }

        componentNotToRedraw.visitParents(MarkupContainer.class, new IVisitor<MarkupContainer, Object>() {
            @Override
            public void component(final MarkupContainer parent, final IVisit<Object> visit) {
                componentsToRedraw.remove(parent); // no-op if not in that list
            }
        });
        if (componentNotToRedraw instanceof MarkupContainer) {
            final MarkupContainer containerNotToRedraw = (MarkupContainer) componentNotToRedraw;
            containerNotToRedraw.visitChildren(new IVisitor<Component, Object>() {
                @Override
                public void component(final Component parent, final IVisit<Object> visit) {
                    componentsToRedraw.remove(parent); // no-op if not in that list
                }
            });
        }
    }

    if (LOG.isDebugEnabled()) {
        debug(componentsToRedraw, componentsNotToRedraw);
    }

    for (Component component : componentsToRedraw) {
        target.add(component);
    }
}

From source file:org.odlabs.wiquery.core.commons.WiQueryCoreHeaderContributor.java

License:Open Source License

private void renderResponse(final IHeaderResponse response) {
    Page page = RequestCycle.get().getResponsePage();
    Boolean rendered;//from w w w. j av a2 s  .c o m
    if (page == null) {
        rendered = RequestCycle.get().getMetaData(WIQUERY_KEY);
    } else {
        Long renderTime = page.getMetaData(WIQUERY_PAGE_KEY);
        rendered = renderTime != null && renderTime.equals(RequestCycle.get().getStartTime());
        page.setMetaData(WIQUERY_PAGE_KEY, RequestCycle.get().getStartTime());
    }
    RequestCycle.get().setMetaData(WIQUERY_KEY, Boolean.TRUE);
    if (rendered == null || !rendered) {
        WiQuerySettings settings = WiQuerySettings.get();

        final List<WiQueryPluginRenderingListener> pluginRenderingListeners = getRenderingListeners(settings);

        WiQueryPluginCollector visitor = new WiQueryPluginCollector();
        if (page != null) {
            page.visitChildren(visitor);
            visitor.component(page);
        }

        WiQueryHeaderResponse wiQueryHeaderResponse;
        IHeaderResponse headerResponse;
        if (settings.isEnableResourcesMerging() && page != null) {
            wiQueryHeaderResponse = page.getMetaData(WIQUERY_MERGER);

            if (wiQueryHeaderResponse == null) {
                wiQueryHeaderResponse = new WiQueryHeaderResponse();
                page.setMetaData(WIQUERY_MERGER, wiQueryHeaderResponse);
            }

            wiQueryHeaderResponse.setIHeaderResponse(response); // Preserved already used
            // references
            headerResponse = wiQueryHeaderResponse;

        } else {
            wiQueryHeaderResponse = null;
            headerResponse = response;
        }

        WiQueryResourceManager manager = new WiQueryResourceManager();

        JsStatement jsStatement = new JsStatement();
        for (IWiQueryPlugin plugin : visitor.getPlugins()) {
            JsStatement tempStatement = plugin.statement();

            if (tempStatement != null) {
                jsStatement.append("\t" + tempStatement.render() + "\n");
            }

            // calling listeners to compute specific stuff
            for (WiQueryPluginRenderingListener listener : pluginRenderingListeners) {
                listener.onRender(plugin, manager, headerResponse);
            }

            plugin.contribute(manager);
        }

        initializeResourceManager(headerResponse, manager);

        mergeResources(response, settings, wiQueryHeaderResponse);

        JsQuery jsq = new JsQuery();
        jsq.setStatement(jsStatement);
        jsq.renderHead(response, RequestCycle.get().getRequestTarget());
    }
}

From source file:org.odlabs.wiquery.tester.WiQueryTester.java

License:Open Source License

public List<IHeaderContributor> getHeaderContributors() {
    Page renderedPage = getLastRenderedPage();
    final List<IHeaderContributor> contributors = new ArrayList<IHeaderContributor>();

    renderedPage.visitChildren(new IVisitor<Component, Void>() {
        public void component(Component component, IVisit<Void> visit) {
            for (Behavior behavior : component.getBehaviors())
                if (behavior instanceof IHeaderContributor)
                    contributors.add((IHeaderContributor) behavior);

        }/*from  w  w w.  ja  v a  2s  .c o  m*/
    });

    return contributors;
}

From source file:sf.wicklet.wicketext.util.WicketExtrasUtil.java

License:Apache License

public static Collection<Component> getComponents(final Page page) {
    final List<Component> data = new ArrayList<Component>();
    if (page == null) {
        return data;
    }//www .  j a  va 2s. c  om
    page.visitChildren(new IVisitor<Component, Void>() {
        @Override
        public void component(final Component component, final IVisit<Void> visit) {
            data.add(component);
        }
    });
    return data;
}