April 2004
Intermediate to advanced
606 pages
20h 4m
English
The com.mycompany.jsf.model.TreeModel class
is
the model class for the tree component. It provides random access to
nodes in a tree made up of instances of the
TreeNode class we looked at in Chapter 12:
package com.mycompany.jsf.model;
import java.util.StringTokenizer;
import javax.faces.component.NamingContainer;
public class TreeModel {
private final static String SEPARATOR =
String.valueOf(NamingContainer.SEPARATOR_CHAR);
private TreeNode root;
private TreeNode currentNode;
public TreeModel(TreeNode root) {
this.root = root;
}
public TreeNode getNode( ) {
return currentNode;
}
public void setNodeId(String nodeId) {
if (nodeId == null) {
currentNode = null;
return;
}
TreeNode node = root;
StringBuffer sb = new StringBuffer( );
StringTokenizer st =
new StringTokenizer(nodeId, SEPARATOR);
sb.append(st.nextToken( )).append(SEPARATOR);
while (st.hasMoreTokens( )) {
int nodeIndex = Integer.parseInt(st.nextToken( ));
sb.append(nodeIndex);
try {
node = (TreeNode) node.getChildren( ).get(nodeIndex);
}
catch (IndexOutOfBoundsException e) {
String msg = "Node node with ID " + sb.toString( ) +
". Failed to parse " + nodeId;
throw new IllegalArgumentException(msg);
}
sb.append(SEPARATOR);
}
currentNode = node;
}
}The TreeModel constructor takes the root
TreeNode reference as its single argument and
saves it in an instance variable. The setNodeId() method sets the current node to the specified node ID, which is a colon-separated list of node indexes. For instance, “0:0:1” ...
Read now
Unlock full access