Hi,
Is there a way we can use the iconFunction on tree and specify the
Icon at runtime..
Here is the Code i am trying to use..
[CODE]
private function getNodeIcon(nodeObject:Object):Class{
var nodeIcon:Class = null;
var node:Node = null;
var iconURL =
"http://localhost/myapp/icons/folder_yellow.png";
trace("IconURL (1) =["+iconURL+"]");
if(nodeObject!=null){
node =Node (nodeObject);
trace("Node ="+node);
nodeIcon =
IconUtility.getClass(collectionTree, iconURL, 12, 12);
if(node.iconURL!=null &&
node.iconURL!="null"){
trace("Icon for Node
="+node.iconURL);
iconURL
="http://localhost/myapp/icons/"+node.iconURL;
trace("IconURL
(2)=["+iconURL+"]");
nodeIcon =
IconUtility.getClass(collectionTree, iconURL, 12, 12);
}
}
trace("Returning the Class ="+nodeIcon);
return nodeIcon;
}
[/CODE]
And in the MXML i have the following..
[CODE]
<mx:Tree id="collectionTree" labelFunction="treeLabel"
dataProvider="{domainArrayCollection}"
showRoot="false" width="100%"
height="100%"
change="getNodeInfo(event)"
iconFunction="getNodeIcon">
</mx:Tree>
[/CODE]
I am not sure what went wrong i am setting the icon propery in the
Node Object and i can get these icons when i type the URL in the
browser but in the tree i don't see any icons..
I am using the Utility Class that Ben Stucki wrote (
http://blog.benstucki.net/?p=42)
Thanks
Mars
--- In [email protected], "bodie0293" <[EMAIL PROTECTED]> wrote:
>
>
> This may not be the most efficient method, but this is how I
> populate a dynamic tree and assign icons.
>
> Preliminaries:
>
> The Tree has 3 levels: User, Project, and Hours. The tree
> entries are represented as ActionScript classes (not shown).
> These classes have a superclass of BaseTreeEntry that contains
> two fields: label, and children. Each tree level has a different
> icon. Icons are embedded.
>
> In a real application the data model would have been obtained
> from the server. I have represented these here as 3 <mx:Model>
> components for simplicity.
>
> Here is the example.
>
> <?xml version="1.0" encoding="utf-8"?>
> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
> layout="absolute"
> creationComplete="init()" >
>
> <mx:Script>
> <![CDATA[
> import tree.BaseTreeEntry;
> import tree.UserTreeEntry;
> import tree.ProjectTreeEntry;
> import tree.HoursTreeEntry;
>
> import mx.collections.ArrayCollection;
>
> [Bindable]
> public var selectedNode : BaseTreeEntry;
>
> [Bindable]
> [Embed(source="/images/person.jpg")]
> public var iconPerson:Class;
> [Bindable]
> [Embed(source="/images/project.jpg")]
> public var iconProject:Class;
> [Bindable]
> [Embed(source="/images/hours.jpg")]
> public var iconHours:Class;
>
> [Bindable]
> public var treeNodes : ArrayCollection = new
> ArrayCollection();
>
> // Event handler for the Tree control change event.
> public function treeChanged(event:Event):void {
> selectedNode=Tree(event.target).selectedItem as
> BaseTreeEntry;
> }
>
> public function init() : void {
> for (var i : int = 0; i < userDataModel.User.length;
> i++) {
> var userVO : Object = userDataModel.User[i];
> var userTreeEntry : UserTreeEntry = new
> UserTreeEntry();
> userTreeEntry.label = userVO.LastName + ", " +
> userVO.FirstName;
> userTreeID.setItemIcon(userTreeEntry, iconPerson,
> null);
> treeNodes.addItem(userTreeEntry);
> for (var j : int = 0; j <
> projectDataModel.Project.length; j++) {
> var projectVO : Object =
> projectDataModel.Project[j];
> var projectTreeEntry : ProjectTreeEntry = new
> ProjectTreeEntry();
> projectTreeEntry.label = projectVO.Name;
> userTreeID.setItemIcon(projectTreeEntry,
> iconProject, null);
>
> userTreeEntry.children.addItem(projectTreeEntry);
> for (var k : int = 0; k <
> hoursDataModel.Hours.length; k++) {
> var hoursVO : Object =
> hoursDataModel.Hours[k];
> if (hoursVO.UserID == userVO.UserID &&
> hoursVO.ProjectID ==
> projectVO.ProjectID) {
> var hoursTreeEntry : HoursTreeEntry =
> new HoursTreeEntry();
> hoursTreeEntry.label = "Week: " +
> hoursVO.WeekID;
> userTreeID.setItemIcon(hoursTreeEntry,
> iconHours, null);
>
> projectTreeEntry.children.addItem(hoursTreeEntry);
> }
> }
> }
> }
> }
>
> ]]>
> </mx:Script>
>
> <mx:Model id="userDataModel" >
> <root>
> <User>
> <UserID>1</UserID>
> <UserName>caradmin</UserName>
> <LastName>Vanderlay</LastName>
> <FirstName>Art</FirstName>
> <MiddleInit>J</MiddleInit>
> <Title>CAR Administrator</Title>
> <HireDate>10/12/2004</HireDate>
> <TermDate></TermDate>
> </User>
> <User>
> <UserID>2</UserID>
> <UserName>joe</UserName>
> <LastName>Estudiente</LastName>
> <FirstName>Joe</FirstName>
> <MiddleInit>L</MiddleInit>
> <Title>CAR User</Title>
> <HireDate>01/13/1992</HireDate>
> <TermDate>04/20/2007</TermDate>
> </User>
> </root>
> </mx:Model>
>
> <mx:Model id="projectDataModel" >
> <root>
> <Project>
> <ProjectID>1001</ProjectID>
> <Name>Project Number 1</Name>
> <Description>Desc. for Project 1</Description>
> </Project>
> <Project>
> <ProjectID>1002</ProjectID>
> <Name>Project Number 2</Name>
> <Description>Desc. for Project 2</Description>
> </Project>
> </root>
> </mx:Model>
>
> <mx:Model id="hoursDataModel" >
> <root>
> <Hours>
>
> <ProjectPersonWeekHoursID>5001</ProjectPersonWeekHoursID>
> <ProjectID>1001</ProjectID>
> <UserID>1</UserID>
> <WeekID>87</WeekID>
> <Description>blah blah</Description>
> <Mon>8</Mon>
> <Tue>8</Tue>
> <Wed>8</Wed>
> <Thu>8</Thu>
> <Fri>8</Fri>
> <Sat>0</Sat>
> <Sun>0</Sun>
> </Hours>
> <Hours>
>
> <ProjectPersonWeekHoursID>5002</ProjectPersonWeekHoursID>
> <ProjectID>1002</ProjectID>
> <UserID>1</UserID>
> <WeekID>88</WeekID>
> <Mon>8</Mon>
> <Tue>8</Tue>
> <Wed>8</Wed>
> <Thu>8</Thu>
> <Fri>8</Fri>
> <Sat>0</Sat>
> <Sun>0</Sun>
> </Hours>
> </root>
> </mx:Model>
>
> <mx:HDividedBox width="100%" height="100%">
>
> <mx:Tree id="userTreeID"
> dataProvider="{treeNodes}"
> width="30%" height="100%"
> change="treeChanged(event)"
> >
> </mx:Tree>
>
> <mx:TextArea height="100%" width="70%"
> text="Selected Item: {selectedNode.label}"/>
> </mx:HDividedBox>
>
> </mx:Application>
>
> Paul Ranauro
> [EMAIL PROTECTED]
>