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.

 
Tagged with:
 
About The Author

Peter deHaan

Peter deHaan currently works for Adobe on the Flex SDK QA team. While not working on Flex, Flash, and ColdFusion applications, Peter enjoys making up bios and writing in 3rd person. Peter's rarely updated blog can be found at blogs.adobe.com/pdehaan/, actionscriptexamples.com, airexamples.com, and coldfusionexamples.com.

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

  1. darwin says:

    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. darwin says:

    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. Please someone reply to DARWIN… I have the same urgent question!!!!

  4. Peter deHaan says:

    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

  5. ideesh says:

    how can i make one branch is opened at a time, if i opened one branch other branches close

  6. Mosima says:

    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.

  7. Jan says:

    thanks. Exactly what I was looking for.

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Anti-Spam Protection by WP-SpamFree