Hello,

I'm new to flex but haev an object orientated background.

I'm trying to populate a MenuBar with data from a data structure I've
implemented.
This data structure revolves round a class I've called Category that
contains an ArrayCollection of child Categories. I've been attmpting
to bind the root category to the dataProvider of the MenuBar, while
providing an implementation of IMenuDataDescriber to provide access
to my Category class. As the online documentation on the
IMenuDataDescriber interface is currently incomplete I've done a
certain amount of guess work on what the functions are supposed to do.

When I run this the label for the root Category is displayed
correctly but when I click on it, no menu appears, although the label
becomes highlighted to indicate it is selected.

I placed breakpoints in each of the functions in my
IMenuDataDescriber implementation to see what was happening, and the
only function that is ever executed is isEnabled(node:Object):Boolean.

Any help with this would be greatly appreciated. Here's the code for
my IMenuDataDescriber implementation and the Category class it is
relavent to:

package components {
      import mx.controls.menuClasses.IMenuDataDescriptor;
      import mx.collections.*;
      import model.*;
      import events.*;

      public class CategoryMenuDataDescriptor implements
IMenuDataDescriptor
      {     
            public function isSelected(node:Object):Boolean
            {
                  return node==ModelLocator.getInstance
().selectedCategory;
            }

            public function CategoryMenuDataDescriptor() {
            }
           
            public function setEnabled(node:Object,
value:Boolean):void {
            }

            public function isBranch(node:Object,
model:Object=null):Boolean
            {
                  return !(node is Category);
            }

            public function getData(node:Object,
model:Object=null):Object {
                  return node as Category;
            }

            public function getGroupName(node:Object):String {
                  return (node as Category).label;
            }

            public function getChildren(node:Object,
model:Object=null):ICollectionView {
                  return (node as Category).getChildren();
            }

            public function getType(node:Object):String {
                  return null;
            }

            public function setSelected(node:Object,
value:Boolean):void {
            }
           
            public function isEnabled(node:Object):Boolean {
                  return true;
            }
      }
}

package model {
      import mx.collections.ArrayCollection;
     
      [Bindable]
      public class Category {
            private var name:String;
            private var childCategories:ArrayCollection;

            public function get label():String{ return name; }

            public function Category(n:String)
            {
                  name=n;
                  childCategories=new ArrayCollection();
            }
           
            public function addChildCategory(c:Category):void
            {
                  childCategories.addItem(c);
            }
            public function getChildren():ArrayCollection
            {
                  return childCategories;
            }
      }
}

N51






--
Flexcoders Mailing List
FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt
Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com




SPONSORED LINKS
Web site design development Computer software development Software design and development
Macromedia flex Software development best practice


YAHOO! GROUPS LINKS




Reply via email to