| <?xml version="1.0" encoding="utf-8"?> |
| <!-- |
| |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| --> |
| <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" horizontalAlign="center" verticalAlign="middle" styleName="downloadWindow" width="300" height="150" creationComplete="init()"> |
| <mx:Script> |
| <![CDATA[ |
| import mx.controls.Alert; |
| import mx.managers.PopUpManager; |
| |
| private var fileReference:FileReference; |
| private var localFileToSave:File; |
| private var fileToSave:File; |
| |
| private function init():void |
| { |
| fileReference = new FileReference(); |
| } |
| |
| public function download(samplePath:String, pluginPath:String, localRootPath:String):void |
| { |
| if(samplePath.toLowerCase().indexOf("http") == 0) |
| downloadHttp(samplePath); |
| else |
| downloadLocal(localRootPath + samplePath, pluginPath); |
| } |
| |
| private function downloadLocal(samplePath:String, path:String):void |
| { |
| var sampleFile:File = File.applicationDirectory.resolvePath(samplePath); |
| localFileToSave = File.documentsDirectory.resolvePath(path); |
| |
| fileToSave = new File(localFileToSave.nativePath + File.separator + sampleFile.name); |
| //fileToSave.resolvePath(path); |
| fileToSave.nativePath = path; |
| fileToSave.addEventListener(Event.SELECT, downloadLocal_directorySelect); |
| fileToSave.addEventListener(Event.CANCEL, downloadLocal_directorySelectCancel); |
| fileToSave.browseForSave("Save to project:"); |
| |
| } |
| |
| private function downloadLocal_directorySelect(event:Event):void |
| { |
| localFileToSave.addEventListener(ProgressEvent.PROGRESS, download_progressHandler); |
| localFileToSave.addEventListener(Event.COMPLETE, download_completeHandler); |
| localFileToSave.copyToAsync(fileToSave, true); |
| progressBar_download.setProgress(100,100); |
| } |
| private function downloadLocal_directorySelectCancel(event:Event):void |
| { |
| PopUpManager.removePopUp(this); |
| } |
| private function downloadHttp(path:String):void |
| { |
| var request:URLRequest = new URLRequest(path); |
| fileReference = new FileReference(); |
| fileReference.addEventListener(Event.OPEN, download_openHandler); |
| fileReference.addEventListener(ProgressEvent.PROGRESS, download_progressHandler); |
| fileReference.addEventListener(Event.COMPLETE, download_completeHandler); |
| |
| try |
| { |
| fileReference.download(request); |
| } |
| catch (error:Error) |
| { |
| Alert.show(error.message, "Download Error"); |
| } |
| } |
| |
| private function download_openHandler(event:Event):void |
| { |
| progressBar_download.label = "DOWNLOADING %3%%"; |
| button_cancel.visible = true; |
| button_close.visible = false; |
| } |
| |
| private function download_progressHandler(event:ProgressEvent):void |
| { |
| progressBar_download.setProgress(event.bytesLoaded, event.bytesTotal); |
| } |
| |
| private function download_cancel(event:MouseEvent):void |
| { |
| fileReference.cancel(); |
| progressBar_download.label = "CANCELLED"; |
| button_close.visible = true; |
| button_cancel.visible = false; |
| |
| PopUpManager.removePopUp(this); |
| } |
| |
| private function download_completeHandler(event:Event):void |
| { |
| progressBar_download.label = "DOWNLOAD COMPLETE"; |
| button_close.visible = true; |
| button_cancel.visible = false; |
| } |
| |
| ]]> |
| </mx:Script> |
| |
| <mx:ProgressBar id="progressBar_download" width="90%" mode="manual" label="DOWNLOADING..." /> |
| |
| <mx:Canvas> |
| <mx:Button id="button_cancel" label="Cancel" visible="false" click="download_cancel(event)" horizontalCenter="0" /> |
| <mx:Button id="button_close" label="Close" click="{PopUpManager.removePopUp(this)}" horizontalCenter="0"/> |
| </mx:Canvas> |
| |
| </mx:TitleWindow> |