Tree migration to RichFaces 4

Overview

This document will describe the migration of tree component.

 

information from 3.3.x:

 

references:

http://docs.jboss.org/richfaces/latest_3_3_X/en/devguide/html/rich_tree.html

 

tld:

http://docs.jboss.org/richfaces/latest_3_3_X/en/tlddoc/rich/tree.html

 

svn

 

 

Related requests and jiras:

list of jira's

 

Removed features

 

  • Tree state advisors
  • Caching of tree nodes/models

 

Base functionality - to be implemented in M4


  • Three modes for nodes toggling: ajax/server/client
  • Two modes for nodes selection: ajax/client
  • Visual presentation of the node customizable via rich:treeNode component
  • Data types defined as "value":
    • javax.swing.tree.TreeNode
  • Several root nodes supported
  • Events
    • Server-side
      • Node toggling (not in M4 completely)
      • Node selection (not in M4 completely)

 

Additional features - for M5


  • Data types defined as "value":
    • org.richfaces.model.TreeDataModel (new for 4.x)
    • org.richfaces.model.TreeNode
  • Tree node customization attributes
  • Default rich:treeNode
  • Support for 'execute'/'render' attributes
  • Toggle types
    • toggleNodeEvent attribute specifies additional event on node itself which will trigger expansion.
  • Events
    • Client-side
      • Cancelable & non-cancelable for node toggling
      • Cancelable & non-cancelable for node selection
    • Server-side
      • treeToggleListener tag & component attributes
      • treeSelectionChangeListener tag & component attributes
    • Built-in converters for complex row keys
    • Improved support for lazy loading
    • Support for arbitrary data structures (via adaptors) (for M5)
      • treeModelAdaptor
      • treeModelRecursiveAdaptor

     

    Questionnable/LT - important


    • DnD
    • "disabled" attribute
    • "loading" facet for tree
    • Keyboard navigation
      • Nodes toggling
      • Node selection/deselection
    • Client-side API
    • Server-side API
      • Expand all nodes
      • Collapse all nodes
      • Expand particular node with all parents
      • Collapse particular node with all subnodes
      • Collapse particular node
      • Selection control
      • Reset visual state for:
        • Node
        • Subtree

     

    Questionnable/LT


    • Distinct operation (ajax/server/etc) modes for different types of tree nodes
    • Pagination support
    • Insertion of nodes in arbitrary order
      • TBD
      • TBD
      • ...
    • Multi selection
    • External partial updates
      • subtree
      • node

     

    Issues

     

    • Full node selection
    • Scrollable containers/scrolled page
    • Persistent row keys
    • DB models support
    • What is satisfiable performance?