Skip to content

Instantly share code, notes, and snippets.

@ThomasBurleson
Created March 28, 2011 15:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save ThomasBurleson/890676 to your computer and use it in GitHub Desktop.
Save ThomasBurleson/890676 to your computer and use it in GitHub Desktop.
BabelFx - Use of XML to dynamically build MenuBar solution.
<?xml version="1.0" encoding="utf-8"?>
<mx:MenuBar
labelField="@label"
dataProvider="{ _menuDataProvider.menuitem }"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:mx="library://ns.adobe.com/flex/mx" width="400" height="300">
<fx:Script>
<![CDATA[
public function set main(items:Array) :void { updateMenu( _menuDataProvider.menuitem, items); }
public function set form(items:Array) :void { updateMenu( _menuDataProvider.menuitem[0].menuitem, items); }
public function set edit(items:Array) :void { updateMenu( _menuDataProvider.menuitem[2].menuitem, items); }
/**
* Update XML list of menu items, then force databinding updates
* so the menu renders with latest data changes.
*
*/
private function updateMenu(target:XMLList, items:Array):void {
for (var j:uint=0; j<items.length; j++) {
target[j].@label = items[j] as String;
}
executeBindings(true);
}
[Bindable]
private var _menuDataProvider : XML =
<menus>
<menuitem label="Form">
<menuitem label="New Form"/>
<menuitem label="Open Form"/>
<menuitem label="Save As"/>
<menuitem label="Delete Form"/>
</menuitem>
<menuitem type="separator"/>
<menuitem label="Edit control" >
<menuitem label="Edit selected control"/>
<menuitem label="Delete selected controls"/>
<menuitem label="Select all"/>
<menuitem label="Clear selection"/>
<menuitem label="Move selected controls to tab"/>
</menuitem>
<menuitem type="separator"/>
<menuitem label="Help"/>
</menus>;
]]>
</fx:Script>
</mx:MenuBar>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment