I would like to know how I pass a string (topicTitleParameter) in to
the extended TreeItemRenderer class below.
package samples
{
import mx.controls.treeClasses.*;
import mx.collections.*;
//Item renderer:
public class MyTreeItemRenderer extends TreeItemRenderer {
public var topicTitle:String;
// Define the constructor.
public function MyTreeItemRenderer
(topicTitleParameter:String) {
super();
this.topicTitle = topicTitleParameter;
}
// Override the set method for the data property
// to set the font color and style of each node.
override public function set data(value:Object):void {
super.data = value;
if(TreeListData(super.listData).label ==
this.topicTitle ) {
setStyle("color", 0xff0000);
setStyle("fontWeight", 'bold');
}
else {
setStyle("color", 0x000000);
setStyle("fontWeight", 'normal');
}
}
// Override the updateDisplayList() method
// to set the text for each tree node.
override protected function updateDisplayList
(unscaledWidth:Number,
unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth,
unscaledHeight);
if(super.data) {
if(TreeListData
(super.listData).hasChildren) {
var tmp:XMLList = new XMLList
(TreeListData(super.listData).item);
var myStr:int = tmp
[0].children().length();
super.label.text =
TreeListData(super.listData).label + "(" + myStr + ")";
}
}
}
}
}
I tried the following:
<mx:Tree id="compBalanced" dataProvider="{xlcBalanced}"
labelFunction="treeLabel"
labelField="@label" width="400" height="500"
itemRenderer="samples.MyTreeItemRenderer('GridRow')" />
and get the following error message:
Initializer for 'itemRenderer': cannot parse value of type
mx.core.IFactory from text 'samples.MyTreeItemRenderer('GridRow')'