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<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.IGenericComponent<Set<T>,AbstractTree<T>>, 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
Direct Known Subclasses:
NestedTree, TableTree

public abstract class AbstractTree<T> extends org.apache.wicket.markup.html.panel.Panel implements org.apache.wicket.IGenericComponent<Set<T>,AbstractTree<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:
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static enum 
    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_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
     
    protected
    AbstractTree(String id, ITreeProvider<T> provider, org.apache.wicket.model.IModel<? extends Set<T>> state)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    void
    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.
    org.apache.wicket.markup.repeater.IItemReuseStrategy
     
    Get the provider of the tree nodes.
    Get the given node's AbstractTree.State.
    protected org.apache.wicket.model.IModel<?>
    Delegate to newModel() if none is inited in super implementation.
    protected abstract org.apache.wicket.Component
    newContentComponent(String id, org.apache.wicket.model.IModel<T> model)
    Create a new component for the content of a node.
    protected org.apache.wicket.model.IModel<Set<T>>
    Factory method for a model, by default creates a model containing a ProviderSubset.
    org.apache.wicket.Component
    newNodeComponent(String id, org.apache.wicket.model.IModel<T> model)
    Create a new component for a node.
    protected void
    Overridden to detach the ITreeProvider.
    setItemReuseStrategy(org.apache.wicket.markup.repeater.IItemReuseStrategy strategy)
    Sets the item reuse strategy.
    abstract void
    updateBranch(T node, org.apache.wicket.core.request.handler.IPartialPageRequestHandler target)
    Convenience method to update a single branch on an AjaxRequestTarget.
    abstract void
    updateNode(T node, org.apache.wicket.core.request.handler.IPartialPageRequestHandler target)
    Convenience method to update a single node on an AjaxRequestTarget.

    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, 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 Details

  • Method Details

    • setItemReuseStrategy

      public AbstractTree<T> setItemReuseStrategy(org.apache.wicket.markup.repeater.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 org.apache.wicket.markup.repeater.IItemReuseStrategy getItemReuseStrategy()
      Returns:
      currently set item reuse strategy. Defaults to DefaultItemReuseStrategy if none was set.
      See Also:
      • DefaultItemReuseStrategy
    • getProvider

      Get the provider of the tree nodes.
      Returns:
      provider
    • initModel

      protected org.apache.wicket.model.IModel<?> initModel()
      Delegate to newModel() if none is inited in super implementation.
      Overrides:
      initModel in class org.apache.wicket.Component
    • newModel

      protected org.apache.wicket.model.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
    • 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:
    • 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:
    • getState

      Get the given node's AbstractTree.State.
      Parameters:
      t - the node to get state for
      Returns:
      state
      See Also:
    • onDetach

      protected void onDetach()
      Overridden to detach the ITreeProvider.
      Overrides:
      onDetach in class org.apache.wicket.MarkupContainer
    • newNodeComponent

      public org.apache.wicket.Component newNodeComponent(String id, org.apache.wicket.model.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 org.apache.wicket.Component newContentComponent(String id, org.apache.wicket.model.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, org.apache.wicket.core.request.handler.IPartialPageRequestHandler target)
      Convenience method to update a single branch on an AjaxRequestTarget. Does nothing if the given node is currently not visible.
      Parameters:
      node - node to update
      target - request target must not be @code null}
    • updateNode

      public abstract void updateNode(T node, org.apache.wicket.core.request.handler.IPartialPageRequestHandler target)
      Convenience method to update a single node on an AjaxRequestTarget. Does nothing if the given node is currently not visible.
      Parameters:
      node - node to update
      target - request target must not be @code null}