<?xml version="1.0" encoding="utf-8"?> <mx:WindowedApplication width="531" height="403" backgroundColor="#6075C4" layout="absolute" title="Silly File Listing" viewSourceURL="srcview/index.html" xmlns:local="*" xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:Script> <![CDATA[ private var fileSystemWorker:IFileSystemSearcher; private function buttonClickHandler():void { if (!currentState || currentState == "") searchFiles(); else cancelSearch(); } private function searchFiles():void { addEventListener(Event.ENTER_FRAME, enterFrameHandler); currentState = "processing"; pathsFound = ""; fileSystemWorker = new FileSystemSearcher(); fileSystemWorker.addEventListener(FileSystemSearcherEvent.FILES_READY, filesReadyHandler); fileSystemWorker.addEventListener(FileSystemSearcherEvent.COMPLETE, filesCompleteHandler); fileSystemWorker.setup(File.userDirectory.nativePath, fileSearchTextInput.text); fileSystemWorker.go(); } protected function enterFrameHandler(event:Event):void { if (!fileSystemWorker) { removeEventListener(Event.ENTER_FRAME, enterFrameHandler); return; } fileSystemWorker.go(); } [Bindable]private var pathsFound:String = ""; private function filesReadyHandler(event:FileSystemSearcherEvent):void { for (var i:int = 0; i < event.files.length; i++) { pathsFound += File(event.files[i]).nativePath + "\n"; } } private function filesCompleteHandler(event:FileSystemSearcherEvent):void { closeSearch(); } private function closeSearch():void { currentState = ""; fileSystemWorker.removeEventListener(FileSystemSearcherEvent.FILES_READY, filesReadyHandler); fileSystemWorker.removeEventListener(FileSystemSearcherEvent.COMPLETE, filesCompleteHandler); fileSystemWorker.dispose(); fileSystemWorker = null; } private function cancelSearch():void { closeSearch(); } private function scrollPathFoundTextArea():void { pathsFoundTextArea.verticalScrollPosition = pathsFoundTextArea.maxVerticalScrollPosition; } ]]> </mx:Script> <mx:states> <mx:State name="processing"> <mx:SetProperty target="{fileSearchTextInput}" name="enabled" value="false" /> <mx:SetProperty target="{searchButton}" name="label" value="Cancel" /> <mx:SetProperty target="{progressBar}" name="includeInLayout" value="true" /> <mx:SetProperty target="{progressBar}" name="visible" value="true" /> <mx:SetProperty target="{pathsFoundTextArea}" name="enabled" value="false" /> </mx:State> </mx:states> <mx:TextInput id="fileSearchTextInput" x="10" y="10" width="245" disabledColor="#000000" enter="searchFiles()" /> <mx:Button id="searchButton" x="265" y="10" click="buttonClickHandler()" label="Search" /> <mx:TextArea id="pathsFoundTextArea" top="40" left="10" bottom="10" right="10" backgroundDisabledColor="#ffffff" disabledColor="#000000" text="{pathsFound}" valueCommit="scrollPathFoundTextArea()" /> <mx:ProgressBar id="progressBar" left="10" right="10" verticalCenter="0" includeInLayout="false" indeterminate="true" label="Fetching files" labelPlacement="center" trackHeight="20" visible="false" /> </mx:WindowedApplication>