Hi again! I've forgotten to paste the code, maybe someone can help me
solve the problem, thanks.

Home.html:
<html jwcid="@Shell" title="Using The Tapestry Tree Control">
<body jwcid="@Body">
    <h1>First Tree</h1>

                <span class="tree" jwcid="treeView">
                    <span jwcid="treeDataView">
                        <span jwcid="treeNodeView"/>
                    </span>
                </span>
                                <span jwcid="info"/>

</body>
</html>

Home.page:
<?xml version="1.0"?>
<!DOCTYPE page-specification PUBLIC
        "-//Apache Software Foundation//Tapestry Specification 4.0//EN"
        "http://jakarta.apache.org/tapestry/dtd/Tapestry_4_0.dtd";>

<page-specification class="com.ttdev.newtree3v4.FirstTreePage">

    <component id="treeView" type="contrib:TreeView">
        <binding name="treeModel" value="treeModel"/>
        <binding name="treeStateListener" value="treeStateListener"/>
    </component>

    <component id="treeDataView" type="contrib:TreeDataView">
        <binding name="treeView" value="components.treeView"/>
        <binding name="value" value="value"/>
    </component>

    <component id="treeNodeView" type="contrib:TreeNodeView">
        <binding name="treeDataView" value="components.treeDataView"/>
        <binding name="makeNodeDirect" value="true"/>
                <binding name="nodeRenderFactory" value="renderFactory"/>
                <binding name="showNodeImages" value="false"/>
    </component>
        
        <component id="info" type="Insert">
                <binding name="value" value="lastNodeSelectedMsg"/>
        </component>

</page-specification>

FirstTreePage.java:
public class FirstTreePage extends BasePage implements ITreeStateListener {
        private ITreeDataModel treeDataModel;

        private ITreeModel treeModel;

        private Object value;
        
        public FirstTreePage() {
                treeModel=null;
        }
        public INodeRenderFactory getRenderFactory()
    {
        //System.out.println("getRenderFactory");
        return new SimpleNodeRenderFactory();
    }
        
        public void attach(IEngine value,IRequestCycle cycle) {
                super.attach(value,cycle);
        }

        public void detach() {
                super.detach();
                treeDataModel = null;
                value = null;
        }

        public ITreeStateListener getTreeStateListener() {
                System.out.println("getTreeStateListener");
                return this;
        }

        /*
         * @see 
org.apache.tapestry.contrib.tree.model.ITreeStateListener#treeStateChanged(org.apache.tapestry.contrib.tree.model.TreeStateEvent)
         */
        public void treeStateChanged(TreeStateEvent objEvent) {
                System.out.println("TreeStateChanged");
        // Get the StringTreeNode object that was selected
        TreeView treeView = (TreeView)getComponent("treeView");
        if(treeView != null){
            ITreeDataModel thisTreeDataModel =
treeView.getTreeModel().getTreeDataModel();
            Object selectedNode =
thisTreeDataModel.getObject(objEvent.getNodeUID());
            if(selectedNode instanceof StringTreeNode){
                
               lastNodeSelectedValue =
((StringTreeNode)selectedNode).getValue();

            }
        } else { // This shouldn't happen
            lastNodeSelectedValue = objEvent.getNodeUID().toString();
        }
        }

    String lastNodeSelectedValue;
    public String getLastNodeSelectedMsg()
    {
        if(lastNodeSelectedValue==null){
            return null;
        }
        return lastNodeSelectedValue + " was the last node selected.";
    }
   /**
     * Get the TreeModel that contains the nodes to be rendered
     *
     * @return ITreeModel
     */
     public ITreeModel getTreeModel() {
         System.out.println("GetTreeModell");
         if (treeModel == null) {


            // Create and "connect" all the nodes
            TreeNode node1 = new StringTreeNode("Root Node",1);
            TreeNode node2 = new StringTreeNode("Child One",2);
            TreeNode node2a = new StringTreeNode("Grandchild One",3);
            node2.insert(node2a);
            node1.insert(node2);
            TreeNode node3 = new StringTreeNode("Child Two",4);
            TreeNode node3a = new StringTreeNode("GrandChild Two",5);
            node3.insert(node3a);
            TreeNode node3a1 = new StringTreeNode("Great Grandchild One",6);
            node3a.insert(node3a1);
            node1.insert(node3);

            // Wrap the root node in a SimpleTreeDataModel
            treeDataModel = new SimpleTreeDataModel(node1);
            // Wrap the SimpleTreeDataModel in a SimpleTreeModel
            treeModel = new SimpleTreeModel(treeDataModel);
         }
         return treeModel;
     }
}



2005/12/5, Istvan Zakar <[EMAIL PROTECTED]>:
> Hello!
>
> I hope i'm sending this message to the right place. I've tried to
> figure out how to use contrib:tree in tapestry 4. I've managed to
> display a tree, and I can expand the root node, but when I try to
> expand the following node the whole tree collapses.
>
> Please help me :)
>
> Best Regards,
>    Istvan
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to