You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jm...@apache.org on 2014/08/23 05:41:36 UTC
[50/51] [partial] trying to merge TourDeFlex develop release into
master
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/Config.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/Config.as b/TourDeFlex/TourDeFlex/src/Config.as
index 85a6384..ba2a287 100644
--- a/TourDeFlex/TourDeFlex/src/Config.as
+++ b/TourDeFlex/TourDeFlex/src/Config.as
@@ -16,142 +16,142 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package
-{
- import classes.LocalQuickStart;
-
- import flash.filesystem.File;
- import flash.filesystem.FileMode;
- import flash.filesystem.FileStream;
- import flash.system.Capabilities;
-
- public class Config
- {
- [Bindable] public static var PROGRAM_TITLE:String = "Tour de Flex";
- [Bindable] public static var APP_VERSION:String = "0";
- [Bindable] public static var OBJECTS_FILE_VERSION:String = "0";
- [Bindable] public static var OBJECTS_TOTAL:int = 0;
- [Bindable] public static var ABOUT_MENU_LIST:XMLList;
- [Bindable] public static var IS_ONLINE:Boolean = false;
- [Bindable] public static var USE_SPLASH:Boolean = true;
-
- //public static var SETTINGS_FILE:String = "settings.xml";
- //public static function get SETTINGS_URL():String {return "data/" + SETTINGS_FILE;}
- //public static var settingsXml:XML;
-
- [Bindable] public static var ABOUT_MENU_TITLE:String = "Flex Resources";
-
- [Bindable] public static var SPLASH_URL:String = "data/assets/intro.flv";
- [Bindable] public static var QUICK_START_REMOTE_URL:String = "http://tourdeflex.blogspot.com";
- [Bindable] public static var QUICK_START_LOCAL_URL:String = "data/quickstart.html";
-
- public static var OBJECTS_FILE:String = "objects-desktop2.xml";
- public static function get OBJECTS_URL():String {return "data/" + OBJECTS_FILE;}
- public static var LOCAL_OBJECTS_ROOT_PATH:String = "objects/";
-
- public static var OBJECTS_UPDATER_FILE:String = "objects-desktop2-update.xml";
- public static function get OBJECTS_UPDATER_URL():String {return "http://tourdeflex.adobe.com/download/" + OBJECTS_UPDATER_FILE;}
- public static var APP_UPDATER_URL:String = "http://tourdeflex.adobe.com/download/update4.xml";
-
- public static var ONLINE_STATUS_URL:String = "http://tourdeflex.adobe.com/ping.html";
- public static var OFFLINE_URL:String = "data/offline.html";
-
- private static var BASE_URL:String = "http://tourdeflex.adobe.com/server/";
- [Bindable] public static var DATA_EXCHANGE_URL:String = BASE_URL + "main.php";
-
- private static var COMENTS_URL_QUERY_STRING:String = "main.php?Request=GetComments&ObjectId=";
- public static var COMMENTS_URL:String = BASE_URL + COMENTS_URL_QUERY_STRING;
-
- public static var HEADER_GRADIENT_IMAGE:String = "images/header_gradient.png";
- public static var HEADER_IMAGE:String = "images/header_logo.png";
-
- public static var TREE_NO_ICON:String = "images/tree_noIcon.png";
-
- public function Config()
- {
- }
-
- /*
- public static function loadSettings():void
- {
- setLocalization();
-
- var loader:URLLoader = new URLLoader(new URLRequest(Config.SETTINGS_URL));
- loader.addEventListener(Event.COMPLETE, settingsXmlLoaded);
-
- var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
- var ns:Namespace = appXml.namespace();
- APP_VERSION = appXml.ns::version;
- }
- */
-
- public static function setLocalization():void
- {
- //var localLanguage:String = Capabilities.languages[0].toString().toLowerCase(); //for 'en-us'
- var localLanguage:String = Capabilities.language.toLowerCase(); //for 'en'
- trace("LANG=" + localLanguage);
- //localLanguage = "jp"; //for testing
- //trace(localLanguage);
-
- if(localLanguage != "en" && localLanguage != "en-us")
- {
- //Config.QUICK_START_REMOTE_URL = appendLanguage(Config.QUICK_START_REMOTE_URL, localLanguage);
- //Config.QUICK_START_LOCAL_URL = appendLanguage(Config.QUICK_START_LOCAL_URL, localLanguage);
-
- var localizedObjectFile:String = "objects-desktop_" + localLanguage + ".xml";
- var staticObjectFile:File = File.applicationDirectory.resolvePath("data/" + localizedObjectFile);
- if(staticObjectFile.exists)
- {
- OBJECTS_FILE = localizedObjectFile;
- Config.OBJECTS_UPDATER_FILE = "objects-desktop-update_" + localLanguage + ".xml";
- //SETTINGS_FILE = "settings_" + localLanguage + ".xml";
- }
- }
- }
-
- public static function appendLanguage(oldPath:String, lang:String):String
- {
- var newPath:String = oldPath;
-
- var pos:int = oldPath.lastIndexOf(".");
- if(pos > 0)
- {
- var ext:String = oldPath.substring(pos, oldPath.length);
- newPath = oldPath.substring(0, pos);
- newPath += "_" + lang + ext;
- }
-
- return newPath;
- }
-
- /*
- private static function settingsXmlLoaded(event:Event):void
- {
- var loader:URLLoader = URLLoader(event.target);
- settingsXml = new XML(loader.data);
- PROGRAM_TITLE = settingsXml.@title;
- ABOUT_MENU_LIST = settingsXml.AboutMenu.Item;
- ABOUT_MENU_TITLE = settingsXml.AboutMenu.@title;
- }
- */
-
- public static function isAppFirstTimeRun():Boolean
- {
- var isFirstTime:Boolean = false;
- var appFirstTimeRunFile:File = File.applicationStorageDirectory.resolvePath("versions/" + APP_VERSION);
-
- if(!appFirstTimeRunFile.exists)
- {
- var fileStream:FileStream = new FileStream();
- fileStream.open(appFirstTimeRunFile, FileMode.WRITE);
- fileStream.writeUTFBytes(APP_VERSION);
- fileStream.close();
-
- isFirstTime = true;
- }
-
- return isFirstTime;
- }
-
- }
+package
+{
+ import classes.LocalQuickStart;
+
+ import flash.filesystem.File;
+ import flash.filesystem.FileMode;
+ import flash.filesystem.FileStream;
+ import flash.system.Capabilities;
+
+ public class Config
+ {
+ [Bindable] public static var PROGRAM_TITLE:String = "Tour de Flex";
+ [Bindable] public static var APP_VERSION:String = "0";
+ [Bindable] public static var OBJECTS_FILE_VERSION:String = "0";
+ [Bindable] public static var OBJECTS_TOTAL:int = 0;
+ [Bindable] public static var ABOUT_MENU_LIST:XMLList;
+ [Bindable] public static var IS_ONLINE:Boolean = false;
+ [Bindable] public static var USE_SPLASH:Boolean = true;
+
+ //public static var SETTINGS_FILE:String = "settings.xml";
+ //public static function get SETTINGS_URL():String {return "data/" + SETTINGS_FILE;}
+ //public static var settingsXml:XML;
+
+ [Bindable] public static var ABOUT_MENU_TITLE:String = "Flex Resources";
+
+ [Bindable] public static var SPLASH_URL:String = "data/assets/intro.flv";
+ [Bindable] public static var QUICK_START_REMOTE_URL:String = "http://tourdeflex.blogspot.com";
+ [Bindable] public static var QUICK_START_LOCAL_URL:String = "data/quickstart.html";
+
+ public static var OBJECTS_FILE:String = "objects-desktop2.xml";
+ public static function get OBJECTS_URL():String {return "data/" + OBJECTS_FILE;}
+ public static var LOCAL_OBJECTS_ROOT_PATH:String = "objects/";
+
+ public static var OBJECTS_UPDATER_FILE:String = "objects-desktop2-update.xml";
+ public static function get OBJECTS_UPDATER_URL():String {return "http://tourdeflex.adobe.com/download/" + OBJECTS_UPDATER_FILE;}
+ public static var APP_UPDATER_URL:String = "http://tourdeflex.adobe.com/download/update4.xml";
+
+ public static var ONLINE_STATUS_URL:String = "http://tourdeflex.adobe.com/ping.html";
+ public static var OFFLINE_URL:String = "data/offline.html";
+
+ private static var BASE_URL:String = "http://tourdeflex.adobe.com/server/";
+ [Bindable] public static var DATA_EXCHANGE_URL:String = BASE_URL + "main.php";
+
+ private static var COMENTS_URL_QUERY_STRING:String = "main.php?Request=GetComments&ObjectId=";
+ public static var COMMENTS_URL:String = BASE_URL + COMENTS_URL_QUERY_STRING;
+
+ public static var HEADER_GRADIENT_IMAGE:String = "images/header_gradient.png";
+ public static var HEADER_IMAGE:String = "images/header_logo.png";
+
+ public static var TREE_NO_ICON:String = "images/tree_noIcon.png";
+
+ public function Config()
+ {
+ }
+
+ /*
+ public static function loadSettings():void
+ {
+ setLocalization();
+
+ var loader:URLLoader = new URLLoader(new URLRequest(Config.SETTINGS_URL));
+ loader.addEventListener(Event.COMPLETE, settingsXmlLoaded);
+
+ var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
+ var ns:Namespace = appXml.namespace();
+ APP_VERSION = appXml.ns::version;
+ }
+ */
+
+ public static function setLocalization():void
+ {
+ //var localLanguage:String = Capabilities.languages[0].toString().toLowerCase(); //for 'en-us'
+ var localLanguage:String = Capabilities.language.toLowerCase(); //for 'en'
+ trace("LANG=" + localLanguage);
+ //localLanguage = "jp"; //for testing
+ //trace(localLanguage);
+
+ if(localLanguage != "en" && localLanguage != "en-us")
+ {
+ //Config.QUICK_START_REMOTE_URL = appendLanguage(Config.QUICK_START_REMOTE_URL, localLanguage);
+ //Config.QUICK_START_LOCAL_URL = appendLanguage(Config.QUICK_START_LOCAL_URL, localLanguage);
+
+ var localizedObjectFile:String = "objects-desktop_" + localLanguage + ".xml";
+ var staticObjectFile:File = File.applicationDirectory.resolvePath("data/" + localizedObjectFile);
+ if(staticObjectFile.exists)
+ {
+ OBJECTS_FILE = localizedObjectFile;
+ Config.OBJECTS_UPDATER_FILE = "objects-desktop-update_" + localLanguage + ".xml";
+ //SETTINGS_FILE = "settings_" + localLanguage + ".xml";
+ }
+ }
+ }
+
+ public static function appendLanguage(oldPath:String, lang:String):String
+ {
+ var newPath:String = oldPath;
+
+ var pos:int = oldPath.lastIndexOf(".");
+ if(pos > 0)
+ {
+ var ext:String = oldPath.substring(pos, oldPath.length);
+ newPath = oldPath.substring(0, pos);
+ newPath += "_" + lang + ext;
+ }
+
+ return newPath;
+ }
+
+ /*
+ private static function settingsXmlLoaded(event:Event):void
+ {
+ var loader:URLLoader = URLLoader(event.target);
+ settingsXml = new XML(loader.data);
+ PROGRAM_TITLE = settingsXml.@title;
+ ABOUT_MENU_LIST = settingsXml.AboutMenu.Item;
+ ABOUT_MENU_TITLE = settingsXml.AboutMenu.@title;
+ }
+ */
+
+ public static function isAppFirstTimeRun():Boolean
+ {
+ var isFirstTime:Boolean = false;
+ var appFirstTimeRunFile:File = File.applicationStorageDirectory.resolvePath("versions/" + APP_VERSION);
+
+ if(!appFirstTimeRunFile.exists)
+ {
+ var fileStream:FileStream = new FileStream();
+ fileStream.open(appFirstTimeRunFile, FileMode.WRITE);
+ fileStream.writeUTFBytes(APP_VERSION);
+ fileStream.close();
+
+ isFirstTime = true;
+ }
+
+ return isFirstTime;
+ }
+
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/Preferences.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/Preferences.as b/TourDeFlex/TourDeFlex/src/Preferences.as
index 49c7e35..4144fd5 100644
--- a/TourDeFlex/TourDeFlex/src/Preferences.as
+++ b/TourDeFlex/TourDeFlex/src/Preferences.as
@@ -16,53 +16,53 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package
-{
- import flash.filesystem.File;
- import flash.filesystem.FileMode;
- import flash.filesystem.FileStream;
-
- public class Preferences
- {
- //--------------------------------------------------------------------------
- // Variables
- //--------------------------------------------------------------------------
- private static var filePath:String = "preferences.xml";
- [Bindable] public static var preferencesXml:XML = <Preferences />;
-
- //--------------------------------------------------------------------------
- // Loading/setup
- //--------------------------------------------------------------------------
- public function Preferences()
- {
-
- }
-
- public static function load():void
- {
- var preferencesFile:File = File.applicationStorageDirectory.resolvePath(filePath);
- if(preferencesFile.exists)
- {
- var fileStream:FileStream = new FileStream();
- fileStream.open(preferencesFile, FileMode.READ);
- preferencesXml = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
- fileStream.close();
- }
- }
-
- //--------------------------------------------------------------------------
- // Saving
- //--------------------------------------------------------------------------
- public static function save():void
- {
- var preferencesFile:File = File.applicationStorageDirectory.resolvePath(filePath);
- var fileStream:FileStream = new FileStream();
- fileStream.open(preferencesFile, FileMode.WRITE);
- fileStream.writeUTFBytes(preferencesXml.toXMLString());
- fileStream.close();
- }
-
- //--------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- }
+package
+{
+ import flash.filesystem.File;
+ import flash.filesystem.FileMode;
+ import flash.filesystem.FileStream;
+
+ public class Preferences
+ {
+ //--------------------------------------------------------------------------
+ // Variables
+ //--------------------------------------------------------------------------
+ private static var filePath:String = "preferences.xml";
+ [Bindable] public static var preferencesXml:XML = <Preferences />;
+
+ //--------------------------------------------------------------------------
+ // Loading/setup
+ //--------------------------------------------------------------------------
+ public function Preferences()
+ {
+
+ }
+
+ public static function load():void
+ {
+ var preferencesFile:File = File.applicationStorageDirectory.resolvePath(filePath);
+ if(preferencesFile.exists)
+ {
+ var fileStream:FileStream = new FileStream();
+ fileStream.open(preferencesFile, FileMode.READ);
+ preferencesXml = XML(fileStream.readUTFBytes(fileStream.bytesAvailable));
+ fileStream.close();
+ }
+ }
+
+ //--------------------------------------------------------------------------
+ // Saving
+ //--------------------------------------------------------------------------
+ public static function save():void
+ {
+ var preferencesFile:File = File.applicationStorageDirectory.resolvePath(filePath);
+ var fileStream:FileStream = new FileStream();
+ fileStream.open(preferencesFile, FileMode.WRITE);
+ fileStream.writeUTFBytes(preferencesXml.toXMLString());
+ fileStream.close();
+ }
+
+ //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml b/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml
index 3f5594d..102abff 100644
--- a/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml
+++ b/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
@@ -17,8 +17,8 @@ See the License for the specific language governing permissions and
limitations under the License.
-->
-<application xmlns="http://ns.adobe.com/air/application/2.0">
-
+<application xmlns="http://ns.adobe.com/air/application/2.0">
+
<!-- Adobe AIR Application Descriptor File Template.
Specifies parameters for identifying, installing, and launching AIR applications.
@@ -30,128 +30,128 @@ limitations under the License.
minimumPatchLevel - The minimum patch level of the AIR runtime required to run
the application. Optional.
--->
-
- <!-- The application identifier string, unique to this application. Required. -->
- <id>TourDeFlex</id>
-
- <!-- Used as the filename for the application. Required. -->
- <filename>TourDeFlex</filename>
-
- <!-- The name that is displayed in the AIR application installer. Optional. -->
- <name>TourDeFlex</name>
-
-
- <publisherID>E7BED6E5DDA59983786DD72EBFA46B1598278E07.1</publisherID>
- <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
- <version>2.0</version>
-
- <!-- Description, displayed in the AIR application installer. Optional. -->
- <description>Tour de Flex - Adobe Systems, Inc.</description>
-
- <!-- Copyright information. Optional -->
- <!-- <copyright>Copyright 2010, Adobe Systems, Inc.</copyright> -->
-
- <!-- Settings for the application's initial window. Required. -->
- <initialWindow>
- <!-- The main SWF or HTML file of the application. Required. -->
- <!-- Note: In Flex Builder, the SWF reference is set automatically. -->
- <content>[This value will be overwritten by Flex Builder in the output app.xml]</content>
-
- <!-- The title of the main window. Optional. -->
- <!-- <title></title> -->
-
- <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
- <!-- <systemChrome></systemChrome> -->
- <systemChrome>none</systemChrome>
-
- <!-- Whether the window is transparent. Only applicable when systemChrome is false. Optional. Default false. -->
- <!-- <transparent></transparent> -->
-
- <!-- Whether the window is initially visible. Optional. Default false. -->
- <!-- <visible></visible> -->
-
- <!-- Whether the user can minimize the window. Optional. Default true. -->
- <!-- <minimizable></minimizable> -->
-
- <!-- Whether the user can maximize the window. Optional. Default true. -->
- <!-- <maximizable></maximizable> -->
-
- <!-- Whether the user can resize the window. Optional. Default true. -->
- <!-- <resizable></resizable> -->
-
- <!-- The window's initial width. Optional. -->
- <!-- <width></width> -->
-
- <!-- The window's initial height. Optional. -->
- <!-- <height></height> -->
-
- <!-- The window's initial x position. Optional. -->
- <!-- <x></x> -->
-
- <!-- The window's initial y position. Optional. -->
- <!-- <y></y> -->
-
- <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
- <!-- <minSize></minSize> -->
-
- <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
- <!-- <maxSize></maxSize> -->
- </initialWindow>
-
- <!-- The subpath of the standard default installation location to use. Optional. -->
- <!-- <installFolder></installFolder> -->
-
- <!-- The subpath of the Windows Start/Programs menu to use. Optional. -->
- <!-- <programMenuFolder></programMenuFolder> -->
-
+-->
+
+ <!-- The application identifier string, unique to this application. Required. -->
+ <id>TourDeFlex</id>
+
+ <!-- Used as the filename for the application. Required. -->
+ <filename>TourDeFlex</filename>
+
+ <!-- The name that is displayed in the AIR application installer. Optional. -->
+ <name>TourDeFlex</name>
+
+
+ <publisherID>E7BED6E5DDA59983786DD72EBFA46B1598278E07.1</publisherID>
+ <!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
+ <version>2.0</version>
+
+ <!-- Description, displayed in the AIR application installer. Optional. -->
+ <description>Tour de Flex - Adobe Systems, Inc.</description>
+
+ <!-- Copyright information. Optional -->
+ <!-- <copyright>Copyright 2010, Adobe Systems, Inc.</copyright> -->
+
+ <!-- Settings for the application's initial window. Required. -->
+ <initialWindow>
+ <!-- The main SWF or HTML file of the application. Required. -->
+ <!-- Note: In Flex Builder, the SWF reference is set automatically. -->
+ <content>[This value will be overwritten by Flex Builder in the output app.xml]</content>
+
+ <!-- The title of the main window. Optional. -->
+ <!-- <title></title> -->
+
+ <!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
+ <!-- <systemChrome></systemChrome> -->
+ <systemChrome>none</systemChrome>
+
+ <!-- Whether the window is transparent. Only applicable when systemChrome is false. Optional. Default false. -->
+ <!-- <transparent></transparent> -->
+
+ <!-- Whether the window is initially visible. Optional. Default false. -->
+ <!-- <visible></visible> -->
+
+ <!-- Whether the user can minimize the window. Optional. Default true. -->
+ <!-- <minimizable></minimizable> -->
+
+ <!-- Whether the user can maximize the window. Optional. Default true. -->
+ <!-- <maximizable></maximizable> -->
+
+ <!-- Whether the user can resize the window. Optional. Default true. -->
+ <!-- <resizable></resizable> -->
+
+ <!-- The window's initial width. Optional. -->
+ <!-- <width></width> -->
+
+ <!-- The window's initial height. Optional. -->
+ <!-- <height></height> -->
+
+ <!-- The window's initial x position. Optional. -->
+ <!-- <x></x> -->
+
+ <!-- The window's initial y position. Optional. -->
+ <!-- <y></y> -->
+
+ <!-- The window's minimum size, specified as a width/height pair, such as "400 200". Optional. -->
+ <!-- <minSize></minSize> -->
+
+ <!-- The window's initial maximum size, specified as a width/height pair, such as "1600 1200". Optional. -->
+ <!-- <maxSize></maxSize> -->
+ </initialWindow>
+
+ <!-- The subpath of the standard default installation location to use. Optional. -->
+ <!-- <installFolder></installFolder> -->
+
+ <!-- The subpath of the Windows Start/Programs menu to use. Optional. -->
+ <!-- <programMenuFolder></programMenuFolder> -->
+
<!-- The icon the system uses for the application. For at least one resolution,
- specify the path to a PNG file included in the AIR package. Optional. -->
+ specify the path to a PNG file included in the AIR package. Optional. -->
<icon>
<image16x16>images/icons/tdfx_16.png</image16x16>
<image32x32>images/icons/tdfx_32.png</image32x32>
<image48x48>images/icons/tdfx_48.png</image48x48>
<image128x128>images/icons/tdfx_128.png</image128x128>
- </icon>
-
+ </icon>
+
<!-- Whether the application handles the update when a user double-clicks an update version
of the AIR file (true), or the default AIR application installer handles the update (false).
- Optional. Default false. -->
- <!-- <customUpdateUI></customUpdateUI> -->
-
+ Optional. Default false. -->
+ <!-- <customUpdateUI></customUpdateUI> -->
+
<!-- Whether the application can be launched when the user clicks a link in a web browser.
- Optional. Default false. -->
- <allowBrowserInvocation>true</allowBrowserInvocation>
-
- <!-- Listing of file types for which the application can register. Optional. -->
- <!-- <fileTypes> -->
-
- <!-- Defines one file type. Optional. -->
- <!-- <fileType> -->
-
- <!-- The name that the system displays for the registered file type. Required. -->
- <!-- <name></name> -->
-
- <!-- The extension to register. Required. -->
- <!-- <extension></extension> -->
-
- <!-- The description of the file type. Optional. -->
- <!-- <description></description> -->
-
- <!-- The MIME type. Optional. -->
- <!-- <contentType></contentType> -->
-
- <!-- The icon to display for the file type. Optional. -->
- <!--
- <icon>
- <image16x16>images/icons/16x16-Icon.png</image16x16>
- <image32x32>images/icons/32x32-Icon.png</image32x32>
- <image48x48>images/icons/48x48-Icon.png</image48x48>
- <image128x128>images/icons/128x128-Icon.png</image128x128>
- </icon>
- -->
-
- <!-- </fileType> -->
- <!-- </fileTypes> -->
-
-</application>
+ Optional. Default false. -->
+ <allowBrowserInvocation>true</allowBrowserInvocation>
+
+ <!-- Listing of file types for which the application can register. Optional. -->
+ <!-- <fileTypes> -->
+
+ <!-- Defines one file type. Optional. -->
+ <!-- <fileType> -->
+
+ <!-- The name that the system displays for the registered file type. Required. -->
+ <!-- <name></name> -->
+
+ <!-- The extension to register. Required. -->
+ <!-- <extension></extension> -->
+
+ <!-- The description of the file type. Optional. -->
+ <!-- <description></description> -->
+
+ <!-- The MIME type. Optional. -->
+ <!-- <contentType></contentType> -->
+
+ <!-- The icon to display for the file type. Optional. -->
+ <!--
+ <icon>
+ <image16x16>images/icons/16x16-Icon.png</image16x16>
+ <image32x32>images/icons/32x32-Icon.png</image32x32>
+ <image48x48>images/icons/48x48-Icon.png</image48x48>
+ <image128x128>images/icons/128x128-Icon.png</image128x128>
+ </icon>
+ -->
+
+ <!-- </fileType> -->
+ <!-- </fileTypes> -->
+
+</application>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as b/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as
index 4a69b36..20a3b38 100644
--- a/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as
+++ b/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as
@@ -16,40 +16,40 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package classes
-{
- import air.update.ApplicationUpdaterUI;
- import air.update.events.UpdateEvent;
-
- import flash.desktop.NativeApplication;
- import flash.events.ErrorEvent;
- import flash.events.Event;
-
- import mx.controls.Alert;
-
- public class ApplicationUpdaterManager
- {
- private var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();
-
- public function ApplicationUpdaterManager()
- {
- appUpdater.updateURL = Config.APP_UPDATER_URL;
- appUpdater.isCheckForUpdateVisible = false;
- //appUpdater.isInstallUpdateVisible = false;
- appUpdater.addEventListener(ErrorEvent.ERROR, appUpdater_error);
- appUpdater.addEventListener(UpdateEvent.INITIALIZED, appUpdater_update);
- appUpdater.initialize();
- }
-
- private function appUpdater_update(event:UpdateEvent):void
- {
- appUpdater.checkNow();
- }
-
- private function appUpdater_error(event:ErrorEvent):void
- {
- Alert.show(event.toString());
- }
-
- }
+package classes
+{
+ import air.update.ApplicationUpdaterUI;
+ import air.update.events.UpdateEvent;
+
+ import flash.desktop.NativeApplication;
+ import flash.events.ErrorEvent;
+ import flash.events.Event;
+
+ import mx.controls.Alert;
+
+ public class ApplicationUpdaterManager
+ {
+ private var appUpdater:ApplicationUpdaterUI = new ApplicationUpdaterUI();
+
+ public function ApplicationUpdaterManager()
+ {
+ appUpdater.updateURL = Config.APP_UPDATER_URL;
+ appUpdater.isCheckForUpdateVisible = false;
+ //appUpdater.isInstallUpdateVisible = false;
+ appUpdater.addEventListener(ErrorEvent.ERROR, appUpdater_error);
+ appUpdater.addEventListener(UpdateEvent.INITIALIZED, appUpdater_update);
+ appUpdater.initialize();
+ }
+
+ private function appUpdater_update(event:UpdateEvent):void
+ {
+ appUpdater.checkNow();
+ }
+
+ private function appUpdater_error(event:ErrorEvent):void
+ {
+ Alert.show(event.toString());
+ }
+
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/classes/Document.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/Document.as b/TourDeFlex/TourDeFlex/src/classes/Document.as
index e029609..909ae65 100644
--- a/TourDeFlex/TourDeFlex/src/classes/Document.as
+++ b/TourDeFlex/TourDeFlex/src/classes/Document.as
@@ -16,20 +16,20 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package classes
-{
- public class Document
- {
- public var name:String = "";
- public var path:String = "";
- public var openLinksExternal:String = "";
-
- public function Document(name:String = "", path:String = "", openLinksExternal:String = "")
- {
- this.name = name;
- this.path = path;
- this.openLinksExternal = openLinksExternal;
- }
-
- }
+package classes
+{
+ public class Document
+ {
+ public var name:String = "";
+ public var path:String = "";
+ public var openLinksExternal:String = "";
+
+ public function Document(name:String = "", path:String = "", openLinksExternal:String = "")
+ {
+ this.name = name;
+ this.path = path;
+ this.openLinksExternal = openLinksExternal;
+ }
+
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/classes/LocalQuickStart.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/LocalQuickStart.as b/TourDeFlex/TourDeFlex/src/classes/LocalQuickStart.as
index f3cbdbf..3e44e8b 100644
--- a/TourDeFlex/TourDeFlex/src/classes/LocalQuickStart.as
+++ b/TourDeFlex/TourDeFlex/src/classes/LocalQuickStart.as
@@ -16,144 +16,144 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package classes
-{
- /********************************
- * This class has been deprecated
- *********************************/
-
-
- import flash.events.Event;
- import flash.events.IOErrorEvent;
- import flash.filesystem.File;
- import flash.filesystem.FileMode;
- import flash.filesystem.FileStream;
- import flash.net.SharedObject;
- import flash.net.URLLoader;
- import flash.net.URLRequest;
- import flash.system.Capabilities;
-
- public class LocalQuickStart
- {
-
- //--------------------------------------------------------------------------
- // Variables
- //--------------------------------------------------------------------------
- public static var url:String = "quickstart.html";
-
- private static var cookieName:String = "TourDeFlex";
- private static var onlineVersion:String = "";
- private static var localLanguage:String = "en";
- private static var onlineVersionUrl:String = "";
-
-
- //--------------------------------------------------------------------------
- // Load/setup
- //--------------------------------------------------------------------------
- public function LocalQuickStart()
- {
- }
-
- public static function update():void
- {
- var staticContainerPath:String = "data/";
- var updatableFile:File = File.applicationStorageDirectory.resolvePath(url);
- var staticFile:File = File.applicationDirectory.resolvePath(staticContainerPath + url);
-
- localLanguage = Capabilities.language.toLowerCase();
- //localLanguage = "jp";
-
- if(localLanguage != "en")
- {
- var newUrl:String = Config.appendLanguage(url, localLanguage);
- var newStaticFile:File = File.applicationDirectory.resolvePath(staticContainerPath + newUrl);
- if(newStaticFile.exists)
- staticFile = newStaticFile;
- }
-
- if(Config.isAppFirstTimeRun() || !updatableFile.exists)
- staticFile.copyTo(updatableFile, true);
-
- url = updatableFile.url;
-
- checkForNewLocalQuickStart();
- }
-
- //--------------------------------------------------------------------------
- // Helper/shared functions
- //--------------------------------------------------------------------------
- private static function checkForNewLocalQuickStart():void
- {
- var loader:URLLoader = new URLLoader(new URLRequest(Config.QUICK_START_LOCAL_UPDATER_URL));
- loader.addEventListener(Event.COMPLETE, updaterXmlLoaded);
- loader.addEventListener(IOErrorEvent.IO_ERROR, updaterXmlLoadedError);
- }
-
- private static function updaterXmlLoadedError(event:IOErrorEvent):void
- {
- }
-
- private static function updaterXmlLoaded(event:Event):void
- {
- var loader:URLLoader = URLLoader(event.target);
- var updaterXml:XML = new XML(loader.data);
-
- var currentVersion:String = "0";
- var cookie:SharedObject = SharedObject.getLocal(cookieName);
- if(cookie.data.localQuickStartVersion != null)
- currentVersion = cookie.data.localQuickStartVersion;
-
- onlineVersion = updaterXml.version;
- var onlineVersionDescription:String = updaterXml.description;
-
- if(onlineVersion > currentVersion)
- {
- onlineVersionUrl = updaterXml.url;
- downloadNewVersion(onlineVersionUrl);
- if(onlineVersionDescription.length > 0)
- {
- // Only show notice if a description was provided, otherwise, silent install
- //Alert.show(onlineVersionDescription, "Updated to Version " + onlineVersion);
- }
- }
- }
-
- private static function downloadNewVersion(path:String):void
- {
- if(localLanguage != "en")
- path = Config.appendLanguage(path, localLanguage);
-
- var loader:URLLoader = new URLLoader(new URLRequest(path));
- loader.addEventListener(Event.COMPLETE, updatedVersionLoaded);
- loader.addEventListener(IOErrorEvent.IO_ERROR, updatedVersionLoadingError);
- }
-
- private static function updatedVersionLoadingError(event:IOErrorEvent):void
- {
- var loader:URLLoader = new URLLoader(new URLRequest(onlineVersionUrl));
- loader.addEventListener(Event.COMPLETE, updatedVersionLoaded);
- loader.addEventListener(IOErrorEvent.IO_ERROR, updatedVersionLoadingError);
- }
-
- private static function updatedVersionLoaded(event:Event):void
- {
- var file:File = File.applicationStorageDirectory;
- file = file.resolvePath(url);
- if(file.exists)
- file.deleteFile();
-
- var loader:URLLoader = URLLoader(event.target);
-
- var fileStream:FileStream = new FileStream();
- fileStream.open(file, FileMode.WRITE);
- fileStream.writeUTFBytes(loader.data);
- fileStream.close();
-
- var cookie:SharedObject = SharedObject.getLocal(cookieName);
- cookie.data.localQuickStartVersion = onlineVersion;
- cookie.flush();
- }
- //--------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- }
+package classes
+{
+ /********************************
+ * This class has been deprecated
+ *********************************/
+
+
+ import flash.events.Event;
+ import flash.events.IOErrorEvent;
+ import flash.filesystem.File;
+ import flash.filesystem.FileMode;
+ import flash.filesystem.FileStream;
+ import flash.net.SharedObject;
+ import flash.net.URLLoader;
+ import flash.net.URLRequest;
+ import flash.system.Capabilities;
+
+ public class LocalQuickStart
+ {
+
+ //--------------------------------------------------------------------------
+ // Variables
+ //--------------------------------------------------------------------------
+ public static var url:String = "quickstart.html";
+
+ private static var cookieName:String = "TourDeFlex";
+ private static var onlineVersion:String = "";
+ private static var localLanguage:String = "en";
+ private static var onlineVersionUrl:String = "";
+
+
+ //--------------------------------------------------------------------------
+ // Load/setup
+ //--------------------------------------------------------------------------
+ public function LocalQuickStart()
+ {
+ }
+
+ public static function update():void
+ {
+ var staticContainerPath:String = "data/";
+ var updatableFile:File = File.applicationStorageDirectory.resolvePath(url);
+ var staticFile:File = File.applicationDirectory.resolvePath(staticContainerPath + url);
+
+ localLanguage = Capabilities.language.toLowerCase();
+ //localLanguage = "jp";
+
+ if(localLanguage != "en")
+ {
+ var newUrl:String = Config.appendLanguage(url, localLanguage);
+ var newStaticFile:File = File.applicationDirectory.resolvePath(staticContainerPath + newUrl);
+ if(newStaticFile.exists)
+ staticFile = newStaticFile;
+ }
+
+ if(Config.isAppFirstTimeRun() || !updatableFile.exists)
+ staticFile.copyTo(updatableFile, true);
+
+ url = updatableFile.url;
+
+ checkForNewLocalQuickStart();
+ }
+
+ //--------------------------------------------------------------------------
+ // Helper/shared functions
+ //--------------------------------------------------------------------------
+ private static function checkForNewLocalQuickStart():void
+ {
+ var loader:URLLoader = new URLLoader(new URLRequest(Config.QUICK_START_LOCAL_UPDATER_URL));
+ loader.addEventListener(Event.COMPLETE, updaterXmlLoaded);
+ loader.addEventListener(IOErrorEvent.IO_ERROR, updaterXmlLoadedError);
+ }
+
+ private static function updaterXmlLoadedError(event:IOErrorEvent):void
+ {
+ }
+
+ private static function updaterXmlLoaded(event:Event):void
+ {
+ var loader:URLLoader = URLLoader(event.target);
+ var updaterXml:XML = new XML(loader.data);
+
+ var currentVersion:String = "0";
+ var cookie:SharedObject = SharedObject.getLocal(cookieName);
+ if(cookie.data.localQuickStartVersion != null)
+ currentVersion = cookie.data.localQuickStartVersion;
+
+ onlineVersion = updaterXml.version;
+ var onlineVersionDescription:String = updaterXml.description;
+
+ if(onlineVersion > currentVersion)
+ {
+ onlineVersionUrl = updaterXml.url;
+ downloadNewVersion(onlineVersionUrl);
+ if(onlineVersionDescription.length > 0)
+ {
+ // Only show notice if a description was provided, otherwise, silent install
+ //Alert.show(onlineVersionDescription, "Updated to Version " + onlineVersion);
+ }
+ }
+ }
+
+ private static function downloadNewVersion(path:String):void
+ {
+ if(localLanguage != "en")
+ path = Config.appendLanguage(path, localLanguage);
+
+ var loader:URLLoader = new URLLoader(new URLRequest(path));
+ loader.addEventListener(Event.COMPLETE, updatedVersionLoaded);
+ loader.addEventListener(IOErrorEvent.IO_ERROR, updatedVersionLoadingError);
+ }
+
+ private static function updatedVersionLoadingError(event:IOErrorEvent):void
+ {
+ var loader:URLLoader = new URLLoader(new URLRequest(onlineVersionUrl));
+ loader.addEventListener(Event.COMPLETE, updatedVersionLoaded);
+ loader.addEventListener(IOErrorEvent.IO_ERROR, updatedVersionLoadingError);
+ }
+
+ private static function updatedVersionLoaded(event:Event):void
+ {
+ var file:File = File.applicationStorageDirectory;
+ file = file.resolvePath(url);
+ if(file.exists)
+ file.deleteFile();
+
+ var loader:URLLoader = URLLoader(event.target);
+
+ var fileStream:FileStream = new FileStream();
+ fileStream.open(file, FileMode.WRITE);
+ fileStream.writeUTFBytes(loader.data);
+ fileStream.close();
+
+ var cookie:SharedObject = SharedObject.getLocal(cookieName);
+ cookie.data.localQuickStartVersion = onlineVersion;
+ cookie.flush();
+ }
+ //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/classes/ObjectData.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/ObjectData.as b/TourDeFlex/TourDeFlex/src/classes/ObjectData.as
index 01ef169..e9125fd 100644
--- a/TourDeFlex/TourDeFlex/src/classes/ObjectData.as
+++ b/TourDeFlex/TourDeFlex/src/classes/ObjectData.as
@@ -16,321 +16,321 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package classes
-{
- import flash.desktop.NativeApplication;
- import flash.events.Event;
- import flash.events.IOErrorEvent;
- import flash.filesystem.File;
- import flash.filesystem.FileMode;
- import flash.filesystem.FileStream;
- import flash.net.URLLoader;
- import flash.net.URLRequest;
-
- import mx.collections.ArrayCollection;
- import mx.collections.Sort;
- import mx.collections.SortField;
- import mx.collections.XMLListCollection;
- import mx.controls.Alert;
- import mx.managers.CursorManager;
-
- import plugin.Component; //HS
-
- public class ObjectData
- {
- //--------------------------------------------------------------------------
- // Variables
- //--------------------------------------------------------------------------
- [Bindable] public var topLevelCategoriesXml:XMLList;
- [Bindable] public var listXml:XMLListCollection;
- [Bindable] public var treeXml:XMLListCollection;
- [Bindable] public var featuredTreeXml:XMLListCollection;
- [Bindable] public var searchTags:Array;
- private var objectXml:XML;
- private var selectedTopLevelCategory:String = "";
- private var previousSortType:String;
-
- //--------------------------------------------------------------------------
- // Loading/setup
- //--------------------------------------------------------------------------
- public function ObjectData()
- {
- loadData();
- }
-
- public function loadData():void
- {
- var objectsUrl:String = Config.OBJECTS_URL;
- trace(objectsUrl);
- var updatableObjectFile:File = File.applicationStorageDirectory.resolvePath(Config.OBJECTS_FILE);
- var staticObjectFile:File = File.applicationDirectory.resolvePath(Config.OBJECTS_URL);
-
- if(Config.isAppFirstTimeRun() || !updatableObjectFile.exists)
- staticObjectFile.copyTo(updatableObjectFile, true);
-
- var loader:URLLoader = new URLLoader(new URLRequest("file://" + updatableObjectFile.nativePath));
- loader.addEventListener(Event.COMPLETE, objectsXmlLoaded);
- }
-
- private function objectsXmlLoaded(event:Event):void
- {
- trace("OBJECTS LOADED");
- var loader:URLLoader = URLLoader(event.target);
- objectXml = new XML(loader.data);
-
- loadSettings();
- loadCategoriesAndObjects()
- checkForNewObjectXml();
- }
-
- private function loadCategoriesAndObjects():void
- {
- Config.OBJECTS_FILE_VERSION = objectXml.@version;
- Config.OBJECTS_TOTAL = XMLList(objectXml..Object).length();
-
- var searchTagsLabels:Array = String(objectXml.@searchTags).split(",");
- var searchTagsTotals:Array = String(objectXml.@searchTagsTotals).split(",");
- var searchTagsCombined:Array = new Array();
-
- for(var i:int=0; i<searchTagsLabels.length; i++)
- searchTagsCombined.push([searchTagsLabels[i], searchTagsTotals[i]]);
-
- searchTags = searchTagsCombined;
-
- topLevelCategoriesXml = new XMLList(objectXml.children().@name);
- selectedTopLevelCategory = topLevelCategoriesXml[0];
- filterTopLevelCategory(selectedTopLevelCategory);
- }
-
- //--------------------------------------------------------------------------
- // Filtering
- //--------------------------------------------------------------------------
- public function filterTopLevelCategory(category:String):void
- {
- selectedTopLevelCategory = category;
- listXml = new XMLListCollection(objectXml.Category.(@name == category)..Object);
- //treeXml = new XMLListCollection(XMLList(objectXml.Category.(@name == category)));
- treeXml = new XMLListCollection(XMLList(objectXml.Category));
- }
-
- public function filterList(filterText:String, onlyTags:Boolean = false):XMLList // HS
- {
- filterText = filterText.toLowerCase();
- var filterTextTerms:Array = filterText.split(" ");
- var filteredList:XMLList = new XMLList();
-
- //for each(var objectItem:XML in objectXml.Category.(@name == selectedTopLevelCategory)..Object)
- //for each(var objectItem:XML in objectXml..Object)
-
- var objectsToSearch:XML = objectXml.copy();
- delete objectsToSearch.Category.(@name == "Featured").*;
-
- for each(var objectItem:XML in objectsToSearch..Object)
- {
- var name:String = objectItem.@name.toLowerCase();
- var tags:String = objectItem.@tags.toLowerCase();
- var author:String = objectItem.@author.toLowerCase();
-
- for each(var term:String in filterTextTerms)
- {
- var found:Boolean = false;
- if(onlyTags)
- {
- if(tags.indexOf(term) != -1)
- found = true;
- }
- else
- {
- if(name.indexOf(term) != -1 || author.indexOf(term) != -1 || tags.indexOf(term) != -1)
- found = true;
- }
-
- if(found)
- {
- filteredList += objectItem;
- break;
- }
- }
- }
-
- listXml = new XMLListCollection(filteredList);
- sort(previousSortType);
- return filteredList; //HS
- }
-
- public function sort(sortType:String = ObjectListSortTypes.ALPHABETICAL):void
- {
- previousSortType = sortType;
- var sortField:String = "@name";
- var descending:Boolean = false;
- var numeric:Boolean = false;
-
- switch(sortType)
- {
- case ObjectListSortTypes.ALPHABETICAL:
- sortField = "@name";
- break;
- case ObjectListSortTypes.MOST_RECENT:
- sortField = "@dateAdded";
- descending = true;
- break;
- case ObjectListSortTypes.MOST_POPULAR:
- sortField = "@viewCount";
- descending = true;
- numeric = true;
- break;
- }
-
- var sort:Sort = new Sort();
- sort.fields = [new SortField(sortField, true, descending, numeric)];
- listXml.sort = sort;
- listXml.refresh();
- }
-
- //--------------------------------------------------------------------------
- // Settings / localization
- //--------------------------------------------------------------------------
- private function loadSettings():void
- {
- Config.PROGRAM_TITLE = objectXml.Settings.@title;
- Config.ABOUT_MENU_LIST = objectXml.Settings.AboutMenu.Item;
- Config.ABOUT_MENU_TITLE = objectXml.Settings.AboutMenu.@title;
-
- var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
- var ns:Namespace = appXml.namespace();
- Config.APP_VERSION = appXml.ns::version;
- }
-
- //--------------------------------------------------------------------------
- // Checking for new objects.xml and updating it
- //--------------------------------------------------------------------------
- private function checkForNewObjectXml():void
- {
- var loader:URLLoader = new URLLoader(new URLRequest(Config.OBJECTS_UPDATER_URL));
- loader.addEventListener(Event.COMPLETE, objectsUpdaterXmlLoaded);
- loader.addEventListener(IOErrorEvent.IO_ERROR, objectsUpdaterXmlLoadedError);
- }
-
- private function objectsUpdaterXmlLoadedError(event:IOErrorEvent):void
- {
- }
-
- private function objectsUpdaterXmlLoaded(event:Event):void
- {
- var loader:URLLoader = URLLoader(event.target);
- var objectsUpdaterXml:XML = new XML(loader.data);
-
- var currentVersion:String = objectXml.@version;
- var onlineVersion:String = objectsUpdaterXml.version;
- var onlineVersionDescription:String = objectsUpdaterXml.description;
-
- if(onlineVersion > currentVersion) {
- downloadNewObjectXml(objectsUpdaterXml.url);
- if(onlineVersionDescription.length > 0) {
- // Only show notice if a description was provided, otherwise, silent install
- var myPattern:RegExp = /\r\n/g;
- onlineVersionDescription = onlineVersionDescription.replace(myPattern,"\n");
- Alert.show(onlineVersionDescription, "Samples Database Updated to Version " + onlineVersion);
- }
- }
- }
-
- private function downloadNewObjectXml(path:String):void
- {
- var loader:URLLoader = new URLLoader(new URLRequest(path));
- loader.addEventListener(Event.COMPLETE, updatedObjectsXmlLoaded);
- CursorManager.setBusyCursor();
- }
-
- public function updatedObjectsXmlLoaded(event:Event):void
- {
- var file:File = File.applicationStorageDirectory;
- file = file.resolvePath(Config.OBJECTS_FILE);
- if(file.exists)
- file.deleteFile();
-
- var loader:URLLoader = URLLoader(event.target);
-
- objectXml = new XML(loader.data);
- loadSettings();
- loadCategoriesAndObjects();
-
- var fileStream:FileStream = new FileStream();
- fileStream.open(file, FileMode.WRITE);
- fileStream.writeUTFBytes(objectXml.toXMLString());
- fileStream.close();
- CursorManager.removeBusyCursor();
-
- }
- //--------------------------------------------------------------------------
- //--------------------------------------------------------------------------
- //------------------------------------------------------------------------
- // Convert the XML objects into Component objects so they map to the remote
- // java object for easier processing by plug-in. HS
- //------------------------------------------------------------------------
- private function createComponentsFromXML(xmlList:XMLList):ArrayCollection
- {
- var objectsAsComponents:ArrayCollection = new ArrayCollection();
- for each(var object:XML in xmlList)
- {
- trace("Component name " + object.attribute("name") + " id " + object.attribute("id"));
- var c:Component = new Component();
- c.id = object.attribute("id");
- c.name = object.attribute("name");
- c.author = object.attribute("author");
- c.description = object.attribute("description");
- objectsAsComponents.addItem(c);
- }
- return objectsAsComponents;
- }
- //-----------------------------------------------------
- // Find the matching components based on the search string
- // passed from the Eclipse plug-in and add them to an Array
- // Collection as component objects for return via Merapi. HS
- //-----------------------------------------------------
- public function getFilteredComponents(filter:String):ArrayCollection
- {
- // First setup the XML list based on the search string from the plugin
- var resultList:XMLList = filterList(filter);
- var objectsAsComponents:ArrayCollection = createComponentsFromXML(resultList);
- return objectsAsComponents;
- }
- //-----------------------------------------------------
- // Fetch the list of featured components and convert them
- // to component objects and add them to the array collection
- // that will be returned to the eclipse plug-in. HS
- //-----------------------------------------------------
- public function getFeaturedComponents():ArrayCollection
- {
- // First setup the XML list based on the search string from the plugin
- // Featured Components are the first child in the object XML...
-
- var featXml:XML = objectXml.children()[0];
- trace("Top level categories: " + featXml + objectXml.contains("Category"));
- var featObjsList:XMLList = featXml.descendants("Object")
- var objectsAsComponents:ArrayCollection = createComponentsFromXML(featObjsList);
- return objectsAsComponents;
-
- }
- //-----------------------------------------------------
- // Fetch the XML object for the id that was passed in
- // from the Eclipse plug-in so we can navigate to that
- // object for display. HS
- //-----------------------------------------------------
- public function getXMLForObjectId(matchId:String):XML {
- var objects:XMLList = XMLList(objectXml..Object);
- for each(var objectItem:XML in objects) {
- var id:String = objectItem.@id.toLowerCase();
- var name:String = objectItem.@name.toLowerCase();
- var tags:String = objectItem.@tags.toLowerCase();
- var author:String = objectItem.@author.toLowerCase();
- if (id == matchId) {
- trace("NAME: " + name + " id " + id);
- return objectItem;
- }
- }
- return null;
- }
-
- }
+package classes
+{
+ import flash.desktop.NativeApplication;
+ import flash.events.Event;
+ import flash.events.IOErrorEvent;
+ import flash.filesystem.File;
+ import flash.filesystem.FileMode;
+ import flash.filesystem.FileStream;
+ import flash.net.URLLoader;
+ import flash.net.URLRequest;
+
+ import mx.collections.ArrayCollection;
+ import mx.collections.Sort;
+ import mx.collections.SortField;
+ import mx.collections.XMLListCollection;
+ import mx.controls.Alert;
+ import mx.managers.CursorManager;
+
+ import plugin.Component; //HS
+
+ public class ObjectData
+ {
+ //--------------------------------------------------------------------------
+ // Variables
+ //--------------------------------------------------------------------------
+ [Bindable] public var topLevelCategoriesXml:XMLList;
+ [Bindable] public var listXml:XMLListCollection;
+ [Bindable] public var treeXml:XMLListCollection;
+ [Bindable] public var featuredTreeXml:XMLListCollection;
+ [Bindable] public var searchTags:Array;
+ private var objectXml:XML;
+ private var selectedTopLevelCategory:String = "";
+ private var previousSortType:String;
+
+ //--------------------------------------------------------------------------
+ // Loading/setup
+ //--------------------------------------------------------------------------
+ public function ObjectData()
+ {
+ loadData();
+ }
+
+ public function loadData():void
+ {
+ var objectsUrl:String = Config.OBJECTS_URL;
+ trace(objectsUrl);
+ var updatableObjectFile:File = File.applicationStorageDirectory.resolvePath(Config.OBJECTS_FILE);
+ var staticObjectFile:File = File.applicationDirectory.resolvePath(Config.OBJECTS_URL);
+
+ if(Config.isAppFirstTimeRun() || !updatableObjectFile.exists)
+ staticObjectFile.copyTo(updatableObjectFile, true);
+
+ var loader:URLLoader = new URLLoader(new URLRequest("file://" + updatableObjectFile.nativePath));
+ loader.addEventListener(Event.COMPLETE, objectsXmlLoaded);
+ }
+
+ private function objectsXmlLoaded(event:Event):void
+ {
+ trace("OBJECTS LOADED");
+ var loader:URLLoader = URLLoader(event.target);
+ objectXml = new XML(loader.data);
+
+ loadSettings();
+ loadCategoriesAndObjects()
+ checkForNewObjectXml();
+ }
+
+ private function loadCategoriesAndObjects():void
+ {
+ Config.OBJECTS_FILE_VERSION = objectXml.@version;
+ Config.OBJECTS_TOTAL = XMLList(objectXml..Object).length();
+
+ var searchTagsLabels:Array = String(objectXml.@searchTags).split(",");
+ var searchTagsTotals:Array = String(objectXml.@searchTagsTotals).split(",");
+ var searchTagsCombined:Array = new Array();
+
+ for(var i:int=0; i<searchTagsLabels.length; i++)
+ searchTagsCombined.push([searchTagsLabels[i], searchTagsTotals[i]]);
+
+ searchTags = searchTagsCombined;
+
+ topLevelCategoriesXml = new XMLList(objectXml.children().@name);
+ selectedTopLevelCategory = topLevelCategoriesXml[0];
+ filterTopLevelCategory(selectedTopLevelCategory);
+ }
+
+ //--------------------------------------------------------------------------
+ // Filtering
+ //--------------------------------------------------------------------------
+ public function filterTopLevelCategory(category:String):void
+ {
+ selectedTopLevelCategory = category;
+ listXml = new XMLListCollection(objectXml.Category.(@name == category)..Object);
+ //treeXml = new XMLListCollection(XMLList(objectXml.Category.(@name == category)));
+ treeXml = new XMLListCollection(XMLList(objectXml.Category));
+ }
+
+ public function filterList(filterText:String, onlyTags:Boolean = false):XMLList // HS
+ {
+ filterText = filterText.toLowerCase();
+ var filterTextTerms:Array = filterText.split(" ");
+ var filteredList:XMLList = new XMLList();
+
+ //for each(var objectItem:XML in objectXml.Category.(@name == selectedTopLevelCategory)..Object)
+ //for each(var objectItem:XML in objectXml..Object)
+
+ var objectsToSearch:XML = objectXml.copy();
+ delete objectsToSearch.Category.(@name == "Featured").*;
+
+ for each(var objectItem:XML in objectsToSearch..Object)
+ {
+ var name:String = objectItem.@name.toLowerCase();
+ var tags:String = objectItem.@tags.toLowerCase();
+ var author:String = objectItem.@author.toLowerCase();
+
+ for each(var term:String in filterTextTerms)
+ {
+ var found:Boolean = false;
+ if(onlyTags)
+ {
+ if(tags.indexOf(term) != -1)
+ found = true;
+ }
+ else
+ {
+ if(name.indexOf(term) != -1 || author.indexOf(term) != -1 || tags.indexOf(term) != -1)
+ found = true;
+ }
+
+ if(found)
+ {
+ filteredList += objectItem;
+ break;
+ }
+ }
+ }
+
+ listXml = new XMLListCollection(filteredList);
+ sort(previousSortType);
+ return filteredList; //HS
+ }
+
+ public function sort(sortType:String = ObjectListSortTypes.ALPHABETICAL):void
+ {
+ previousSortType = sortType;
+ var sortField:String = "@name";
+ var descending:Boolean = false;
+ var numeric:Boolean = false;
+
+ switch(sortType)
+ {
+ case ObjectListSortTypes.ALPHABETICAL:
+ sortField = "@name";
+ break;
+ case ObjectListSortTypes.MOST_RECENT:
+ sortField = "@dateAdded";
+ descending = true;
+ break;
+ case ObjectListSortTypes.MOST_POPULAR:
+ sortField = "@viewCount";
+ descending = true;
+ numeric = true;
+ break;
+ }
+
+ var sort:Sort = new Sort();
+ sort.fields = [new SortField(sortField, true, descending, numeric)];
+ listXml.sort = sort;
+ listXml.refresh();
+ }
+
+ //--------------------------------------------------------------------------
+ // Settings / localization
+ //--------------------------------------------------------------------------
+ private function loadSettings():void
+ {
+ Config.PROGRAM_TITLE = objectXml.Settings.@title;
+ Config.ABOUT_MENU_LIST = objectXml.Settings.AboutMenu.Item;
+ Config.ABOUT_MENU_TITLE = objectXml.Settings.AboutMenu.@title;
+
+ var appXml:XML = NativeApplication.nativeApplication.applicationDescriptor;
+ var ns:Namespace = appXml.namespace();
+ Config.APP_VERSION = appXml.ns::version;
+ }
+
+ //--------------------------------------------------------------------------
+ // Checking for new objects.xml and updating it
+ //--------------------------------------------------------------------------
+ private function checkForNewObjectXml():void
+ {
+ var loader:URLLoader = new URLLoader(new URLRequest(Config.OBJECTS_UPDATER_URL));
+ loader.addEventListener(Event.COMPLETE, objectsUpdaterXmlLoaded);
+ loader.addEventListener(IOErrorEvent.IO_ERROR, objectsUpdaterXmlLoadedError);
+ }
+
+ private function objectsUpdaterXmlLoadedError(event:IOErrorEvent):void
+ {
+ }
+
+ private function objectsUpdaterXmlLoaded(event:Event):void
+ {
+ var loader:URLLoader = URLLoader(event.target);
+ var objectsUpdaterXml:XML = new XML(loader.data);
+
+ var currentVersion:String = objectXml.@version;
+ var onlineVersion:String = objectsUpdaterXml.version;
+ var onlineVersionDescription:String = objectsUpdaterXml.description;
+
+ if(onlineVersion > currentVersion) {
+ downloadNewObjectXml(objectsUpdaterXml.url);
+ if(onlineVersionDescription.length > 0) {
+ // Only show notice if a description was provided, otherwise, silent install
+ var myPattern:RegExp = /\r\n/g;
+ onlineVersionDescription = onlineVersionDescription.replace(myPattern,"\n");
+ Alert.show(onlineVersionDescription, "Samples Database Updated to Version " + onlineVersion);
+ }
+ }
+ }
+
+ private function downloadNewObjectXml(path:String):void
+ {
+ var loader:URLLoader = new URLLoader(new URLRequest(path));
+ loader.addEventListener(Event.COMPLETE, updatedObjectsXmlLoaded);
+ CursorManager.setBusyCursor();
+ }
+
+ public function updatedObjectsXmlLoaded(event:Event):void
+ {
+ var file:File = File.applicationStorageDirectory;
+ file = file.resolvePath(Config.OBJECTS_FILE);
+ if(file.exists)
+ file.deleteFile();
+
+ var loader:URLLoader = URLLoader(event.target);
+
+ objectXml = new XML(loader.data);
+ loadSettings();
+ loadCategoriesAndObjects();
+
+ var fileStream:FileStream = new FileStream();
+ fileStream.open(file, FileMode.WRITE);
+ fileStream.writeUTFBytes(objectXml.toXMLString());
+ fileStream.close();
+ CursorManager.removeBusyCursor();
+
+ }
+ //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+ //------------------------------------------------------------------------
+ // Convert the XML objects into Component objects so they map to the remote
+ // java object for easier processing by plug-in. HS
+ //------------------------------------------------------------------------
+ private function createComponentsFromXML(xmlList:XMLList):ArrayCollection
+ {
+ var objectsAsComponents:ArrayCollection = new ArrayCollection();
+ for each(var object:XML in xmlList)
+ {
+ trace("Component name " + object.attribute("name") + " id " + object.attribute("id"));
+ var c:Component = new Component();
+ c.id = object.attribute("id");
+ c.name = object.attribute("name");
+ c.author = object.attribute("author");
+ c.description = object.attribute("description");
+ objectsAsComponents.addItem(c);
+ }
+ return objectsAsComponents;
+ }
+ //-----------------------------------------------------
+ // Find the matching components based on the search string
+ // passed from the Eclipse plug-in and add them to an Array
+ // Collection as component objects for return via Merapi. HS
+ //-----------------------------------------------------
+ public function getFilteredComponents(filter:String):ArrayCollection
+ {
+ // First setup the XML list based on the search string from the plugin
+ var resultList:XMLList = filterList(filter);
+ var objectsAsComponents:ArrayCollection = createComponentsFromXML(resultList);
+ return objectsAsComponents;
+ }
+ //-----------------------------------------------------
+ // Fetch the list of featured components and convert them
+ // to component objects and add them to the array collection
+ // that will be returned to the eclipse plug-in. HS
+ //-----------------------------------------------------
+ public function getFeaturedComponents():ArrayCollection
+ {
+ // First setup the XML list based on the search string from the plugin
+ // Featured Components are the first child in the object XML...
+
+ var featXml:XML = objectXml.children()[0];
+ trace("Top level categories: " + featXml + objectXml.contains("Category"));
+ var featObjsList:XMLList = featXml.descendants("Object")
+ var objectsAsComponents:ArrayCollection = createComponentsFromXML(featObjsList);
+ return objectsAsComponents;
+
+ }
+ //-----------------------------------------------------
+ // Fetch the XML object for the id that was passed in
+ // from the Eclipse plug-in so we can navigate to that
+ // object for display. HS
+ //-----------------------------------------------------
+ public function getXMLForObjectId(matchId:String):XML {
+ var objects:XMLList = XMLList(objectXml..Object);
+ for each(var objectItem:XML in objects) {
+ var id:String = objectItem.@id.toLowerCase();
+ var name:String = objectItem.@name.toLowerCase();
+ var tags:String = objectItem.@tags.toLowerCase();
+ var author:String = objectItem.@author.toLowerCase();
+ if (id == matchId) {
+ trace("NAME: " + name + " id " + id);
+ return objectItem;
+ }
+ }
+ return null;
+ }
+
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/classes/ObjectListSortTypes.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/ObjectListSortTypes.as b/TourDeFlex/TourDeFlex/src/classes/ObjectListSortTypes.as
index 166cbd4..6466fab 100644
--- a/TourDeFlex/TourDeFlex/src/classes/ObjectListSortTypes.as
+++ b/TourDeFlex/TourDeFlex/src/classes/ObjectListSortTypes.as
@@ -16,23 +16,23 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package classes
-{
- import mx.collections.ArrayCollection;
-
- public final class ObjectListSortTypes
- {
-
- public static const ALPHABETICAL:String = "Alphabetical";
- public static const MOST_RECENT:String = "Most Recent";
- public static const MOST_POPULAR:String = "Most Popular";
-
- [Bindable]
- public static var ObjectListSortTypeArray:Array = [ALPHABETICAL, MOST_RECENT, MOST_POPULAR];
-
- public function ObjectListSortTypes()
- {
- }
-
- }
+package classes
+{
+ import mx.collections.ArrayCollection;
+
+ public final class ObjectListSortTypes
+ {
+
+ public static const ALPHABETICAL:String = "Alphabetical";
+ public static const MOST_RECENT:String = "Most Recent";
+ public static const MOST_POPULAR:String = "Most Popular";
+
+ [Bindable]
+ public static var ObjectListSortTypeArray:Array = [ALPHABETICAL, MOST_RECENT, MOST_POPULAR];
+
+ public function ObjectListSortTypes()
+ {
+ }
+
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/classes/ObjectTreeDataDescriptor.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/ObjectTreeDataDescriptor.as b/TourDeFlex/TourDeFlex/src/classes/ObjectTreeDataDescriptor.as
index 17394f2..7afbafd 100644
--- a/TourDeFlex/TourDeFlex/src/classes/ObjectTreeDataDescriptor.as
+++ b/TourDeFlex/TourDeFlex/src/classes/ObjectTreeDataDescriptor.as
@@ -16,176 +16,176 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package classes
-{
- import mx.collections.ArrayCollection;
- import mx.collections.CursorBookmark;
- import mx.collections.ICollectionView;
- import mx.collections.IViewCursor;
- import mx.collections.XMLListCollection;
- import mx.controls.treeClasses.ITreeDataDescriptor;
- import mx.events.CollectionEvent;
- import mx.events.CollectionEventKind;
-
- public class ObjectTreeDataDescriptor implements ITreeDataDescriptor
- {
- public function ObjectTreeDataDescriptor()
- {
- }
-
- public function getChildren(node:Object, model:Object=null):ICollectionView
- {
- try
- {
- return new XMLListCollection(XMLList(node).children());
- }
- catch (e:Error)
- {
- trace("[Descriptor] exception checking for getChildren:" + e.toString());
- }
- return null;
- }
-
- // The isBranch method simply returns true if the node is an
- // Object with a children field.
- // It does not support empty branches, but does support null children
- // fields.
- public function isBranch(node:Object, model:Object=null):Boolean
- {
- try
- {
- if(node is Object)
- {
- if(node.children != null && XML(node).name().toString() != "Object")
- return true;
- }
- }
- catch (e:Error)
- {
- trace("[Descriptor] exception checking for isBranch");
- }
-
- return false;
- }
-
- // The hasChildren method Returns true if the
- // node actually has children.
- public function hasChildren(node:Object, model:Object=null):Boolean
- {
- if(node == null)
- return false;
-
- var children:ICollectionView = getChildren(node, model);
-
- try
- {
- if(children.length > 0)
- return true;
- }
- catch(e:Error)
- {
- trace("hasChildren: " + e.toString());
- }
-
- return false;
- }
-
- // The getData method simply returns the node as an Object.
- public function getData(node:Object, model:Object=null):Object
- {
- try
- {
- return node;
- }
- catch (e:Error)
- {
- trace("getData: " + e.toString());
- }
-
- return null;
- }
-
- // The addChildAt method does the following:
- // If the parent parameter is null or undefined, inserts
- // the child parameter as the first child of the model parameter.
- // If the parent parameter is an Object and has a children field,
- // adds the child parameter to it at the index parameter location.
- // It does not add a child to a terminal node if it does not have
- // a children field.
- public function addChildAt(parent:Object, child:Object, index:int, model:Object=null):Boolean
- {
- var event:CollectionEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
- event.kind = CollectionEventKind.ADD;
- event.items = [child];
- event.location = index;
-
- if (!parent)
- {
- var iterator:IViewCursor = model.createCursor();
- iterator.seek(CursorBookmark.FIRST, index);
- iterator.insert(child);
- }
- else if (parent is Object)
- {
- if (parent.children != null)
- {
- if(parent.children is ArrayCollection)
- {
- parent.children.addItemAt(child, index);
- if (model)
- {
- model.dispatchEvent(event);
- model.itemUpdated(parent);
- }
- return true;
- }
- else
- {
- parent.children.splice(index, 0, child);
- if(model)
- model.dispatchEvent(event);
- return true;
- }
- }
- }
- return false;
- }
-
- // The removeChildAt method does the following:
- // If the parent parameter is null or undefined,
- // removes the child at the specified index
- // in the model.
- // If the parent parameter is an Object and has a children field,
- // removes the child at the index parameter location in the parent.
- public function removeChildAt(parent:Object, child:Object, index:int, model:Object=null):Boolean
- {
- var event:CollectionEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
- event.kind = CollectionEventKind.REMOVE;
- event.items = [child];
- event.location = index;
-
- //handle top level where there is no parent
- if (!parent)
- {
- var iterator:IViewCursor = model.createCursor();
- iterator.seek(CursorBookmark.FIRST, index);
- iterator.remove();
- if (model)
- model.dispatchEvent(event);
- return true;
- }
- else if (parent is Object)
- {
- if (parent.children != undefined)
- {
- parent.children.splice(index, 1);
- if(model)
- model.dispatchEvent(event);
- return true;
- }
- }
- return false;
- }
-
- }
+package classes
+{
+ import mx.collections.ArrayCollection;
+ import mx.collections.CursorBookmark;
+ import mx.collections.ICollectionView;
+ import mx.collections.IViewCursor;
+ import mx.collections.XMLListCollection;
+ import mx.controls.treeClasses.ITreeDataDescriptor;
+ import mx.events.CollectionEvent;
+ import mx.events.CollectionEventKind;
+
+ public class ObjectTreeDataDescriptor implements ITreeDataDescriptor
+ {
+ public function ObjectTreeDataDescriptor()
+ {
+ }
+
+ public function getChildren(node:Object, model:Object=null):ICollectionView
+ {
+ try
+ {
+ return new XMLListCollection(XMLList(node).children());
+ }
+ catch (e:Error)
+ {
+ trace("[Descriptor] exception checking for getChildren:" + e.toString());
+ }
+ return null;
+ }
+
+ // The isBranch method simply returns true if the node is an
+ // Object with a children field.
+ // It does not support empty branches, but does support null children
+ // fields.
+ public function isBranch(node:Object, model:Object=null):Boolean
+ {
+ try
+ {
+ if(node is Object)
+ {
+ if(node.children != null && XML(node).name().toString() != "Object")
+ return true;
+ }
+ }
+ catch (e:Error)
+ {
+ trace("[Descriptor] exception checking for isBranch");
+ }
+
+ return false;
+ }
+
+ // The hasChildren method Returns true if the
+ // node actually has children.
+ public function hasChildren(node:Object, model:Object=null):Boolean
+ {
+ if(node == null)
+ return false;
+
+ var children:ICollectionView = getChildren(node, model);
+
+ try
+ {
+ if(children.length > 0)
+ return true;
+ }
+ catch(e:Error)
+ {
+ trace("hasChildren: " + e.toString());
+ }
+
+ return false;
+ }
+
+ // The getData method simply returns the node as an Object.
+ public function getData(node:Object, model:Object=null):Object
+ {
+ try
+ {
+ return node;
+ }
+ catch (e:Error)
+ {
+ trace("getData: " + e.toString());
+ }
+
+ return null;
+ }
+
+ // The addChildAt method does the following:
+ // If the parent parameter is null or undefined, inserts
+ // the child parameter as the first child of the model parameter.
+ // If the parent parameter is an Object and has a children field,
+ // adds the child parameter to it at the index parameter location.
+ // It does not add a child to a terminal node if it does not have
+ // a children field.
+ public function addChildAt(parent:Object, child:Object, index:int, model:Object=null):Boolean
+ {
+ var event:CollectionEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
+ event.kind = CollectionEventKind.ADD;
+ event.items = [child];
+ event.location = index;
+
+ if (!parent)
+ {
+ var iterator:IViewCursor = model.createCursor();
+ iterator.seek(CursorBookmark.FIRST, index);
+ iterator.insert(child);
+ }
+ else if (parent is Object)
+ {
+ if (parent.children != null)
+ {
+ if(parent.children is ArrayCollection)
+ {
+ parent.children.addItemAt(child, index);
+ if (model)
+ {
+ model.dispatchEvent(event);
+ model.itemUpdated(parent);
+ }
+ return true;
+ }
+ else
+ {
+ parent.children.splice(index, 0, child);
+ if(model)
+ model.dispatchEvent(event);
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ // The removeChildAt method does the following:
+ // If the parent parameter is null or undefined,
+ // removes the child at the specified index
+ // in the model.
+ // If the parent parameter is an Object and has a children field,
+ // removes the child at the index parameter location in the parent.
+ public function removeChildAt(parent:Object, child:Object, index:int, model:Object=null):Boolean
+ {
+ var event:CollectionEvent = new CollectionEvent(CollectionEvent.COLLECTION_CHANGE);
+ event.kind = CollectionEventKind.REMOVE;
+ event.items = [child];
+ event.location = index;
+
+ //handle top level where there is no parent
+ if (!parent)
+ {
+ var iterator:IViewCursor = model.createCursor();
+ iterator.seek(CursorBookmark.FIRST, index);
+ iterator.remove();
+ if (model)
+ model.dispatchEvent(event);
+ return true;
+ }
+ else if (parent is Object)
+ {
+ if (parent.children != undefined)
+ {
+ parent.children.splice(index, 1);
+ if(model)
+ model.dispatchEvent(event);
+ return true;
+ }
+ }
+ return false;
+ }
+
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/classes/ObjectTreeItemRenderer.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/ObjectTreeItemRenderer.as b/TourDeFlex/TourDeFlex/src/classes/ObjectTreeItemRenderer.as
index 4133b00..e58fc5c 100644
--- a/TourDeFlex/TourDeFlex/src/classes/ObjectTreeItemRenderer.as
+++ b/TourDeFlex/TourDeFlex/src/classes/ObjectTreeItemRenderer.as
@@ -16,79 +16,79 @@
// limitations under the License.
//
////////////////////////////////////////////////////////////////////////////////
-package classes
-{
- import mx.controls.Image;
- import mx.controls.treeClasses.TreeItemRenderer;
- import mx.controls.treeClasses.TreeListData;
-
- public class ObjectTreeItemRenderer extends TreeItemRenderer
- {
- protected var iconImage:Image;
- private var imageWidth:Number = 18;
- private var imageHeight:Number = 18;
- private var imageToLabelMargin:Number = 2;
-
- public function ObjectTreeItemRenderer()
- {
- super();
- }
-
- override protected function createChildren():void
- {
- iconImage = new Image();
- iconImage.width = imageWidth;
- iconImage.height = imageHeight;
- addChild(iconImage);
-
- super.createChildren();
- }
-
- override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
- {
- super.updateDisplayList(unscaledWidth, unscaledHeight);
- if(super.data)
- {
- if(!TreeListData(super.listData).hasChildren)
- {
- iconImage.x = super.label.x - imageWidth - imageToLabelMargin;
-
- var tmp:XMLList = new XMLList(TreeListData(super.listData).item);
- var iconPath:String = tmp.@iconPath.toString();
- if(tmp.@localIconPath.toString().length > 0)
- iconPath = tmp.@localIconPath;
-
- if(iconPath.length > 0)
- {
- if(hasFullPath(iconPath)) {
- if (Config.IS_ONLINE) {
- iconImage.source = iconPath;
- } else {
- iconImage.source = Config.TREE_NO_ICON;
- }
- }
- else
- iconImage.source = Config.LOCAL_OBJECTS_ROOT_PATH + iconPath;
- }
- else
- {
- iconImage.source = Config.TREE_NO_ICON;
- }
- }
- else
- {
- iconImage.source = null;
- }
- }
- }
-
- private function hasFullPath(path:String):Boolean
- {
- if(path.indexOf("//") >= 0 || path.indexOf(":") >= 0)
- return true;
- else
- return false;
- }
-
- }
+package classes
+{
+ import mx.controls.Image;
+ import mx.controls.treeClasses.TreeItemRenderer;
+ import mx.controls.treeClasses.TreeListData;
+
+ public class ObjectTreeItemRenderer extends TreeItemRenderer
+ {
+ protected var iconImage:Image;
+ private var imageWidth:Number = 18;
+ private var imageHeight:Number = 18;
+ private var imageToLabelMargin:Number = 2;
+
+ public function ObjectTreeItemRenderer()
+ {
+ super();
+ }
+
+ override protected function createChildren():void
+ {
+ iconImage = new Image();
+ iconImage.width = imageWidth;
+ iconImage.height = imageHeight;
+ addChild(iconImage);
+
+ super.createChildren();
+ }
+
+ override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
+ {
+ super.updateDisplayList(unscaledWidth, unscaledHeight);
+ if(super.data)
+ {
+ if(!TreeListData(super.listData).hasChildren)
+ {
+ iconImage.x = super.label.x - imageWidth - imageToLabelMargin;
+
+ var tmp:XMLList = new XMLList(TreeListData(super.listData).item);
+ var iconPath:String = tmp.@iconPath.toString();
+ if(tmp.@localIconPath.toString().length > 0)
+ iconPath = tmp.@localIconPath;
+
+ if(iconPath.length > 0)
+ {
+ if(hasFullPath(iconPath)) {
+ if (Config.IS_ONLINE) {
+ iconImage.source = iconPath;
+ } else {
+ iconImage.source = Config.TREE_NO_ICON;
+ }
+ }
+ else
+ iconImage.source = Config.LOCAL_OBJECTS_ROOT_PATH + iconPath;
+ }
+ else
+ {
+ iconImage.source = Config.TREE_NO_ICON;
+ }
+ }
+ else
+ {
+ iconImage.source = null;
+ }
+ }
+ }
+
+ private function hasFullPath(path:String):Boolean
+ {
+ if(path.indexOf("//") >= 0 || path.indexOf(":") >= 0)
+ return true;
+ else
+ return false;
+ }
+
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/components/AboutWindow.mxml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/components/AboutWindow.mxml b/TourDeFlex/TourDeFlex/src/components/AboutWindow.mxml
index 02293a2..da94159 100644
--- a/TourDeFlex/TourDeFlex/src/components/AboutWindow.mxml
+++ b/TourDeFlex/TourDeFlex/src/components/AboutWindow.mxml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
@@ -17,41 +17,41 @@
limitations under the License.
-->
-<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="500" height="430" horizontalScrollPolicy="off" verticalScrollPolicy="off" click="closeAbout()">
-
- <mx:Script>
- <![CDATA[
- import mx.managers.PopUpManager;
-
- public var isOpen:Boolean = false;
-
- public function set url(value:String):void
- {
- html_view.htmlLoader.navigateInSystemBrowser = true;
- html_view.location = value;
- }
-
- public function closeAbout():void {
- isOpen = false;
- parentApplication.setFocus();
- PopUpManager.removePopUp(this)
- }
-
- ]]>
- </mx:Script>
-
- <mx:Parallel id="aboutEffect">
- <mx:Fade alphaFrom="0" alphaTo="1" duration="300"/>
- <mx:Blur blurXFrom="300" blurXTo="0" duration="700"/>
- </mx:Parallel>
-
- <mx:Parallel id="shadowEffect">
- <mx:Fade duration="1000"/>
- <mx:Blur blurXFrom="0" blurYFrom="0" blurXTo="20" blurYTo="20" duration="500"/>
- <mx:Fade duration="1000"/>
- </mx:Parallel>
-
- <mx:Canvas x="15" y="15" backgroundColor="black" backgroundAlpha="0.5" width="434" height="368" addedEffect="shadowEffect"/>
- <mx:HTML x="0" y="0" id="html_view" width="439" height="368" addedEffect="aboutEffect" verticalScrollPolicy="off" horizontalScrollPolicy="off" />
-
-</mx:Canvas>
+<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="500" height="430" horizontalScrollPolicy="off" verticalScrollPolicy="off" click="closeAbout()">
+
+ <mx:Script>
+ <![CDATA[
+ import mx.managers.PopUpManager;
+
+ public var isOpen:Boolean = false;
+
+ public function set url(value:String):void
+ {
+ html_view.htmlLoader.navigateInSystemBrowser = true;
+ html_view.location = value;
+ }
+
+ public function closeAbout():void {
+ isOpen = false;
+ parentApplication.setFocus();
+ PopUpManager.removePopUp(this)
+ }
+
+ ]]>
+ </mx:Script>
+
+ <mx:Parallel id="aboutEffect">
+ <mx:Fade alphaFrom="0" alphaTo="1" duration="300"/>
+ <mx:Blur blurXFrom="300" blurXTo="0" duration="700"/>
+ </mx:Parallel>
+
+ <mx:Parallel id="shadowEffect">
+ <mx:Fade duration="1000"/>
+ <mx:Blur blurXFrom="0" blurYFrom="0" blurXTo="20" blurYTo="20" duration="500"/>
+ <mx:Fade duration="1000"/>
+ </mx:Parallel>
+
+ <mx:Canvas x="15" y="15" backgroundColor="black" backgroundAlpha="0.5" width="434" height="368" addedEffect="shadowEffect"/>
+ <mx:HTML x="0" y="0" id="html_view" width="439" height="368" addedEffect="aboutEffect" verticalScrollPolicy="off" horizontalScrollPolicy="off" />
+
+</mx:Canvas>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/5ed4d983/TourDeFlex/TourDeFlex/src/components/ApplicationFooter.mxml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/components/ApplicationFooter.mxml b/TourDeFlex/TourDeFlex/src/components/ApplicationFooter.mxml
index 2524d89..430629d 100644
--- a/TourDeFlex/TourDeFlex/src/components/ApplicationFooter.mxml
+++ b/TourDeFlex/TourDeFlex/src/components/ApplicationFooter.mxml
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="utf-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
@@ -17,46 +17,46 @@
limitations under the License.
-->
-<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" width="100%" height="30" styleName="applicationFooter">
-
- <mx:Script >
- <![CDATA[
- import mx.managers.PopUpManager;
-
- private var popup:AboutWindow;
-
- private function init():void
- {
- popup = new AboutWindow();
- }
-
- private function showAbout():void
- {
- if(!popup.isOpen)
- {
- PopUpManager.addPopUp(popup, DisplayObject(this.parentApplication), false);
- popup.url = "data/about.html";
- popup.isOpen = true;
- PopUpManager.centerPopUp(popup);
- popup.move(popup.x + 70, popup.y + 50);
- }
- else
- {
- popup.isOpen = false;
- PopUpManager.removePopUp(popup);
- }
- }
-
- ]]>
- </mx:Script>
- <mx:Button x="4" y="1" id="aboutBtn" styleName="aboutButton" click="showAbout();" />
- <mx:HBox x="70" width="100%" height="100%" verticalAlign="middle">
- <mx:Label text="©2010 Adobe Inc, All Rights Reserved" width="25%" textAlign="center" />
- <mx:Label id="label_version" text="Version: {Config.APP_VERSION}" width="25%" textAlign="center" />
- <mx:Label id="label_objectsDataVersion" text="List Version: {Config.OBJECTS_FILE_VERSION}" width="25%" textAlign="center" />
- <mx:Label id="label_objectsTotal" text="Samples: {Config.OBJECTS_TOTAL}" width="25%" textAlign="center" />
- </mx:HBox>
-
- <mx:Image bottom="5" right="4" source="@Embed('/images/button_clear.png')" mouseDown="stage.nativeWindow.startResize()" buttonMode="true" mouseEnabled="true" useHandCursor="true" />
-
-</mx:Canvas>
+<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" width="100%" height="30" styleName="applicationFooter">
+
+ <mx:Script >
+ <![CDATA[
+ import mx.managers.PopUpManager;
+
+ private var popup:AboutWindow;
+
+ private function init():void
+ {
+ popup = new AboutWindow();
+ }
+
+ private function showAbout():void
+ {
+ if(!popup.isOpen)
+ {
+ PopUpManager.addPopUp(popup, DisplayObject(this.parentApplication), false);
+ popup.url = "data/about.html";
+ popup.isOpen = true;
+ PopUpManager.centerPopUp(popup);
+ popup.move(popup.x + 70, popup.y + 50);
+ }
+ else
+ {
+ popup.isOpen = false;
+ PopUpManager.removePopUp(popup);
+ }
+ }
+
+ ]]>
+ </mx:Script>
+ <mx:Button x="4" y="1" id="aboutBtn" styleName="aboutButton" click="showAbout();" />
+ <mx:HBox x="70" width="100%" height="100%" verticalAlign="middle">
+ <mx:Label text="©2010 Adobe Inc, All Rights Reserved" width="25%" textAlign="center" />
+ <mx:Label id="label_version" text="Version: {Config.APP_VERSION}" width="25%" textAlign="center" />
+ <mx:Label id="label_objectsDataVersion" text="List Version: {Config.OBJECTS_FILE_VERSION}" width="25%" textAlign="center" />
+ <mx:Label id="label_objectsTotal" text="Samples: {Config.OBJECTS_TOTAL}" width="25%" textAlign="center" />
+ </mx:HBox>
+
+ <mx:Image bottom="5" right="4" source="@Embed('/images/button_clear.png')" mouseDown="stage.nativeWindow.startResize()" buttonMode="true" mouseEnabled="true" useHandCursor="true" />
+
+</mx:Canvas>