tmp - describeType stuff
♥0 |
Line 61 |
Modified 2009-05-05 06:49:48 |
MIT License
archived:2017-03-30 01:50:32
ActionScript3 source code
/**
* Copyright yonatan ( http://wonderfl.net/user/yonatan )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/yndZ
*/
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()">
<mx:Script>
<![CDATA[
import flash.utils.*;
import mx.containers.*;
import mx.controls.*;
import mx.core.*;
private function fullScreen():void{
stage.displayState = ( stage.displayState == "normal" ? "fullScreen" : "normal" );
}
private function init():void {
addChild( explorer( this ) );
}
private function defaultObjectView( obj:Object ):UIComponent {
var ret:HBox = new HBox;
var btn:Button = new Button();
var label:Label = new Label;
label.percentWidth = ret.percentWidth = 100;
btn.label = "Explore";
label.text = String(obj);
ret.addChild( btn );
ret.addChild( label );
return ret;
}
private function explorer( obj:Object ):UIComponent {
var ret:Panel = new Panel;
var desc:XML = describeType( obj );
var acc:Accordion = new Accordion;
acc.percentWidth = 100;
var cvs:UIComponent;
var accContent:Object = new Object;
for each( var el:XML in desc.* ) {
if( !accContent[el.localName()] ) {
accContent[el.localName()] = [];
}
accContent[el.localName()].push( el );
}
for( var tab:String in accContent ) {
cvs = new VBox;
cvs.percentWidth = 100;
//cvs.label = tab;
var l:Label;
accContent[tab].forEach( function( item:Object, ...rest ):void {
if( tab=="variable" ) {
cvs.addChild( defaultObjectView( obj[String(item.@name)] ) );
}
l = new Label;
l.text = item.toXMLString();
cvs.addChild( l );
} );
acc.addChild( cvs );
}
ret.addChild( acc );
//ret.percentHeight = ret.percentWidth = 100;
ret.title = String(desc.@name);
return ret;
}
]]>
</mx:Script>
<mx:Button right="20" label="fullscreen"
click="fullScreen()" />
</mx:Application>