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, IHeaderContributor, IRequestableComponent, IHierarchical<Component>, IClusterable
Direct Known Subclasses:
NestedTree, TableTree

public abstract class AbstractTree<T>
extends Panel

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.
 void updateBranch(T node, AjaxRequestTarget target)
          Convenience method to update a single branch on an AjaxRequestTarget.
 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
getWebPage, getWebRequest
 
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, 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, isStateless, isVersioned, isVisibilityAllowed, isVisible, isVisibleInHierarchy, markRendering, modelChanged, modelChanging, onAfterRender, onBeforeRender, onComponentTag, onConfigure, onEvent, onInitialize, onModelChanged, onModelChanging, 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
Returns:
The model

newModel

protected IModel<Set<T>> newModel()
Factory method for a model, by default creates a model containing a ProviderSubset.

Returns:
model for this tree

getModel

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

Returns:
model

getModelObject

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

Returns:
the model object

setModel

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

Parameters:
model - the model

setModelObject

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

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 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. This default implementation adds this whole component for rendering.

Parameters:
node - node to update
target - request target

updateNode

public 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-2012 Apache Software Foundation. All Rights Reserved.