<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="*" pageTitle="Flex2 & AMFPHP" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.managers.CursorManager;
import mx.events.TreeEvent;
private var conn:NetConnection;
[Bindable]
private var treeData:XML;
private var currItem:XML;
/**
* Initialize the connection using NetConnection
* and assign the default dataProvider
* to the Tree component
*/
private function init():void
{
conn = new NetConnection();
conn.objectEncoding = ObjectEncoding.AMF0;
conn.connect("http://alessandro-pc/amfphp/gateway.php");
treeData =
<node label="root" data="" loaded="false">
<node label="" data="" loaded="false" />
</node>;
}
/**
* Responder for all the tree events
*/
private function treeHandler(e:Event):void
{
if(e.type == TreeEvent.ITEM_OPENING)
{
var evt:TreeEvent = TreeEvent(e);
currItem = XML(evt.item);
if(evt.item.@loaded == "false")
{
var resp:Responder = new Responder(getList_result, onFault);
evt.item.node.@label = "Loading...";
conn.call("org.sepy.test.FolderBrowser.getList", resp, String(evt.item.@data));
CursorManager.setBusyCursor()
}
}
}
/**
* getList remote server method responder
*/
private function getList_result(e:*):void
{
CursorManager.removeBusyCursor();
if(e is Array)
{
if(e.length)
{
delete currItem.node[0];
var node:XML;
for each(var item:Object in e)
{
currItem.@loaded = "true";
node = XML("<node label='"+item.name+"' loaded='false' data='"+currItem.@data+"/"+item.name+"'></node>");
if(item.is_dir)
{
node.node = <node label="" data="" loaded="false"></node>
}
currItem.node += node
}
} else {
delete currItem.node[0];
currItem.@loaded = "true";
tree.setItemIcon(currItem, tree.getStyle("folderOpenIcon"), tree.getStyle("folderClosedIcon"));
}
}
setTimeout(tree.validateNow, 100)
}
/**
* Default error handler for remote server calls
*/
private function onFault(e:*):void
{
for each(var s:String in e) trace(s, e[s]);
}
]]>
</mx:Script>
<mx:Panel x="10" y="10" width="617" height="548" layout="absolute" title="Folder Browser..." paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:VBox x="0" y="0" width="100%" height="100%" horizontalAlign="right" paddingBottom="5" paddingLeft="5" paddingRight="5" paddingTop="5">
<mx:Text width="100%" height="49" fontSize="12">
<mx:htmlText>
<![CDATA[Browse directories using <u><b><a href='http://www.amfphp.org'>AMFPHP</a></b></u>. Evey time you open a folder leaf amfphp will return the folder contents to flash ]]>
</mx:htmlText>
</mx:Text>
<mx:Tree
width="100%"
height="100%"
id="tree"
labelField="@label"
dataProvider="{treeData}"
itemOpening="treeHandler(event)"
disclosureOpenIcon="@Embed(source='/assets/assets.swf#Tree_disclosureOpenIcon')"
disclosureClosedIcon="@Embed(source='/assets/assets.swf#Tree_disclosureClosedIcon')"
openDuration="0"
></mx:Tree>
</mx:VBox>
</mx:Panel>
</mx:Application>