<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" horizontalAlign="center" verticalAlign="middle" applicationComplete="onAppComplete();" invoke="onAppInvoke(event);" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import mx.binding.utils.ChangeWatcher; import mx.binding.utils.BindingUtils; import mx.events.FlexEvent; private var _invokedFile:File; private var _fileWindow:FileDisplayWindow; private var _filesBinding:ChangeWatcher; private function onAppComplete():void { _filesBinding = BindingUtils.bindSetter( invalidateFiles, this, 'invokedFile', true ); } private function onAppInvoke( evt:InvokeEvent ):void { var items:Array = evt.arguments; if( items.length > 0 ) { invokedFile = new File( evt.arguments[0] ); } } private function openFileWindow():void { _fileWindow = new FileDisplayWindow(); _fileWindow.addEventListener( FlexEvent.CREATION_COMPLETE, applyFileToWindow ); _fileWindow.open(); } private function applyFileToWindow( evt:FlexEvent = null ):void { _fileWindow.file = _invokedFile; } private function invalidateFiles( arg:* = null ):void { if( _invokedFile == null ) return; if( _fileWindow == null || _fileWindow.closed ) openFileWindow(); else applyFileToWindow(); } [Bindable] public function get invokedFile():File { return _invokedFile; } public function set invokedFile( arr:File ):void { _invokedFile = arr; } ]]> </mx:Script> <mx:Label text="Welcome" /> </mx:WindowedApplication>