Using the isBranch() method to determine if a Tree item is a branch or leaf

The following example shows how you can use the isBranch() method to determine if a specific node in a Tree control is a branch (folder) or leaf (item).

Full code after the jump.

View MXML

<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2007/11/30/using-the-isbranch-method-to-determine-if-a-tree-item-is-a-branch-or-leaf/ -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
        layout="vertical"
        verticalAlign="middle"
        backgroundColor="white">

    <mx:Script>
        <![CDATA[
            import mx.events.ListEvent;

            private function tree_itemClick(evt:ListEvent):void {
                var itemIsBranch:Boolean = tree.dataDescriptor.isBranch(tree.selectedItem);
                lbl.text = itemIsBranch.toString();
            }

            private function tree_labelFunc(item:XML):String {
                var returnStr:String = item.@label;
                var itemIsBranch:Boolean = tree.dataDescriptor.isBranch(item);
                if (itemIsBranch) {
                    returnStr += " (BRANCH)";
                }
                return returnStr;
            }
        ]]>
    </mx:Script>

    <mx:XML id="xmlDP">
        <node>
            <node label="1.a" />
            <node label="1.b" />
            <node label="1.c">
                <node label="1.c.i" />
                <node label="1.c.ii" />
                <node label="1.c.iii" />
                <node label="1.c.iv" />
                <node label="1.c.v" />
            </node>
            <node label="1.d" />
            <node label="1.e">
                <node label="1.e.i" />
                <node label="1.e.ii" />
                <node label="1.e.iii">
                    <node label="1.e.iii.A" />
                </node>
                <node label="1.e.iv" />
            </node>
            <node label="1.f" />
        </node>
    </mx:XML>

    <mx:ApplicationControlBar dock="true">
        <mx:Form styleName="plain">
            <mx:FormItem label="isBranch():">
                <mx:Label id="lbl" fontWeight="bold" />
            </mx:FormItem>
        </mx:Form>
    </mx:ApplicationControlBar>

    <mx:Tree id="tree"
            dataProvider="{xmlDP}"
            labelFunction="tree_labelFunc"
            showRoot="false"
            width="50%"
            rowCount="6"
            itemClick="tree_itemClick(event);" />

</mx:Application>

View source is enabled in the following example.

7 thoughts on “Using the isBranch() method to determine if a Tree item is a branch or leaf

  1. Hi, I have a question. for example this is my XML:(sorry, I use hyphen instead of tag, because the tag didn’t show up)

    <root>
      <level1>
        <level2>
          <level3>
          </level3>
        </level2>
      </level1>
    </root>
    

    how do I hide level3 node in the tree? (having level3 node not showing up). or how do I make level2 a leaf instead of branch. that way when level2 is selected, level3 doesn’t show? is that possible? I’ve search all over the internet and I could not find any tutorial on this.

    Please help. Thank you very much.

  2. Hi, I have a question. for example this is my XML:

    how do I hide level3 node in the tree? (having level3 node not showing up). or how do I make level2 a leaf instead of branch. that way when level2 is selected, level3 doesn’t show? is that possible? I’ve search all over the internet and I could not find any tutorial on this.

    Please help. Thank you very much.

  3. darwin/carlodemarchis,

    Try adding an “isBranch” attribute in the level2 node and setting its value to false, as seen in the following example:

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
    
        <mx:XML id="xmlDP" xmlns="">
            <root label="root">
                <level1 label="level1">
                    <level2 label="level2" isBranch="false">
                        <level3 label="level3">
                        </level3>
                    </level2>
                </level1>
            </root>
        </mx:XML>
    
        <mx:Tree id="tree"
                dataProvider="{xmlDP}"
                labelField="@label"
                width="300" />
    
    </mx:Application>
    

    Peter

  4. I need Help Please
    If one of the leaf’s status is not Fine then The Root or Parent must show By any means that one one of My children/leaf is not Fine. How do I Do That?

    Preferable I would Like to Use ImageIcon.

Comments are closed.