diff --git a/custom-03d3-lists/ListApp.as b/custom-03d3-lists/ListApp.as index d4cc12b..4a183c0 100644 --- a/custom-03d3-lists/ListApp.as +++ b/custom-03d3-lists/ListApp.as @@ -1,12 +1,16 @@ package { - import mx.core.Application; - + import flash.events.MouseEvent; import mx.collections.ArrayCollection; - import mx.rpc.events.ResultEvent; + import mx.controls.Alert; + import mx.controls.Button; + import mx.controls.List; + import mx.controls.Text; + import mx.core.Application; import mx.events.ListEvent; + import mx.rpc.events.FaultEvent; + import mx.rpc.events.ResultEvent; import mx.rpc.http.HTTPService; - import mx.controls.Text; public class ListApp extends Application { @@ -14,19 +18,65 @@ package public var employeeList:ArrayCollection = new ArrayCollection(); public var employeesService:HTTPService; public var textMessage:Text; + public var mylist:List; + public var mybutton:Button; + + public static const employeesServiceUrl:String = + "http://localhost:18080/employees.xml"; - function ListApp() + public function appComplete():void { + _initButtonControl(); + _initListControl(); + _initEmployeesService(); + trace(this + " initialized!"); } - public function requestEmployees():void + private function _initButtonControl():void { + trace(this + "._initButtonControl()"); + mybutton.addEventListener(MouseEvent.CLICK, requestEmployees); + } + + private function _initListControl():void + { + trace(this + "._initListControl()"); + mylist.addEventListener(ListEvent.ITEM_CLICK, showMessage); + trace(this + ".mylist.dataProvider = " + mylist.dataProvider); + } + + private function _initEmployeesService():void + { + trace(this + "._initEmployeesService()"); + employeesService = new HTTPService(); + employeesService.url = employeesServiceUrl; + employeesService.method = "GET"; + employeesService.resultFormat = "object"; + employeesService.addEventListener("result", resultHandler); + employeesService.addEventListener("fault", faultHandler); + } + + public function requestEmployees(event:Event):void + { + trace(this + ".requestEmployees(" + event + ")"); employeesService.send(); } public function resultHandler(event:ResultEvent):void { + trace(this + ".resultHandler(" + event + ")"); + trace(this + " event.result = " + event.result); + trace(this + " event.headers = " + event.headers); + trace(this + " event.statusCode = " + event.statusCode); + trace(this + " event.result.employees = " + event.result.employees); employeeList = event.result.employees.employee as ArrayCollection; + // mylist.dataProvider = employeeList; + trace(this + ".employeeList = " + employeeList); + } + + public function faultHandler(event:FaultEvent):void { + var faultstring:String = event.fault.faultString; + Alert.show(faultstring); } public function showMessage(event:Event):void diff --git a/custom-03d3-lists/ListControl.mxml b/custom-03d3-lists/ListControl.mxml index c7028e0..3d9d8a2 100644 --- a/custom-03d3-lists/ListControl.mxml +++ b/custom-03d3-lists/ListControl.mxml @@ -1,26 +1,10 @@ - - - - - - - - - - + + + + + diff --git a/custom-03d3-lists/employees.py b/custom-03d3-lists/employees.py new file mode 100644 index 0000000..88a7292 --- /dev/null +++ b/custom-03d3-lists/employees.py @@ -0,0 +1,66 @@ +import sys +from wsgiref.simple_server import make_server + + +EMPLOYEES_XML = """\ + + + Bob + Costas + + + Bob + Sagat + + + Harbor + Oaks + + + Oak + Barrel + + + Sag + Harbor + + +""" +EMPLOYEES_XML_LEN = str(len(EMPLOYEES_XML)) +CROSSDOMAIN_XML = """\ + + + +""" +CROSSDOMAIN_XML_LEN = str(len(CROSSDOMAIN_XML)) + + +def main(sysargs=sys.argv[:]): + server = make_server('0.0.0.0', 18080, employees_app) + server.serve_forever() + return 0 + + +def employees_app(environ, start_response): + path_info = environ.get('PATH_INFO', '/').strip(' /') + if path_info == 'employees.xml': + start_response('200 OK', [ + ('content-type', 'text/xml'), + ('content-length', EMPLOYEES_XML_LEN), + ]) + return [EMPLOYEES_XML] + elif path_info == 'crossdomain.xml': + start_response('200 OK', [ + ('content-type', 'text/xml'), + ('content-length', CROSSDOMAIN_XML_LEN), + ]) + return [CROSSDOMAIN_XML] + else: + start_response('404 Not Found', [('content-type', 'text/plain')]) + return ['sorry charlie'] + + +if __name__ == '__main__': + sys.exit(main()) + +# vim:filetype=python diff --git a/custom-03d3-lists/listapp.css b/custom-03d3-lists/listapp.css new file mode 100644 index 0000000..5583ef8 --- /dev/null +++ b/custom-03d3-lists/listapp.css @@ -0,0 +1,16 @@ +ListApp { + backgroundColor: #ffffff; + backgroundAlpha: 0; + horizontalAlign: left; + verticalGap: 15; + horizontalGap: 15; +} + +.basic-list { + width: 200; + height: 200; +} + +.basic-text { + paddingTop: 20; +} diff --git a/mktargets.py b/mktargets.py index b10b505..a057ea6 100755 --- a/mktargets.py +++ b/mktargets.py @@ -29,6 +29,7 @@ class TargetMaker(object): pathjoin(HERE, '[0-9]*-*', '*.mxml'), pathjoin(HERE, 'custom-*', '*.mxml'), ) + _sibling_fileexts = ('.as', '.css') def __init__(self, outstream=sys.stdout): self.outstream = outstream @@ -45,10 +46,15 @@ class TargetMaker(object): as_swf = re.sub('(.*)\.mxml$', '\\1.swf', rel_mxml) self.targets[as_swf] = set([rel_mxml]) - as3_pattern = re.sub('(.*)/(.*)\.mxml$', '\\1/*.as', rel_mxml) - for local_as3 in glob.glob(as3_pattern): - rel_as3 = os.path.relpath(local_as3, HERE) - self.targets[as_swf].add(rel_as3) + self._add_deps_from_sibling_file_extensions(as_swf, rel_mxml) + + def _add_deps_from_sibling_file_extensions(self, as_swf, rel_mxml): + for fileext in self._sibling_fileexts: + sibling_glob = re.sub('(.*)/(.*)\.mxml$', '\\1/*' + fileext, + rel_mxml) + for sibling in glob.glob(sibling_glob): + rel_sibling = os.path.relpath(sibling, HERE) + self.targets[as_swf].add(rel_sibling) def _write_out_targets(self): print(AUTOGEN_WARNING, file=self.outstream) diff --git a/targets.mk b/targets.mk index 7b7b881..6e241c9 100644 --- a/targets.mk +++ b/targets.mk @@ -143,7 +143,7 @@ custom-03d2-item-renderers/WeatherDisplay.swf: custom-03d2-item-renderers/Weathe $(MXMLC) custom-03d2-item-renderers/WeatherDisplay.mxml -warnings -l+=custom-03d2-item-renderers -output custom-03d2-item-renderers/WeatherDisplay.swf -custom-03d3-lists/ListControl.swf: custom-03d3-lists/ListControl.mxml custom-03d3-lists/ListApp.as +custom-03d3-lists/ListControl.swf: custom-03d3-lists/ListControl.mxml custom-03d3-lists/listapp.css custom-03d3-lists/ListApp.as $(MXMLC) custom-03d3-lists/ListControl.mxml -warnings -l+=custom-03d3-lists -output custom-03d3-lists/ListControl.swf