Fill a treeview programmatically

You must build a collection of TreeNode objects and add this collection to the TreeView control. Each TreeNode object has several properties to set up the visual appearance and functionality.

Important TreeNode properties

expanded - Shows this node expaned with children
ext - Title text of the node
target - Target browser window
toolTip - Tooltip text to display
url - Hyperlink to navigate to
action - Name of method to call if user selects this node
actionListenerExpression - Expression for action listener method.

Adding icon to TreeNode

To add a icon to the TreeNode you must first create a ImageComponent. Now you can set the theme specific icon with the setIcon method. Use a constant of class ThemeImages for the icon name. Add the created ImageComponent as facet to the TreeNode.

Sample:

ImageComponent image = new ImageComponent();
image.setIcon( TreeImages.TREE_FOLDER );
treeNode.getFacets().put( treeNode.IMAGE_FACET_KEY, image );

Setting Action Expression for TreeNode

To set the Action Expression of a TreeNode you must use the method setActionExpression of the TreeNode object. This method needs a MethodExpression object as parameter.

Sample code:

ExpressionFactory ef = FacesContext.
  getCurrentInstance().
  getApplication().
  getExpressionFactory();
ELContext elContext = FacesContext.
  getCurrentInstance().
  getELContext();
MethodExpression me = ef.createMethodExpression(
  elContext,
  "#{Page1.treeNode_action}",
  String.class, new Class[]{} );
treeNode.setActionExpression( me );