Hide dev builds unless you right-click and ask to see them.  Also add download 
caching to right-click menu


Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/0c1cdf68
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/0c1cdf68
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/0c1cdf68

Branch: refs/heads/develop
Commit: 0c1cdf683cf194d843d5b867e0347e01bcc2a353
Parents: 1276a05
Author: Alex Harui <[email protected]>
Authored: Wed Feb 12 14:44:28 2014 -0800
Committer: Alex Harui <[email protected]>
Committed: Wed Feb 12 14:44:48 2014 -0800

----------------------------------------------------------------------
 installer/src/InstallApacheFlex.mxml            | 314 +++++++++++++------
 .../src/installer/sdk-installer-config-4.0.xml  |  12 +-
 2 files changed, 230 insertions(+), 96 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c1cdf68/installer/src/InstallApacheFlex.mxml
----------------------------------------------------------------------
diff --git a/installer/src/InstallApacheFlex.mxml 
b/installer/src/InstallApacheFlex.mxml
index ab17dcc..b63d80e 100644
--- a/installer/src/InstallApacheFlex.mxml
+++ b/installer/src/InstallApacheFlex.mxml
@@ -47,6 +47,56 @@ variables are not required because the locations of these 
pieces are known.
        <fx:Style source="assets/styles/ApacheFlexToolsStyle.css"/>
        <fx:Style source="assets/styles/InstallApacheFlexStyle.css"/> 
        
+    <fx:Declarations>
+        <fx:Component className="CacheDialog" >
+            <s:TitleWindow title="Download Cache Configuration" width="400" 
height="300">
+                <fx:Script>
+                    <![CDATA[
+                        import mx.managers.PopUpManager;
+                        
+                        private function browseFolders():void
+                        {
+                            var file:File;
+                            if (folder.text.length > 0)
+                                file = 
File.applicationStorageDirectory.resolvePath(folder.text);
+                            else
+                                file = File.applicationStorageDirectory;
+                            file.browseForDirectory("Download Cache Folder");
+                            file.addEventListener(Event.SELECT, 
folderSelected);
+                        }
+                        
+                        private function folderSelected(event:Event):void
+                        {
+                            folder.text = event.target.nativePath;
+                        }
+                        
+                        private function closeUp():void
+                        {
+                            PopUpManager.removePopUp(this);
+                        }
+                        
+                        private function updateCache():void
+                        {
+                            dispatchEvent(new Event(Event.COMPLETE));
+                            closeUp();
+                        }
+                    ]]>
+                </fx:Script>
+                <s:VGroup width="100%">
+                    <s:CheckBox id="cb" label="Use Download Cache" />
+                    <s:HGroup width="100%">
+                        <s:Label text="Cache Folder: " />
+                        <s:TextInput id="folder" width="100%"/>
+                        <s:Button label="Browse..." click="browseFolders()" />
+                    </s:HGroup>
+                    <s:HGroup>
+                        <s:Button label="OK" click="updateCache()" />
+                        <s:Button label="Cancel" click="closeUp()" />
+                    </s:HGroup>
+                </s:VGroup>
+            </s:TitleWindow>
+        </fx:Component>
+    </fx:Declarations>
        <fx:Script><![CDATA[
         import flash.globalization.LocaleID;
         import flash.globalization.StringTools;
@@ -95,7 +145,11 @@ variables are not required because the locations of these 
pieces are known.
                private var _useMirror:Boolean = true;
                private var _latestVersion:String;
                private var loggedVersion:Boolean;
-        private var debugMode:Boolean = true;
+        private var debugMode:Boolean = false;
+        private var showDevBuilds:Boolean = false;
+        private var usingDownloadCache:Boolean;
+        private var downloadCacheFolder:String;
+        private var firstTime:Boolean = true;
         
                public var installerAppPath:String;
                public var installerAppFileName:String;
@@ -297,6 +351,12 @@ variables are not required because the locations of these 
pieces are known.
                     debugMode = true;
                 }
                        }
+            var so:SharedObject = SharedObject.getLocal("InstallApacheFlex");
+            if (so.data.usingDownloadCache)
+            {
+                usingDownloadCache = true;
+                downloadCacheFolder = so.data.downloadCacheFolder;
+            }
                }
                
                protected function 
handleApplicationComplete(event:FlexEvent):void {
@@ -487,94 +547,151 @@ variables are not required because the locations of 
these pieces are known.
                                
log(_viewResourceConstants.ERROR_UNSUPPORTED_OPERATING_SYSTEM);
                }
                
+        private function devBuildFilterFunction(o:Object):Boolean
+        {
+            return !o.devBuild;
+        }
+        
+        private function devBuildShowHandler(event:Event):void
+        {
+            var item:Object = flexVersion.selectedItem;
+            FLEX_VERSIONS.filterFunction = null;
+            FLEX_VERSIONS.refresh();   
+            flexVersion.selectedItem = item;
+        }
+
+        private function downloadCacheHandler(event:Event):void
+        {
+            var dlg:CacheDialog = new CacheDialog();
+            dlg.addEventListener(Event.COMPLETE, updateDownloadCache);
+            PopUpManager.addPopUp(dlg, this, true);
+            dlg.cb.selected = usingDownloadCache;
+            dlg.folder.text = downloadCacheFolder;
+        }
+        
+        private function updateDownloadCache(event:Event):void
+        {
+            downloadCacheFolder = event.target.folder.text;
+            usingDownloadCache = event.target.cb.selected;
+            var so:SharedObject = SharedObject.getLocal("InstallApacheFlex");
+            so.data.usingDownloadCache = usingDownloadCache;
+            so.data.downloadCacheFolder = downloadCacheFolder;
+        }
+        
                protected function setXMLVariables():Boolean {
-                       var data:XML = XML(_loader.data);
-                       var keepGoing:Boolean = true;
-                       
-                       _latestVersion = data.version.latest.toString();
-                       
-                       installerAppPath = data.installer.(@name == 
'SDKInstallerApp')[email protected]();
-                       installerAppFileName = data.installer.(@name == 
'SDKInstallerApp')[email protected]();
-                       
-                       _mirrorURLCGI = data.mirror.(@name == 
'MirrorURLCGI')[email protected]();
-                       
-            var name:String;
-            var versionString:String;
-            
-            var languages:XMLList = data.languages.children();
-            for each (var lang:XML in languages)
-            {
-                var item:Object = {label: [email protected](), data: 
[email protected](), path: [email protected]() };
-                supportedLanguages.addItem(item);
-            }
-            
-            var airData:XMLList = data.airsdk[_os.os].versions;
-            var airVersionList:XMLList = airData[0].children();
-                       var airVersions:Array = [];
-                       var selected:String = airData[0]["@default"].toString();
-                       for each (var airVersion:XML in airVersionList) {
-                name = airVersion.name().toString();
-                versionString = name.substr(7);
-                airVersions.push(versionString);
-                               AIR_VERSIONS.addItem({label:"AIR " + 
versionString, version: versionString});
-                       }
-                       
-                       if (this.airVersion.selectedIndex == -1) {
-                               this.airVersion.selectedIndex = 
airVersions.indexOf(selected);  
-                       }
-                       
-            var flexData:XMLList = data.products.children();
-            var selectedFlexVersion:int;
-            for each (var productData:XML in flexData)
+            var data:XML = XML(_loader.data);
+            var keepGoing:Boolean = true;
+            if (firstTime)
             {
-                var productName:String = [email protected]();
-                var productPrefix:String = [email protected]();
-                var productVersionList:XMLList = 
productData.versions.children();
-                var isOverlay:Boolean = [email protected]() == 
"true";
-                for each (var productVersion:XML in productVersionList) {
-                    var shortName:String = [email protected]();
-                    var fileName:String = shortName + (_os.isWindows() ? 
Constants.ARCHIVE_EXTENSION_WIN : Constants.ARCHIVE_EXTENSION_MAC);
-                    versionString = [email protected]();
-                    var label:String = productName + " " + versionString;
-                    var ver:String = 
fileName.substr(productPrefix.length).split("-")[0];
-                    var path:String = [email protected]();
-                    if (productVersion["@default"].length() == 1)
-                        selectedFlexVersion = FLEX_VERSIONS.length;
-                    FLEX_VERSIONS.addItem({shortName: shortName, 
fileName:fileName,label:label, version:ver, 
-                        path:path, overlay: isOverlay, prefix: productPrefix});
+                firstTime = false;
+                       
+                       _latestVersion = data.version.latest.toString();
+                       
+                       installerAppPath = data.installer.(@name == 
'SDKInstallerApp')[email protected]();
+                       installerAppFileName = data.installer.(@name == 
'SDKInstallerApp')[email protected]();
+                       
+                       _mirrorURLCGI = data.mirror.(@name == 
'MirrorURLCGI')[email protected]();
+                
+                var customMenuItem1:ContextMenuItem = new 
ContextMenuItem("Show Dev Builds");
+                
customMenuItem1.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, 
devBuildShowHandler);
+                var customMenuItem2:ContextMenuItem = new 
ContextMenuItem("Configure Download Cache");
+                
customMenuItem2.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, 
downloadCacheHandler);
+                
+                var contextMenuCustomItems:Array = 
ContextMenu(contextMenu).customItems;
+                contextMenuCustomItems.push(customMenuItem1);
+                contextMenuCustomItems.push(customMenuItem2);
+                                       
+                var name:String;
+                var versionString:String;
+                
+                var languages:XMLList = data.languages.children();
+                for each (var lang:XML in languages)
+                {
+                    var item:Object = {label: [email protected](), data: 
[email protected](), path: [email protected]() };
+                    supportedLanguages.addItem(item);
                 }
+                
+                var airData:XMLList = data.airsdk[_os.os].versions;
+                var airVersionList:XMLList = airData[0].children();
+                       var airVersions:Array = [];
+                       var selected:String = airData[0]["@default"].toString();
+                       for each (var airVersion:XML in airVersionList) {
+                    name = airVersion.name().toString();
+                    versionString = name.substr(7);
+                    airVersions.push(versionString);
+                    var airPath:String = airVersion.path.toString();
+                    var airFile:String = airVersion.file.toString();
+                               AIR_VERSIONS.addItem({label:"AIR " + 
versionString, version: versionString, path: airPath, file: airFile});
+                       }
+                       
+                       if (this.airVersion.selectedIndex == -1) {
+                               this.airVersion.selectedIndex = 
airVersions.indexOf(selected);  
+                       }
+                       
+                var flexData:XMLList = data.products.children();
+                var selectedFlexVersion:int;
+                for each (var productData:XML in flexData)
+                {
+                    var productName:String = [email protected]();
+                    var productPrefix:String = [email protected]();
+                    var productVersionList:XMLList = 
productData.versions.children();
+                    var isOverlay:Boolean = [email protected]() == 
"true";
+                    var needsAIR:Boolean = [email protected]() != 
"false"
+                    var needsFlash:Boolean = 
[email protected]() != "false"
+                    for each (var productVersion:XML in productVersionList) {
+                        var shortName:String = [email protected]();
+                        var fileName:String = shortName + (_os.isWindows() ? 
Constants.ARCHIVE_EXTENSION_WIN : Constants.ARCHIVE_EXTENSION_MAC);
+                        versionString = [email protected]();
+                        var label:String = productName + " " + versionString;
+                        var ver:String = 
fileName.substr(productPrefix.length).split("-")[0];
+                        var path:String = [email protected]();
+                        var devBuild:Boolean = [email protected]() 
== "true";
+                        if (productVersion["@default"].length() == 1)
+                            selectedFlexVersion = FLEX_VERSIONS.length;
+                        FLEX_VERSIONS.addItem({shortName: shortName, 
fileName:fileName,label:label, version:ver, 
+                            path:path, overlay: isOverlay, prefix: 
productPrefix,
+                            needsAIR: needsAIR, needsFlash: needsFlash, 
devBuild: devBuild});
+                    }
+                }
+                       
+                FLEX_VERSIONS.filterFunction = devBuildFilterFunction;
+                FLEX_VERSIONS.refresh();
+                flexVersion.validateNow();
+                
+                       if (this.flexVersion.selectedIndex == -1) {
+                               this.flexVersion.selectedIndex = 
selectedFlexVersion;
+                       }
+                
+                       var selectedFlexVersionObject:Object = 
this.flexVersion.selectedItem;
+                       updateFlexVersionStrings(selectedFlexVersionObject);
+                       
+                       if (!APACHE_FLEX_BIN_DISTRO_FILE || 
!APACHE_FLEX_BIN_DISTRO_PATH) {
+                               
log(_viewResourceConstants.ERROR_INVALID_SDK_URL);
+                               keepGoing = false;
+                       }
+                       
+                var flashData:XMLList = data.flashsdk.versions;
+                var flashVersionList:XMLList = flashData[0].children();
+                var flashPlayerVersions:Array = [];
+                selected = flashData[0]["@default"].toString();
+                       for each (var flashVersion:XML in flashVersionList) {
+                    name = flashVersion.name().toString();
+                    versionString = name.substr(7);
+                    flashPlayerVersions.push(versionString);
+                               if (!_os.isLinux() || Number(versionString) <= 
11.2) {
+                                       var swfVersion:String = 
flashVersion.swfversion.toString();
+                        var flashPath:String = flashVersion.path.toString();
+                        var flashFile:String = flashVersion.file.toString();
+                                       
FLASH_PLAYER_VERSIONS.addItem({label:"Flash Player " + versionString, 
version:versionString, swfVersion:swfVersion,
+                                                                path: 
flashPath, file: flashFile});
+                               }
+                       }
+                       
+                       if (this.flashPlayerVersion.selectedIndex == -1) {
+                               this.flashPlayerVersion.selectedIndex = 
flashPlayerVersions.indexOf(selected);  
+                       }
             }
-                       
-                       if (this.flexVersion.selectedIndex == -1) {
-                               this.flexVersion.selectedIndex = 
selectedFlexVersion;
-                       }
-                       
-                       var selectedFlexVersionObject:Object = 
this.flexVersion.selectedItem;
-                       updateFlexVersionStrings(selectedFlexVersionObject);
-                       
-                       if (!APACHE_FLEX_BIN_DISTRO_FILE || 
!APACHE_FLEX_BIN_DISTRO_PATH) {
-                               
log(_viewResourceConstants.ERROR_INVALID_SDK_URL);
-                               keepGoing = false;
-                       }
-                       
-            var flashData:XMLList = data.flashsdk.versions;
-            var flashVersionList:XMLList = flashData[0].children();
-            var flashPlayerVersions:Array = [];
-            selected = flashData[0]["@default"].toString();
-                       for each (var flashVersion:XML in flashVersionList) {
-                name = flashVersion.name().toString();
-                versionString = name.substr(7);
-                flashPlayerVersions.push(versionString);
-                               if (!_os.isLinux() || Number(versionString) <= 
11.2) {
-                                       var swfVersion:String = 
flashVersion.swfversion.toString();
-                                       
FLASH_PLAYER_VERSIONS.addItem({label:"Flash Player " + versionString, 
version:versionString, swfVersion:swfVersion});
-                               }
-                       }
-                       
-                       if (this.flashPlayerVersion.selectedIndex == -1) {
-                               this.flashPlayerVersion.selectedIndex = 
flashPlayerVersions.indexOf(selected);  
-                       }
-                       
+            
                        ADOBE_AIR_SDK_WIN_FILE = 
data.airsdk.windows.versions["version" + AIR_VERSION].file.toString();
                        ADOBE_AIR_SDK_WIN_URL = 
data.airsdk.windows.versions["version" + AIR_VERSION].path.toString();
                        if (_os.isWindows() && (!ADOBE_AIR_SDK_WIN_FILE || 
!ADOBE_AIR_SDK_WIN_URL)) {
@@ -979,7 +1096,10 @@ variables are not required because the locations of these 
pieces are known.
                protected function handleFlexVersionChange(event:Event):void {
                        /*APACHE_FLEX_BIN_DISTRO_VERSION =  
flexVersion.selectedItem.version;
                        APACHE_FLEX_BIN_DISTRO_VERSION_DISPLAY = 
flexVersion.selectedItem.label;*/
-                       updateFlexVersionStrings(flexVersion.selectedItem);
+            var item:Object = flexVersion.selectedItem;
+            airVersion.enabled = item.needsAIR;
+            flashPlayerVersion.enabled = item.needsFlash;
+                       updateFlexVersionStrings(item);
                        updatePaths();
                        updateWindowTitle();
                }
@@ -1096,7 +1216,8 @@ variables are not required because the locations of these 
pieces are known.
                }
                
                protected function 
md5VerificationProgressHandler(event:ProgressEvent):void {
-            //log("md5 progress " + event.bytesLoaded + "  " + 
event.bytesTotal);
+            if (debugMode)
+                log("md5 progress " + event.bytesLoaded + "  " + 
event.bytesTotal, -1, false);
                        progressBar.percent = Math.round((event.bytesLoaded / 
event.bytesTotal) * 100);
                }
                
@@ -1180,6 +1301,9 @@ variables are not required because the locations of these 
pieces are known.
         {
             ant = new Ant();
             ant.output = output;
+            Ant.usingDownloadCache = usingDownloadCache;
+            Ant.downloadCacheFolder = downloadCacheFolder;
+            
             var file:File;
             if (overlaying)
             {
@@ -1209,6 +1333,14 @@ variables are not required because the locations of 
these pieces are known.
             for (p in additionalProps)
                 context[p] = additionalProps[p];
             
+            context["air.sdk.url.path"] = airVersion.selectedItem.path;
+            context["air.sdk.url.file"] = airVersion.selectedItem.file;
+            if (flashPlayerVersion.selectedItem.flashPath)
+            {
+                context["flash.sdk.url.path"] = 
flashPlayerVersion.selectedItem.path;
+                context["flash.sdk.url.file"] = 
flashPlayerVersion.selectedItem.file;
+            }
+            
             if (!ant.processXMLFile(file, context, true))
             {
                 ant.addEventListener(Event.COMPLETE, completeHandler);
@@ -1220,7 +1352,8 @@ variables are not required because the locations of these 
pieces are known.
         
         private function progressEventHandler(event:ProgressEvent):void
         {
-            //log("progress " + event.bytesLoaded + "  " + event.bytesTotal);
+            if (debugMode)
+                log("progress " + event.bytesLoaded + "  " + event.bytesTotal, 
-1, false);
             progressBar.percent = Math.round((event.bytesLoaded / 
event.bytesTotal) * 100);
             /*
             if (ant.progressClass is Copy)
@@ -1255,7 +1388,7 @@ variables are not required because the locations of these 
pieces are known.
         private function output(s:String):void
         {
             var isPublic:Boolean = true;
-            var skipLog:Boolean = true;
+            var skipLog:Boolean = !debugMode;
             if (s.indexOf(":") != -1 && s.charAt(0) == "\n")
             {
                 // target output is a newline then the target name then a colon
@@ -2033,7 +2166,8 @@ variables are not required because the locations of these 
pieces are known.
                        var bytesTotal:int = event.bytesTotal;
                        var bytesLoaded:int = event.bytesLoaded;
                        var percentLoaded:int = Math.round(bytesLoaded * 100 / 
bytesTotal);
-            //log("download progress " + event.bytesLoaded + "  " + 
event.bytesTotal);
+            if (debugMode)
+                log("download progress " + event.bytesLoaded + "  " + 
event.bytesTotal, -1, false);
                        
                        progressBar.percent = percentLoaded;
                }

http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/0c1cdf68/installer/src/installer/sdk-installer-config-4.0.xml
----------------------------------------------------------------------
diff --git a/installer/src/installer/sdk-installer-config-4.0.xml 
b/installer/src/installer/sdk-installer-config-4.0.xml
index 0a69151..3cc7b0a 100644
--- a/installer/src/installer/sdk-installer-config-4.0.xml
+++ b/installer/src/installer/sdk-installer-config-4.0.xml
@@ -60,22 +60,22 @@ limitations under the License.
                 <versionA id="4.9.1" version="4.9.1" 
path="http://archive.apache.org/dist/flex/4.9.1/binaries/"; 
file="apache-flex-sdk-4.9.1-bin" />
                 <versionB id="4.10.0" version="4.10.0" 
path="http://archive.apache.org/dist/flex/4.10.0/binaries/"; 
file="apache-flex-sdk-4.10.0-bin" />
                 <versionC id="4.11.0" version="4.11.0" 
path="flex/4.11.0/binaries/" file="apache-flex-sdk-4.11.0-bin" default="true"/>
-                <Nightly id="Nightly" version="Nightly" 
path="https://builds.apache.org/job/flex-sdk_release/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-sdk-4.12.0-bin" />
+                <Nightly id="Nightly" version="Nightly" 
path="https://builds.apache.org/job/flex-sdk_release/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-sdk-4.12.0-bin" dev="true"/>
             </versions>
         </ApacheFlexSDK>
         <ApacheFlexJS name="Apache FlexJS" prefix="apache-flex-flexjs-">
             <versions>
-                <Nightly id="FlexJSNightly" version="Nightly" 
path="https://builds.apache.org/job/flex-asjs/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-flexjs-4.0.1-bin" />
+                <Nightly id="FlexJSNightly" version="Nightly" 
path="https://builds.apache.org/job/flex-asjs/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-flexjs-4.0.1-bin" dev="true"/>
             </versions>
         </ApacheFlexJS>
-        <ApacheFlexFalcon name="Apache Flex Falcon" 
prefix="apache-flex-falcon-" overlay="true">
+        <ApacheFlexFalcon name="Apache Flex Falcon" 
prefix="apache-flex-falcon-" overlay="true" needsAIR="false" needsFlash="false">
             <versions>
-                <Nightly id="FlexFalconNightly" version="Nightly" 
path="https://builds.apache.org/job/flex-falcon/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-falcon-0.0.1-bin" />
+                <Nightly id="FlexFalconNightly" version="Nightly" 
path="https://builds.apache.org/job/flex-falcon/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-falcon-0.0.1-bin" dev="true"/>
             </versions>
         </ApacheFlexFalcon>
-        <ApacheFlexFalconJX name="Apache Flex FalconJX" 
prefix="apache-flex-falconjx-" overlay="true">
+        <ApacheFlexFalconJX name="Apache Flex FalconJX" 
prefix="apache-flex-falconjx-" overlay="true" needsAIR="false" 
needsFlash="false">
             <versions>
-                <Nightly id="FlexFalconJXNightly" version="Nightly" 
path="https://builds.apache.org/job/flex-falcon/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-falconjx-0.0.1-bin" />
+                <Nightly id="FlexFalconJXNightly" version="Nightly" 
path="https://builds.apache.org/job/flex-falcon/lastSuccessfulBuild/artifact/out/";
 file="apache-flex-falconjx-0.0.1-bin" dev="true"/>
             </versions>
         </ApacheFlexFalconJX>
     </products>

Reply via email to