Package org.wicketstuff
Class QuickViewBase<T>
-
- All Implemented Interfaces:
Serializable
,Iterable<Component>
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IMetadataContext<Serializable,Component>
,IHeaderContributor
,IPageable
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
,IQuickView
- Direct Known Subclasses:
QuickGridView
,QuickView
public abstract class QuickViewBase<T> extends RepeatingView implements IQuickView
base class forQuickView
- Author:
- Vineet Semwal
- See Also:
- Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description protected static class
QuickViewBase.ModelIterator<T>
Helper class that converts input from IDataProvider to an iterator over view items.
-
Field Summary
Fields Modifier and Type Field Description protected MetaDataKey<Synchronizer>
SYNCHRONIZER_KEY
key forSynchronizer
in request metadata-
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
-
-
Constructor Summary
Constructors Constructor Description QuickViewBase(String id, IDataProvider<T> dataProvider, IQuickReuseStrategy reuseStrategy)
QuickViewBase(String id, IDataProvider<T> dataProvider, IQuickReuseStrategy reuseStrategy, Component start, Component end)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected void
_contributeAddAtEndScripts(Component... components)
protected void
_contributeAddAtStartScripts(Component... components)
protected long
_getCurrentPage()
don't override,it's for internal useprotected long
_getPageCount()
don't override ,it's used for testing purposeprotected MarkupContainer
_getParent()
don't override,it's for internal useprotected <T> T
_getRequestMetaData(MetaDataKey<T> key)
protected void
_setCurrentPage(long page)
don't override,it's for internal useprotected <T> void
_setRequestMetaData(MetaDataKey<T> key, T value)
MarkupContainer
add(Component... components)
MarkupContainer
addAtStart(Component... components)
adds items at start of viewList<Item<T>>
addItemsForNextPage()
adds items/rows for next page and also sets the next page ,this method can called by any sequential items/rows navigator for exampleItemsNavigatorBase
calls this method onClick, ItemsNavigatorBase is the base ofAjaxItemsNavigator
.List<Item<T>>
addItemsForPage(long page)
create and draw children for the provided page ,number of children created are smaller than equal to getItemsPerRequest()MarkupContainer
addNewItems(T... objects)
this does 2 stepsMarkupContainer
addNewItemsAtStart(T... objects)
this does 2 stepsprotected Item
buildItem(int index, IModel<T> model)
Item
buildItem(int index, T object)
creates new item,for stateless environment,you can usebuildItem(java.lang.String, int, T)
orbuildItem(java.lang.String, int, T)
protected Item<T>
buildItem(String id, int index, IModel<T> model)
Item<T>
buildItem(String id, int index, T object)
use in stateless environment as there is no state ,it's user's responsiblity to give unique id and indexprotected Iterator<Item<T>>
buildItems(int index, Iterator<? extends T> iterator)
protected Iterator<Item<T>>
buildItems(Iterator<? extends T> iterator)
protected List<Item<T>>
buildItemsList(int index, Iterator<? extends T> iterator)
protected List<Item<T>>
buildItemsList(Iterator<? extends T> iterator)
protected void
createChildren(Iterator<Item<T>> iterator)
IItemFactory<T>
factory()
IPartialPageRequestHandler
findPartialPageRequestHandler(Class<? extends IPartialPageRequestHandler> requestHandlerClass)
protected IAddAtStartStore
getAddAtStartStore()
AjaxRequestTarget
getAjaxRequestTarget()
long
getCurrentPage()
IDataProvider<T>
getDataProvider()
Component
getEnd()
represents end of view ,can be any component it's position in the markup should be just after the view this is done so that the new children doesn't get mixedup with the other markup or another components specified in immediate parentIterator<Component>
getItems()
iterator which iterates through the items in the order they are rendered in view ie.long
getItemsCount()
same as dataprovider size but cached for request to improve performance in case of multiple call to avoid unnecessary expensive call ofIDataProvider.size()
int
getItemsPerRequest()
long
getPageCount()
calculates the number of pagesSet<Class<? extends IPartialPageRequestHandler>>
getPartialRequestHandlers()
protected IRepeaterUtil
getRepeaterUtil()
IQuickReuseStrategy
getReuseStrategy()
long
getRowsCount()
same asgetItemsCount()
but takes into account hierarchy so if the view is not visible in hierarchy the returned value is zero else return the getItemsCount() valueComponent
getStart()
represents start of view ,can be any component it's position in the markup should be just before view this is done so that the new children doesn't get mixedup with the other markup or another components specified in immediate parentSynchronizer
getSynchronizer()
Synchronizer basically adds components(repeater's items) and scripts to the associatedIPartialPageRequestHandler
after checking parent is not added to AjaxRequestTarget.protected void
initializeAddAtStartStoreIfRequired()
boolean
isAjax()
Iterator<Component>
iterator()
this iterator doesn't iterate through the elements in the order they are rendered in view, usegetItems()
protected IAddAtStartStore
newAddAtStartStore()
String
newChildId()
protected DefaultSynchronizer
newDefaultSynchronizer()
protected Item<T>
newItem(String id, int index, IModel<T> model)
protected Iterator<IModel<T>>
newModels(long offset, long count)
Synchronizer
nonARTSynchronizer()
protected void
onDetach()
protected void
onPopulate()
protected abstract void
populate(Item<T> item)
void
register(Class<? extends IPartialPageRequestHandler> requestHandler)
register partial page request handler class,for eg.MarkupContainer
remove(String id)
MarkupContainer
remove(Component component)
void
renderHead(IHeaderResponse response)
void
scrollTo(int height)
when called on ajax event, this method moves navigation-bar to height passed in method , this works when parent has scroll specified in css by defining overflow-y propertyvoid
scrollToBottom()
when called on ajax event ,this method moves navigation-bar to bottom, this works when parent has scroll specified in css by defining overflow-y propertyvoid
scrollToTop()
when called on ajax event, this method moves navigation-bar to top , this works when parent has scroll specified in css by defining overflow-y propertyvoid
setCurrentPage(long page)
void
setItemsPerRequest(int items)
void
setReuseStrategy(IQuickReuseStrategy reuseStrategy)
MarkupContainer
simpleAdd(Component... components)
it's a simple add,new item is not drawn just added,no js firedMarkupContainer
simpleRemove(Component c)
it's a simple remove,the item is just removed from quickview ,no js firedMarkupContainer
simpleRemoveAll()
-
Methods inherited from class org.apache.wicket.markup.repeater.RepeatingView
renderIterator
-
Methods inherited from class org.apache.wicket.markup.repeater.AbstractRepeater
dequeue, getMarkup, onBeforeRender, onRender, renderChild
-
Methods inherited from class org.apache.wicket.markup.html.WebMarkupContainer
getWebApplication, getWebPage, getWebRequest, getWebResponse, getWebSession
-
Methods inherited from class org.apache.wicket.MarkupContainer
addDequeuedComponent, addOrReplace, autoAdd, canDequeueTag, contains, dequeue, dequeuePreamble, findChildComponent, findComponentToDequeue, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkupType, getRegionMarkup, internalAdd, internalInitialize, iterator, newDequeueContext, onComponentTagBody, onInitialize, queue, 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, newMarkupSourcingStrategy, onAfterRender, onComponentTag, onConfigure, onEvent, onModelChanged, onModelChanging, onReAdd, onRemove, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, 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 org.wicketstuff.IQuickView
getParent
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Field Detail
-
SYNCHRONIZER_KEY
protected final MetaDataKey<Synchronizer> SYNCHRONIZER_KEY
key forSynchronizer
in request metadata
-
-
Constructor Detail
-
QuickViewBase
public QuickViewBase(String id, IDataProvider<T> dataProvider, IQuickReuseStrategy reuseStrategy)
- Parameters:
id
- component iddataProvider
- dataprovider of objectsreuseStrategy
- children are created again on render
-
QuickViewBase
public QuickViewBase(String id, IDataProvider<T> dataProvider, IQuickReuseStrategy reuseStrategy, Component start, Component end)
- Parameters:
id
- component iddataProvider
- dataprovider of objectsreuseStrategy
- children are created again on renderstart
- start of viewend
- end of view
-
-
Method Detail
-
setReuseStrategy
public void setReuseStrategy(IQuickReuseStrategy reuseStrategy)
-
getAddAtStartStore
protected IAddAtStartStore getAddAtStartStore()
-
initializeAddAtStartStoreIfRequired
protected void initializeAddAtStartStoreIfRequired()
-
newAddAtStartStore
protected IAddAtStartStore newAddAtStartStore()
-
getReuseStrategy
public IQuickReuseStrategy getReuseStrategy()
- Specified by:
getReuseStrategy
in interfaceIQuickView<T>
-
getItemsPerRequest
public int getItemsPerRequest()
-
newChildId
public String newChildId()
- Overrides:
newChildId
in classRepeatingView
-
setItemsPerRequest
public void setItemsPerRequest(int items)
-
getDataProvider
public IDataProvider<T> getDataProvider()
-
getRepeaterUtil
protected IRepeaterUtil getRepeaterUtil()
-
getStart
public final Component getStart()
represents start of view ,can be any component it's position in the markup should be just before view this is done so that the new children doesn't get mixedup with the other markup or another components specified in immediate parent- Returns:
- component using as start boundary
-
getEnd
public final Component getEnd()
represents end of view ,can be any component it's position in the markup should be just after the view this is done so that the new children doesn't get mixedup with the other markup or another components specified in immediate parent- Returns:
- component used as end boundary
-
buildItem
public Item<T> buildItem(String id, int index, T object)
use in stateless environment as there is no state ,it's user's responsiblity to give unique id and index- Parameters:
id
-index
-object
-- Returns:
- item
-
buildItem
public Item buildItem(int index, T object)
creates new item,for stateless environment,you can usebuildItem(java.lang.String, int, T)
orbuildItem(java.lang.String, int, T)
- Parameters:
object
- model object- Returns:
- item
-
isAjax
public boolean isAjax()
-
simpleAdd
public MarkupContainer simpleAdd(Component... components)
it's a simple add,new item is not drawn just added,no js fired- Parameters:
components
- component to be added- Returns:
- this
-
simpleRemove
public MarkupContainer simpleRemove(Component c)
it's a simple remove,the item is just removed from quickview ,no js fired- Parameters:
c
-- Returns:
- this
-
simpleRemoveAll
public MarkupContainer simpleRemoveAll()
-
iterator
public Iterator<Component> iterator()
this iterator doesn't iterate through the elements in the order they are rendered in view, usegetItems()
- Specified by:
iterator
in interfaceIterable<T>
- Overrides:
iterator
in classMarkupContainer
- Returns:
- iterator
-
getItems
public Iterator<Component> getItems()
iterator which iterates through the items in the order they are rendered in view ie. first items added using addAtStart(*) are fetched and then items added using add(*)- Returns:
- items iterator
-
onPopulate
protected void onPopulate()
- Overrides:
onPopulate
in classRepeatingView
-
factory
public IItemFactory<T> factory()
-
addItemsForPage
public List<Item<T>> addItemsForPage(long page)
Description copied from interface:IQuickView
create and draw children for the provided page ,number of children created are smaller than equal to getItemsPerRequest()- Specified by:
addItemsForPage
in interfaceIQuickView<T>
- Returns:
- list of components created
-
renderHead
public void renderHead(IHeaderResponse response)
- Specified by:
renderHead
in interfaceIHeaderContributor
- Overrides:
renderHead
in classComponent
-
getItemsCount
public final long getItemsCount()
same as dataprovider size but cached for request to improve performance in case of multiple call to avoid unnecessary expensive call ofIDataProvider.size()
- Returns:
- dataprovider's size
-
getRowsCount
public final long getRowsCount()
same asgetItemsCount()
but takes into account hierarchy so if the view is not visible in hierarchy the returned value is zero else return the getItemsCount() value- Returns:
- items count visible
-
getPageCount
public final long getPageCount()
calculates the number of pages- Specified by:
getPageCount
in interfaceIPageable
- Returns:
- number of pages
-
_getPageCount
protected long _getPageCount()
don't override ,it's used for testing purpose- Returns:
- number of pages
-
getCurrentPage
public final long getCurrentPage()
- Specified by:
getCurrentPage
in interfaceIPageable
- See Also:
IPageable.getCurrentPage()
-
_getCurrentPage
protected long _getCurrentPage()
don't override,it's for internal use
-
setCurrentPage
public final void setCurrentPage(long page)
- Specified by:
setCurrentPage
in interfaceIPageable
- See Also:
IPageable.setCurrentPage(long)
-
_setCurrentPage
protected void _setCurrentPage(long page)
don't override,it's for internal use
-
getAjaxRequestTarget
public AjaxRequestTarget getAjaxRequestTarget()
-
findPartialPageRequestHandler
public IPartialPageRequestHandler findPartialPageRequestHandler(Class<? extends IPartialPageRequestHandler> requestHandlerClass)
-
_getParent
protected MarkupContainer _getParent()
don't override,it's for internal use
-
add
public MarkupContainer add(Component... components)
- Overrides:
add
in classMarkupContainer
-
_contributeAddAtEndScripts
protected void _contributeAddAtEndScripts(Component... components)
-
addNewItems
public MarkupContainer addNewItems(T... objects)
this does 2 steps 1)creates children ,children will get the model object after iterating over objects passed as argument 2)adds children to View usingadd(org.apache.wicket.Component...)
- Parameters:
objects
- iterator of model objects for children- Returns:
- this
-
addNewItemsAtStart
public MarkupContainer addNewItemsAtStart(T... objects)
this does 2 steps 1)creates children ,children will get the model object after iterating over objects passed as argument 2)adds children to View usingaddAtStart(org.apache.wicket.Component...)
the respective items for objects will be displayed at start of the view in the order of passed objects
- Parameters:
objects
- iterator of model objects for children- Returns:
- this
-
addItemsForNextPage
public List<Item<T>> addItemsForNextPage()
adds items/rows for next page and also sets the next page ,this method can called by any sequential items/rows navigator for exampleItemsNavigatorBase
calls this method onClick, ItemsNavigatorBase is the base ofAjaxItemsNavigator
.- Specified by:
addItemsForNextPage
in interfaceIQuickView<T>
-
remove
public MarkupContainer remove(Component component)
- Overrides:
remove
in classMarkupContainer
-
remove
public MarkupContainer remove(String id)
- Overrides:
remove
in classMarkupContainer
-
addAtStart
public MarkupContainer addAtStart(Component... components)
adds items at start of viewalso see
getItems()
- Parameters:
components
-- Returns:
- this
-
_contributeAddAtStartScripts
protected void _contributeAddAtStartScripts(Component... components)
-
scrollToBottom
public void scrollToBottom()
when called on ajax event ,this method moves navigation-bar to bottom, this works when parent has scroll specified in css by defining overflow-y property
-
scrollToTop
public void scrollToTop()
when called on ajax event, this method moves navigation-bar to top , this works when parent has scroll specified in css by defining overflow-y property
-
scrollTo
public void scrollTo(int height)
when called on ajax event, this method moves navigation-bar to height passed in method , this works when parent has scroll specified in css by defining overflow-y property
-
register
public void register(Class<? extends IPartialPageRequestHandler> requestHandler)
register partial page request handler class,for eg. for websocket register(IWebSocketRequestHandler.class) ,NO need to register
AjaxRequestTarget
quickview is already aware of that- Parameters:
requestHandler
-
-
getSynchronizer
public Synchronizer getSynchronizer()
Synchronizer basically adds components(repeater's items) and scripts to the associatedIPartialPageRequestHandler
after checking parent is not added to AjaxRequestTarget. If parent is added scripts and items are not added to the requesthandler
-
_setRequestMetaData
protected <T> void _setRequestMetaData(MetaDataKey<T> key, T value)
-
_getRequestMetaData
protected <T> T _getRequestMetaData(MetaDataKey<T> key)
-
newDefaultSynchronizer
protected DefaultSynchronizer newDefaultSynchronizer()
-
nonARTSynchronizer
public Synchronizer nonARTSynchronizer()
-
getPartialRequestHandlers
public Set<Class<? extends IPartialPageRequestHandler>> getPartialRequestHandlers()
-
onDetach
protected void onDetach()
- Overrides:
onDetach
in classMarkupContainer
-
-