You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by sudheerp <p_...@rediffmail.com> on 2008/02/06 11:35:14 UTC

tree2 newly inserted child nodes not displayed

Hello Friends,

   I am new to myfaces tree2 component. I am trying to implement the an
example
given at

  
http://www.jroller.com/plainoldweblog/entry/use_tomahawk_tree2_and_ajax4jsf

   I am not able to expand the child node in the given example or any nodes
added
to child is not displayed.

    List childList = p_parentNode.getChildren();
    TreeNode abc = new TreeNodeBase("folder", "MS Word Files", "302",
false);

    List childList1 = abc.getChildren();
    TreeNode abc1 = new TreeNodeBase("folder", "MS Word File 1", "3021",
false);
   
    abc.getChildren().add(new TreeNodeBase("folder", "File 1", "3021",
false));
        abc.getChildren().add(new TreeNodeBase("folder", "File 2", "3022",
false));
        abc.getChildren().add(new TreeNodeBase("folder", "File 3", "3023",
false));
        childList1.add(abc1);
        childList.add(abc);

Can somebody help me, I need to recursively expand the child node. I have
given the source below.

   Thank you.

Sudheer


treeBean.java
=============
public class TreeBean implements Serializable {
        private TreeModel treeModel;
        public TreeModel getTreeModel() {
                if(treeModel == null) {
                        //you don't really have to initialize the treeModel
here
                        TreeNode root = new TreeNodeBase("folder", "root",
"1", false);
                List<TreeNode> rootChildList = root.getChildren();        
                //constructs real folder tree
                TreeNode documents = new TreeNodeBase("folder", "Documents",
"10", false);        
                List<TreeNode> childList = documents.getChildren();        
                TreeNode home = new TreeNodeBase("folder", "User Home",
"101", false);
                home.getChildren().add(new TreeNodeBase("folder", "user",
"1011", false));
                TreeNode tmp = new TreeNodeBase("folder", "Temporary",
"102", false);
                tmp.getChildren().add(new TreeNodeBase("folder", "junks",
"1021", false));        
                childList.add(home);
                childList.add(tmp);
                rootChildList.add(documents);      
                treeModel = new TreeModelBase(root);
                }
               
                return treeModel;
        }
       
        /**
         * set folder tree model
         * @param p_treeModel
         */
        public void setTreeModel(TreeModel p_treeModel) {
                treeModel = p_treeModel;
        }
                   
    /**
     * This method listens to expand and collapse folder events.
     * @param p_event
     */
    public void processToggle(ActionEvent p_event) {

        UIComponent component = (UIComponent) p_event.getSource();
        while (!(component != null && component instanceof HtmlTree)) {
        component = component.getParent();
        }
       
        if (component != null) {
        HtmlTree tree = (HtmlTree) component;
        TreeNode node = tree.getNode();
       
        if (!tree.isNodeExpanded()) {
        loadChildren(node);
        } else {
        //unloadChildren(node);
        }
        }
    }
   
    /**
     * when tree node is expanded, this method will load its children
     * @param p_parentNode
     */
    public void loadChildren(TreeNode p_parentNode) {
                List<TreeNode> childList = p_parentNode.getChildren();
               
                //This is where you need to load the actual child nodes
                childList.add(new TreeNodeBase(p_parentNode.getType(),
                                "folder"+System.currentTimeMillis(),
                                p_parentNode.getIdentifier()+1,  false));
    }


}


tree.xhtml
==========
...........
...........
<h:form id="ajaxform">
        <h:panelGroup id="treePanel">
                <t:tree2 id="tree" value="#{treeBacker.treeModel}"
                                var="node" varNodeToggler="t"
                                clientSideToggle="false"
                                showRootNode="false" showNav="false"
                                showLines="false">
                        <f:facet name="folder">
                                <h:panelGroup id="folderPanelGroup">
                                        <!-- expand collapse -->
                                        <a4j:commandLink
id="expandCollapseLink" immediate="true"
                                                        
styleClass="treeNode"
                                                        
reRender="treePanel"
                                                        
action="#{t.toggleExpanded}"
                                                        
actionListener="#{treeBacker.processToggle}">
                                                <t:graphicImage
style="border:0px" url="#{t.nodeExpanded ? '/images/yellow-folder-open.png'
: '/images/yellow-folder-closed.png' }" />
                                        </a4j:commandLink>
                                        <!-- load folder content -->
                                        <h:outputText
value="#{node.description}" />
                                </h:panelGroup>
                        </f:facet>
                </t:tree2>
        </h:panelGroup>
</h:form>
...........
...........
-- 
View this message in context: http://www.nabble.com/tree2-newly-inserted-child-nodes-not-displayed-tp15306460p15306460.html
Sent from the MyFaces - Users mailing list archive at Nabble.com.