This is really from one struggling newbie to other struggling newbies.
This code is really just code from here:
http://kmossman.blogspot.com/2007/03/blog-post.html
that I adjusted to read from a xml file via HTTPService, using the xml
file that was used in this code:
http://blog.flexexamples.com/2007/11/29/opening-nodes-in-a-flex-tree-con
trol-using-the-expanditem-method/
All the code and xml required to do a simple tree in a combo box example
(pulling in external xml for the tree) is below. Just take the xml and
pasted it into a file named mlb.xml. Past the main code into your main
mxml file and past the component code into a component named
TreeComboBox.mxml and you're done.
brad
//******************************
Main Code
//******************
<?xml version="1.0"?>
<mx:Application xmlns:local="*"
xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="loadXML()">
<mx:Script>
<![CDATA[
import mx.collections.XMLListCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.mxml.HTTPService;
public var xmlService:HTTPService = new HTTPService();
[Bindable]
public var xmlResult:XML;
[Bindable]
public var xmlList:XMLList;
[Bindable]
public var xmlTeams:XMLListCollection;
public function loadXML():void
{
xmlService.url = "mlb.xml"
xmlService.resultFormat = "e4x";
xmlService.addEventListener(ResultEvent.RESULT, resultHandler);
xmlService.send();
}
public function resultHandler(event:ResultEvent):void
{
xmlResult = XML(event.result);
//enable if you want to see raw xml on screen instead of in trace
// lastResultValue.text = xmlResult.toXMLString();
trace(xmlResult.toXMLString());
xmlList = xmlResult.league;
xmlTeams = new XMLListCollection(xmlList);
}
]]>
</mx:Script>
<!-- enable if you want to see raw xml on screen -->
<!-- <mx:TextArea x="10" y="244" width="374" height="102"
id="lastResultValue"/> -->
<mx:TextInput text="[EMAIL PROTECTED]"/>
<local:TreeComboBox
width="300"
id="combo"
labelField="@label" dataProvider="{xmlTeams}"
</mx:Application>
//**********************************************************************
*****************************
Component Code
//*******************
<?xml version="1.0" encoding="utf-8"?>
<mx:ComboBox xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.events.FlexEvent;
[Bindable]
private var _label:String;
[Bindable]
public var treeSelectedItem:Object;
public function updateLabel(event:*):void
{
_label = event.currentTarget.selectedItem[this.labelField];
treeSelectedItem = event.currentTarget.selectedItem;
}
override protected function updateDisplayList(unscaledWidth:Number,
unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if(dropdown && _label != null){
text = _label;
}
}
]]>
</mx:Script>
<mx:dropdownFactory>
<mx:Component>
<mx:Tree change="outerDocument.updateLabel(event)" height="500"
width="500" />
</mx:Component>
</mx:dropdownFactory>
</mx:ComboBox>
//**************************** End of Component Code
**********************************
//*****************Begin XML File************************
<?xml version="1.0" encoding="utf-8"?>
<root>
<league label="American League">
<division label="West">
<team label="Los Angeles" />
<team label="Seattle" />
<team label="Oakland" />
<team label="Texas" />
</division>
<division label="Central">
<team label="Cleveland" />
<team label="Detroit" />
<team label="Minnesota" />
<team label="Chicago" />
<team label="Kansas City" />
</division>
<division label="East">
<team label="Boston" />
<team label="New York" />
<team label="Toronto" />
<team label="Baltimore" />
<team label="Tampa Bay" />
</division>
</league>
</root>
//*******************End XML File *************************