org.apache.wicket.extensions.markup.html.repeater.tree
Class AbstractTree<T>

java.lang.Object
  extended by org.apache.wicket.Component
      extended by org.apache.wicket.MarkupContainer
          extended by org.apache.wicket.markup.html.WebMarkupContainer
              extended by org.apache.wicket.markup.html.panel.Panel
                  extended by org.apache.wicket.extensions.markup.html.repeater.tree.AbstractTree<T>
Type Parameters:
T - the node type
All Implemented Interfaces:
Serializable, Iterable<Component>, IEventSink, IEventSource, IConverterLocator, IGenericComponent<Set<T>>, IHeaderContributor, IRequestableComponent, org.apache.wicket.util.IHierarchical<Component>, org.apache.wicket.util.io.IClusterable
Direct Known Subclasses:
NestedTree, TableTree

public abstract class AbstractTree<T>
extends Panel
implements IGenericComponent<Set<T>>

Abstract base class for NestedTree and TableTree. Uses its model for storing the AbstractTree.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
static class AbstractTree.State
          The state of a node.
 
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_REMOVING_FROM_HIERARCHY, FLAG_RESERVED1, FLAG_RESERVED2, FLAG_RESERVED3, FLAG_RESERVED4, FLAG_RESERVED5, FLAG_RESERVED8, PARENT_PATH, PATH_SEPARATOR, RENDER
 
Constructor Summary
protected AbstractTree(String id, ITreeProvider<T> provider)
           
protected AbstractTree(String id, ITreeProvider<T> provider, IModel<Set<T>> state)
           
 
Method Summary
 void collapse(T t)
          Collapse the given node, tries to update the affected branch if the change happens on an AjaxRequestTarget.
 void expand(T t)
          Expand the given node, tries to update the affected branch if the change happens on an AjaxRequestTarget.
 IItemReuseStrategy getItemReuseStrategy()
           
 IModel<Set<T>> getModel()
          Get the model of this tree.
 Set<T> getModelObject()
          Get the model object of this tree.
 ITreeProvider<T> getProvider()
          Get the provider of the tree nodes.
 AbstractTree.State getState(T t)
          Get the given node's AbstractTree.State.
protected  IModel<?> initModel()
          Delegate to newModel() 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 a ProviderSubset.
 Component newNodeComponent(String id, IModel<T> model)
          Create a new component for a node.
protected  void onDetach()
          Overriden to detach the ITreeProvider.
 AbstractTree<T> setItemReuseStrategy(IItemReuseStrategy strategy)
          Sets the item reuse strategy.
 void setModel(IModel<Set<T>> model)
          Set the model.
 void setModelObject(Set<T> state)
          Set the model object.
abstract  void updateBranch(T node, AjaxRequestTarget target)
          Convenience method to update a single branch on an AjaxRequestTarget.
abstract  void updateNode(T node, AjaxRequestTarget target)
          Convenience method to update a single node on an AjaxRequestTarget.
 
Methods inherited from class org.apache.wicket.markup.html.panel.Panel
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, addOrReplace, autoAdd, contains, get, get, getAssociatedMarkup, getAssociatedMarkupStream, getMarkup, getMarkupType, internalAdd, internalInitialize, iterator, iterator, onAfterRenderChildren, onComponentTagBody, onRender, remove, remove, removeAll, renderAll, renderAssociatedMarkup, renderNext, replace, setDefaultModel, size, swap, toString, toString, visitChildren, visitChildren, visitChildren, visitChildren
 
Methods inherited from class org.apache.wicket.Component
add, addStateChange, afterRender, beforeRender, canCallListenerInterface, checkComponentTag, checkComponentTagAttribute, checkHierarchyChange, clearOriginalDestination, configure, continueToOriginalDestination, 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, 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, internalPrepareForRender, internalRenderComponent, isActionAuthorized, isAuto, isBehaviorAccepted, isEnableAllowed, isEnabled, isEnabledInHierarchy, isIgnoreAttributeModifier, isRenderAllowed, isRendering, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onBeforeRender, onComponentTag, onConfigure, onEvent, onInitialize, onModelChanged, onModelChanging, onReAdd, onRemove, prepareForRender, redirectToInterceptPage, remove, remove, render, renderComponentTag, rendered, renderHead, renderHead, renderHead, renderPlaceholderTag, replaceComponentTagBody, replaceWith, sameInnermostModel, sameInnermostModel, send, setAuto, setDefaultModelObject, setEnabled, setEscapeModelStrings, setFlag, setIgnoreAttributeModifier, setMarkup, setMarkupId, setMarkupIdImpl, setMetaData, setOutputMarkupId, setOutputMarkupPlaceholderTag, setParent, setRenderBodyOnly, setRequestFlag, setResponsePage, setResponsePage, setResponsePage, setVersioned, setVisibilityAllowed, setVisible, success, urlFor, urlFor, urlFor, urlFor, urlFor, visitParents, visitParents, warn, wrap
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

AbstractTree

protected AbstractTree(String id,
                       ITreeProvider<T> provider)

AbstractTree

protected AbstractTree(String id,
                       ITreeProvider<T> provider,
                       IModel<Set<T>> state)
Method Detail

setItemReuseStrategy

public AbstractTree<T> setItemReuseStrategy(IItemReuseStrategy strategy)
Sets the item reuse strategy. This strategy controls the creation of Items.

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 to newModel() if none is inited in super implementation.

Overrides:
initModel in class Component

newModel

protected IModel<Set<T>> newModel()
Factory method for a model, by default creates a model containing a ProviderSubset. Depending on your ITreeProvider's model you might consider to provide a custom Set implementation.

Note: The contained Set has at least to implement Set.add(Object), Set.remove(Object) and Set.contains(Object).

Returns:
model for this tree

getModel

public IModel<Set<T>> getModel()
Get the model of this tree.

Specified by:
getModel in interface IGenericComponent<Set<T>>
Returns:
model

getModelObject

public Set<T> getModelObject()
Get the model object of this tree.

Specified by:
getModelObject in interface IGenericComponent<Set<T>>
Returns:
the model object

setModel

public void setModel(IModel<Set<T>> model)
Set the model.

Specified by:
setModel in interface IGenericComponent<Set<T>>
Parameters:
model - the model

setModelObject

public void setModelObject(Set<T> state)
Set the model object.

Specified by:
setModelObject in interface IGenericComponent<Set<T>>
Parameters:
state - the model object

expand

public void expand(T t)
Expand the given node, tries to update the affected branch if the change happens on an AjaxRequestTarget.

Parameters:
t - the node to expand
See Also:
getModelObject(), Set.add(Object), updateBranch(Object, AjaxRequestTarget)

collapse

public void collapse(T t)
Collapse the given node, tries to update the affected branch if the change happens on an AjaxRequestTarget.

Parameters:
t - the object to collapse
See Also:
getModelObject(), Set.remove(Object), updateBranch(Object, AjaxRequestTarget)

getState

public AbstractTree.State getState(T t)
Get the given node's AbstractTree.State.

Parameters:
t - the node to get state for
Returns:
state
See Also:
getModelObject(), Set.contains(Object)

onDetach

protected void onDetach()
Overriden to detach the ITreeProvider.

Overrides:
onDetach in class Component

newNodeComponent

public Component newNodeComponent(String id,
                                  IModel<T> model)
Create a new component for a node.

Parameters:
id - the component id
model - 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 id
model - the model containing the node
Returns:
created component

updateBranch

public abstract void updateBranch(T node,
                                  AjaxRequestTarget target)
Convenience method to update a single branch on an AjaxRequestTarget. Does nothing if the given node is currently not visible or target is null.

Parameters:
node - node to update
target - request target

updateNode

public abstract void updateNode(T node,
                                AjaxRequestTarget target)
Convenience method to update a single node on an AjaxRequestTarget. Does nothing if the given node is currently not visible or target is null.

Parameters:
node - node to update
target - request target or null


Copyright © 2006–2020 Apache Software Foundation. All rights reserved.