Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you use DefaultTreeNode(nodeType, data, parentNode)?

How do you use DefaultTreeNode(nodeType, data, parentNode)?

Basically if I do this:

treeChild = new DefaultTreeNode("action", data, treeParent);

My tree view is blank.

If I use this instead:

treeChild = new DefaultTreeNode(data, treeParent);

Then my tree view displays.

Is DefaultTreeNode(nodeType, data, parentNode) broken?

like image 428
jrobertsz66 Avatar asked Apr 13 '26 03:04

jrobertsz66


1 Answers

I believe I found the solution. Here it is:

1 - In tree.xhtml I had to include a tree element with a treeNode element for each node type.

<p:tree id="treeSingle" 
    value="#{treeBean.root}" 
    var="node"
    selectionMode="single"
    selection="#{treeBean.selectedNode}"
    dynamic="true"
    style="width:98%;height:100%;">
    <p:treeNode type="#{treeBean.LEAF_TYPE}">
       <h:outputText value="#{node}" />
    </p:treeNode>
    <p:treeNode type="#{treeBean.ACTION_TYPE}">
       <h:outputText value="#{node}" />
    </p:treeNode>
    <p:treeNode type="#{treeBean.VALUE_TYPE}">
       <h:outputText value="#{node}" />
    </p:treeNode>
</p:tree>

2 - Then in tree.xhtml I also had to define the menus for each node type like this:

<p:contextMenu for="treeSingle" nodeType="#{treeBean.LEAF_TYPE}">
    <p:menuitem value="View" actionListener="#{treeBean.displaySelectedSingle}" icon="ui-icon-search" update=":infoMessages"/>
    <p:menuitem value="Delete" update="treeSingle" actionListener="#{treeBean.deleteNode}" icon="ui-icon-close"/>
</p:contextMenu>
<p:contextMenu for="treeSingle" nodeType="#{treeBean.ACTION_TYPE}">
    <p:menuitem value="Execute" actionListener="#{treeBean.execute}" update=":infoMessages"/>
</p:contextMenu>
<p:contextMenu for="treeSingle" nodeType="#{treeBean.VALUE_TYPE}">
    <p:menuitem value="Edit" actionListener="#{treeBean.edit}" icon="ui-icon-edit" update=":infoMessages"/>
    <p:menuitem value="Delete" update="treeSingle" actionListener="#{treeBean.deleteNode}" icon="ui-icon-close"/>
</p:contextMenu>

3 - Then in my TreeBean, I exposed the following properties like this:

private static final String LEAF_TYPE  = "leaf";
private static final String ACTION_TYPE = "action";
private static final String VALUE_TYPE = "value";

public String getLEAF_TYPE(){
    return LEAF_TYPE;
}
public String getACTION_TYPE(){
    return ACTION_TYPE;
}
public String getVALUE_TYPE(){
    return VALUE_TYPE;
}

4 - And finally in TreeBean, I created the nodes like this:

TreeNode node = new DefaultTreeNode(ACTION_TYPE, data, parentNode); 
TreeNode node = new DefaultTreeNode(LEAF_TYPE, data, parentNode); 
TreeNode node = new DefaultTreeNode(VALUE_TYPE, data, parentNode);
like image 150
jrobertsz66 Avatar answered Apr 15 '26 17:04

jrobertsz66



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!