Class AbstractTree<T>
- 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.markup.html.repeater.tree.AbstractTree<T>
-
- Type Parameters:
T
- the node type
- All Implemented Interfaces:
Serializable
,Iterable<Component>
,IEventSink
,IEventSource
,IFeedbackContributor
,IConverterLocator
,IGenericComponent<Set<T>,AbstractTree<T>>
,IMetadataContext<Serializable,Component>
,IQueueRegion
,IHeaderContributor
,IRequestableComponent
,IHierarchical<Component>
,IClusterable
- Direct Known Subclasses:
NestedTree
,TableTree
public abstract class AbstractTree<T> extends Panel implements IGenericComponent<Set<T>,AbstractTree<T>>
Abstract base class forNestedTree
andTableTree
. Uses its model for storing theAbstractTree.State
of its nodes. Note that a tree has no notion of a selection. Handling state of nodes besides expanse/collapse is irrelevant to a tree implementation.- Author:
- svenmeier
- See Also:
newContentComponent(String, IModel)
, Serialized Form
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
AbstractTree.State
The state of a node.
-
Field Summary
-
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 Modifier Constructor Description protected
AbstractTree(String id, ITreeProvider<T> provider)
protected
AbstractTree(String id, ITreeProvider<T> provider, IModel<? extends Set<T>> state)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description void
collapse(T t)
Collapse the given node, tries to update the affected branch if the change happens on anAjaxRequestTarget
.void
expand(T t)
Expand the given node, tries to update the affected branch if the change happens on anAjaxRequestTarget
.IItemReuseStrategy
getItemReuseStrategy()
ITreeProvider<T>
getProvider()
Get the provider of the tree nodes.AbstractTree.State
getState(T t)
Get the given node'sAbstractTree.State
.protected IModel<?>
initModel()
Delegate tonewModel()
if none is inited in super implementation.protected abstract Component
newContentComponent(String id, IModel<T> model)
Create a new component for the content of a node.protected IModel<Set<T>>
newModel()
Factory method for a model, by default creates a model containing aProviderSubset
.Component
newNodeComponent(String id, IModel<T> model)
Create a new component for a node.protected void
onDetach()
Overridden to detach theITreeProvider
.AbstractTree<T>
setItemReuseStrategy(IItemReuseStrategy strategy)
Sets the item reuse strategy.abstract void
updateBranch(T node, IPartialPageRequestHandler target)
Convenience method to update a single branch on anAjaxRequestTarget
.abstract void
updateNode(T node, IPartialPageRequestHandler target)
Convenience method to update a single node on anAjaxRequestTarget
.-
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, 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, internalOnModelChanged, internalRenderComponent, internalRenderHead, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isInitialized, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onBeforeRender, onComponentTag, onConfigure, 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 org.apache.wicket.IGenericComponent
getDefaultModel, getDefaultModelObject, getModel, getModelObject, setDefaultModel, setDefaultModelObject, setModel, setModelObject
-
Methods inherited from interface org.apache.wicket.IQueueRegion
dequeue, newDequeueContext
-
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
-
-
-
Constructor Detail
-
AbstractTree
protected AbstractTree(String id, ITreeProvider<T> provider)
-
AbstractTree
protected AbstractTree(String id, ITreeProvider<T> provider, IModel<? extends Set<T>> state)
-
-
Method Detail
-
setItemReuseStrategy
public AbstractTree<T> setItemReuseStrategy(IItemReuseStrategy strategy)
Sets the item reuse strategy. This strategy controls the creation ofItem
s.- Parameters:
strategy
- item reuse strategy- Returns:
- this for chaining
- See Also:
IItemReuseStrategy
-
getItemReuseStrategy
public IItemReuseStrategy getItemReuseStrategy()
- Returns:
- currently set item reuse strategy. Defaults to
DefaultItemReuseStrategy
if none was set. - See Also:
DefaultItemReuseStrategy
-
getProvider
public ITreeProvider<T> getProvider()
Get the provider of the tree nodes.- Returns:
- provider
-
initModel
protected IModel<?> initModel()
Delegate tonewModel()
if none is inited in super implementation.
-
newModel
protected IModel<Set<T>> newModel()
Factory method for a model, by default creates a model containing aProviderSubset
. Depending on yourITreeProvider
's model you might consider to provide a customSet
implementation.Note: The contained
Set
has at least to implementSet.add(Object)
,Set.remove(Object)
andSet.contains(Object)
.- Returns:
- model for this tree
-
expand
public void expand(T t)
Expand the given node, tries to update the affected branch if the change happens on anAjaxRequestTarget
.- Parameters:
t
- the node to expand- See Also:
IGenericComponent.getModelObject()
,Set.add(Object)
,updateBranch(Object, IPartialPageRequestHandler)
-
collapse
public void collapse(T t)
Collapse the given node, tries to update the affected branch if the change happens on anAjaxRequestTarget
.- Parameters:
t
- the object to collapse- See Also:
IGenericComponent.getModelObject()
,Set.remove(Object)
,updateBranch(Object, IPartialPageRequestHandler)
-
getState
public AbstractTree.State getState(T t)
Get the given node'sAbstractTree.State
.- Parameters:
t
- the node to get state for- Returns:
- state
- See Also:
IGenericComponent.getModelObject()
,Set.contains(Object)
-
onDetach
protected void onDetach()
Overridden to detach theITreeProvider
.- Overrides:
onDetach
in classMarkupContainer
-
newNodeComponent
public Component newNodeComponent(String id, IModel<T> model)
Create a new component for a node.- Parameters:
id
- the component idmodel
- the model containing the node- Returns:
- created component
-
newContentComponent
protected abstract Component newContentComponent(String id, IModel<T> model)
Create a new component for the content of a node.- Parameters:
id
- the component idmodel
- the model containing the node- Returns:
- created component
-
updateBranch
public abstract void updateBranch(T node, IPartialPageRequestHandler target)
Convenience method to update a single branch on anAjaxRequestTarget
. Does nothing if the given node is currently not visible.- Parameters:
node
- node to updatetarget
- request target must not be @code null}
-
updateNode
public abstract void updateNode(T node, IPartialPageRequestHandler target)
Convenience method to update a single node on anAjaxRequestTarget
. Does nothing if the given node is currently not visible.- Parameters:
node
- node to updatetarget
- request target must not be @code null}
-
-