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

by Peter deHaan on November 30, 2007

in Tree

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 comments… read them below or add one }

1 darwin January 24, 2008 at 10:11 pm

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.

Reply

2 darwin January 24, 2008 at 10:08 pm

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.

Reply

3 carlodemarchis January 22, 2009 at 2:01 pm

Please someone reply to DARWIN… I have the same urgent question!!!!

Reply

4 Peter deHaan January 23, 2009 at 7:39 am

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

Reply

5 ideesh February 15, 2009 at 8:55 am

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

Reply

6 Mosima April 29, 2009 at 2:03 am

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.

Reply

7 Jan June 4, 2009 at 5:48 am

thanks. Exactly what I was looking for.

Reply

Leave a Comment

Sorry, this blog is terrible at eating HTML comments.
If you're pasting any HTML/XML/MXML code, you need to convert your < characters to &lt; and your > characters to &gt; .

You can 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

Previous post:

Next post: