Class AjaxLazyLoadPanel<T extends org.apache.wicket.Component>

  • All Implemented Interfaces:
    Serializable, Iterable<org.apache.wicket.Component>, org.apache.wicket.event.IEventSink, org.apache.wicket.event.IEventSource, org.apache.wicket.feedback.IFeedbackContributor, org.apache.wicket.IConverterLocator, org.apache.wicket.IMetadataContext<Serializable,​org.apache.wicket.Component>, org.apache.wicket.IQueueRegion, org.apache.wicket.markup.html.IHeaderContributor, org.apache.wicket.request.component.IRequestableComponent, org.apache.wicket.util.IHierarchical<org.apache.wicket.Component>, org.apache.wicket.util.io.IClusterable

    public abstract class AjaxLazyLoadPanel<T extends org.apache.wicket.Component>
    extends org.apache.wicket.markup.html.panel.Panel
    A panel which load lazily a single content component. This can be used if you have a component that is pretty heavy in creation and you first want to show the user the page and then replace the panel when it is ready.

    This panel will wait with adding the content until isContentReady() returns true. It will poll using an AbstractAjaxTimerBehavior that is installed on the page. When the component is replaced, the timer stops. When you have multiple AjaxLazyLoadPanels on the same page, only one timer is used and all panels piggyback on this single timer.

    This component will also replace the contents when a normal request comes through and the content is ready.

    Since:
    1.3
    See Also:
    Serialized Form
    • Field Summary

      • Fields inherited from class org.apache.wicket.markup.html.panel.Panel

        PANEL
      • Fields inherited from class org.apache.wicket.Component

        ENABLE, FLAG_INITIALIZED, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER, RFLAG_CONTAINER_DEQUEING, RFLAG_CONTAINER_HAS_REMOVALS
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      abstract T getLazyLoadComponent​(String markupId)
      Factory method for creating the lazily loaded content that replaces the loading component after isContentReady() returns true.
      org.apache.wicket.Component getLoadingComponent​(String id)
      Create a loading component shown instead of the actual content until it is isContentReady().
      protected Duration getUpdateInterval()
      Get the preferred interval for updates.
      protected void initTimer()
      Initialize a timer - default implementation installs an AbstractAjaxTimerBehavior on the page, if it is not already present.
      protected boolean isContentReady()
      Determines that the content we're waiting for is ready, typically used in polling background threads for their result.
      protected boolean isLoaded()
      Check whether the content is loaded.
      protected void onBeforeRender()
      Installs a page-global timer if not already present.
      protected void onConfigure()  
      protected void onContentLoaded​(T content, Optional<org.apache.wicket.ajax.AjaxRequestTarget> target)
      Called after the loading component was replaced with the lazy loaded content.
      • Methods inherited from class org.apache.wicket.markup.html.panel.Panel

        getRegionMarkup, newMarkupSourcingStrategy
      • Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer

        getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
      • Methods inherited from class org.apache.wicket.MarkupContainer

        add, addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, newDequeueContext, onComponentTagBody, onDetach, onInitialize, onRender, queue, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, stream, streamChildren, toString, toString, visitChildren, visitChildren
      • Methods inherited from class org.apache.wicket.Component

        add, addStateChange, beforeRender, canCallListener, canCallListenerAfterExpiry, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, createConverter, debug, detach, detachModel, detachModels, determineVisibility, error, exceptionMessage, fatal, findMarkupStream, findPage, findParent, findParentWithAssociatedMarkup, getAjaxRegionMarkupId, getApplication, getBehaviorById, getBehaviorId, getBehaviors, getBehaviors, getClassRelativePath, getConverter, getDefaultModel, getDefaultModelObject, getDefaultModelObjectAsString, getDefaultModelObjectAsString, getEscapeModelStrings, getFeedbackMessages, getFlag, getId, getInnermostModel, getInnermostModel, getLocale, getLocalizer, getMarkup, getMarkupAttributes, getMarkupId, getMarkupId, getMarkupIdFromMarkup, getMarkupIdImpl, getMarkupSourcingStrategy, getMarkupTag, getMetaData, getModelComparator, getOutputMarkupId, getOutputMarkupPlaceholderTag, getPage, getPageRelativePath, getParent, getPath, getRenderBodyOnly, getRequest, getRequestCycle, getRequestFlag, getResponse, getSession, getSizeInBytes, getStatelessHint, getString, getString, getString, getStyle, getVariation, hasBeenRendered, hasErrorMessage, hasFeedbackMessage, info, initModel, internalOnModelChanged, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onComponentTag, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderPart, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlForListener, urlForListener, visitParents, visitParents, warn, wrap
      • Methods inherited from interface org.apache.wicket.IQueueRegion

        dequeue, newDequeueContext
    • Constructor Detail

      • AjaxLazyLoadPanel

        public AjaxLazyLoadPanel​(String id,
                                 org.apache.wicket.model.IModel<?> model)
        Constructor
        Parameters:
        id -
        model -
    • Method Detail

      • isContentReady

        protected boolean isContentReady()
        Determines that the content we're waiting for is ready, typically used in polling background threads for their result. Override this to implement your own check.

        This default implementation returns true, i.e. assuming the content is ready immediately.

        Returns:
        whether the actual content is ready
      • getLoadingComponent

        public org.apache.wicket.Component getLoadingComponent​(String id)
        Create a loading component shown instead of the actual content until it is isContentReady().
        Parameters:
        id - The components id
        Returns:
        The component to show while the real content isn't ready yet
      • getLazyLoadComponent

        public abstract T getLazyLoadComponent​(String markupId)
        Factory method for creating the lazily loaded content that replaces the loading component after isContentReady() returns true. You may call setRenderBodyOnly(true) on this component if you need the body only.
        Parameters:
        markupId - The components markupid.
        Returns:
        the content to show after isContentReady()
      • onContentLoaded

        protected void onContentLoaded​(T content,
                                       Optional<org.apache.wicket.ajax.AjaxRequestTarget> target)
        Called after the loading component was replaced with the lazy loaded content.

        This default implementation does nothing.

        Parameters:
        content - The lazy loaded content
        target - optional Ajax request handler
      • onBeforeRender

        protected void onBeforeRender()
        Installs a page-global timer if not already present.
        Overrides:
        onBeforeRender in class org.apache.wicket.Component
      • initTimer

        protected void initTimer()
        Initialize a timer - default implementation installs an AbstractAjaxTimerBehavior on the page, if it is not already present.
      • onConfigure

        protected void onConfigure()
        Overrides:
        onConfigure in class org.apache.wicket.Component
      • getUpdateInterval

        protected Duration getUpdateInterval()
        Get the preferred interval for updates.

        Since all LazyLoadingPanels on a page share the same Ajax timer, its update interval is derived from the minimum of all panel's update intervals.

        Returns:
        update interval, must not be null
      • isLoaded

        protected final boolean isLoaded()
        Check whether the content is loaded.

        If not loaded already and the content is ready, replaces the lazy loading component with the lazily loaded content.

        Returns:
        true if content is loaded
        See Also:
        isContentReady()