Class AjaxLazyLoadPanel<T extends org.apache.wicket.Component>
- java.lang.Object
-
- org.apache.wicket.Component
-
- org.apache.wicket.MarkupContainer
-
- org.apache.wicket.markup.html.WebMarkupContainer
-
- org.apache.wicket.markup.html.panel.Panel
-
- org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel<T>
-
- 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()returnstrue. It will poll using anAbstractAjaxTimerBehaviorthat is installed on the page. When the component is replaced, the timer stops. When you have multipleAjaxLazyLoadPanels 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
-
-
Constructor Summary
Constructors Constructor Description AjaxLazyLoadPanel(String id)ConstructorAjaxLazyLoadPanel(String id, org.apache.wicket.model.IModel<?> model)Constructor
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description abstract TgetLazyLoadComponent(String markupId)Factory method for creating the lazily loaded content that replaces the loading component afterisContentReady()returnstrue.org.apache.wicket.ComponentgetLoadingComponent(String id)Create a loading component shown instead of the actual content until it isisContentReady().protected DurationgetUpdateInterval()Get the preferred interval for updates.protected voidinitTimer()Initialize a timer - default implementation installs anAbstractAjaxTimerBehavioron the page, if it is not already present.protected booleanisContentReady()Determines that the content we're waiting for is ready, typically used in polling background threads for their result.protected booleanisLoaded()Check whether the content is loaded.protected voidonBeforeRender()Installs a page-global timer if not already present.protected voidonConfigure()protected voidonContentLoaded(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 class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
AjaxLazyLoadPanel
public AjaxLazyLoadPanel(String id)
Constructor- Parameters:
id-
-
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 isisContentReady().- 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 afterisContentReady()returnstrue. 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 contenttarget- optional Ajax request handler
-
onBeforeRender
protected void onBeforeRender()
Installs a page-global timer if not already present.- Overrides:
onBeforeRenderin classorg.apache.wicket.Component
-
initTimer
protected void initTimer()
Initialize a timer - default implementation installs anAbstractAjaxTimerBehavioron the page, if it is not already present.
-
onConfigure
protected void onConfigure()
- Overrides:
onConfigurein classorg.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:
trueif content is loaded- See Also:
isContentReady()
-
-