You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2014/04/25 08:33:24 UTC
[42/42] git commit: [flex-utilities] [refs/heads/develop] -
TourDeFlex donation from Adobe Systems Inc
TourDeFlex donation from Adobe Systems Inc
Project: http://git-wip-us.apache.org/repos/asf/flex-utilities/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-utilities/commit/3dc107b9
Tree: http://git-wip-us.apache.org/repos/asf/flex-utilities/tree/3dc107b9
Diff: http://git-wip-us.apache.org/repos/asf/flex-utilities/diff/3dc107b9
Branch: refs/heads/develop
Commit: 3dc107b9400db085d714a114ef6eda0fece3cc87
Parents: b0fc5f1
Author: Alex Harui <ah...@apache.org>
Authored: Thu Apr 24 23:32:19 2014 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Thu Apr 24 23:32:19 2014 -0700
----------------------------------------------------------------------
TourDeFlex/TourDeFlex/build.xml | 65 +
TourDeFlex/TourDeFlex/src/Config.as | 157 +
TourDeFlex/TourDeFlex/src/Preferences.as | 68 +
TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml | 157 +
TourDeFlex/TourDeFlex/src/TourDeFlex.mxml | 881 +++
.../src/classes/ApplicationUpdaterManager.as | 55 +
TourDeFlex/TourDeFlex/src/classes/Document.as | 35 +
.../TourDeFlex/src/classes/LocalQuickStart.as | 159 +
TourDeFlex/TourDeFlex/src/classes/ObjectData.as | 336 +
.../src/classes/ObjectListSortTypes.as | 38 +
.../src/classes/ObjectTreeDataDescriptor.as | 191 +
.../src/classes/ObjectTreeItemRenderer.as | 94 +
.../TourDeFlex/src/components/AboutWindow.mxml | 57 +
.../src/components/ApplicationFooter.mxml | 62 +
.../src/components/ApplicationHeader.mxml | 81 +
.../src/components/CommentsWindow.mxml | 50 +
.../TourDeFlex/src/components/DocumentTabs.mxml | 126 +
.../src/components/DownloadWindow.mxml | 123 +
.../src/components/IllustrationTab.mxml | 81 +
.../src/components/IllustrationTabs.mxml | 86 +
.../TourDeFlex/src/components/ObjectList.mxml | 88 +
.../src/components/ObjectListItemRenderer.mxml | 86 +
.../src/components/PluginDownloadWindow.mxml | 125 +
.../src/components/QuickStartWindow.mxml | 82 +
.../TourDeFlex/src/components/SearchWindow.mxml | 197 +
.../TourDeFlex/src/components/SplashWindow.mxml | 86 +
.../src/components/TDFTabNavigator.as | 43 +
.../src/components/TextBoxSearch.mxml | 79 +
.../TourDeFlex/src/components/WipeWindow.mxml | 45 +
TourDeFlex/TourDeFlex/src/data/about.html | 57 +
TourDeFlex/TourDeFlex/src/data/images/bkg.jpg | Bin 0 -> 395 bytes
TourDeFlex/TourDeFlex/src/data/images/logo.png | Bin 0 -> 2968 bytes
.../src/data/images/qs_banner_plain_big2.jpg | Bin 0 -> 49764 bytes
.../TourDeFlex/src/data/images/quickstart.gif | Bin 0 -> 37957 bytes
.../TourDeFlex/src/data/objects-desktop-cn.xml | 5816 +++++++++++++++++
.../src/data/objects-desktop-update.xml | 37 +
.../TourDeFlex/src/data/objects-desktop.xml | 18 +
.../TourDeFlex/src/data/objects-desktop2.xml | 5970 ++++++++++++++++++
.../src/data/objects-desktop_ja-update.xml | 37 +
.../TourDeFlex/src/data/objects-desktop_ja.xml | 5816 +++++++++++++++++
TourDeFlex/TourDeFlex/src/data/objects-web.xml | 5815 +++++++++++++++++
.../TourDeFlex/src/data/objects-web_ja.xml | 5835 +++++++++++++++++
TourDeFlex/TourDeFlex/src/data/offline.html | 33 +
TourDeFlex/TourDeFlex/src/data/prepxml.sh | 19 +
TourDeFlex/TourDeFlex/src/data/quickstart.html | 129 +
TourDeFlex/TourDeFlex/src/data/settings.xml | 49 +
TourDeFlex/TourDeFlex/src/data/settings_ja.xml | 50 +
TourDeFlex/TourDeFlex/src/data/splash.html | 45 +
TourDeFlex/TourDeFlex/src/data/style.css | 88 +
.../TourDeFlex/src/images/button_clear.png | Bin 0 -> 122 bytes
.../src/images/button_close_downSkin.png | Bin 0 -> 559 bytes
.../src/images/button_close_overSkin.png | Bin 0 -> 484 bytes
.../src/images/button_close_upSkin.png | Bin 0 -> 439 bytes
.../src/images/button_commentDisabled_icon.png | Bin 0 -> 346 bytes
.../src/images/button_comment_icon.png | Bin 0 -> 337 bytes
.../src/images/button_downloadDisabled_icon.png | Bin 0 -> 443 bytes
.../src/images/button_download_icon.png | Bin 0 -> 419 bytes
.../src/images/button_search_icon.png | Bin 0 -> 422 bytes
.../TourDeFlex/src/images/corner_resizer.png | Bin 0 -> 189 bytes
TourDeFlex/TourDeFlex/src/images/expand.png | Bin 0 -> 445 bytes
.../TourDeFlex/src/images/expand_disabled.png | Bin 0 -> 444 bytes
.../TourDeFlex/src/images/header_gradient.png | Bin 0 -> 252 bytes
.../TourDeFlex/src/images/icons/tdfx_128.png | Bin 0 -> 8686 bytes
.../TourDeFlex/src/images/toggle_list.png | Bin 0 -> 161 bytes
.../TourDeFlex/src/images/toggle_tree.png | Bin 0 -> 221 bytes
.../TourDeFlex/src/images/tree_noIcon.png | Bin 0 -> 322 bytes
TourDeFlex/TourDeFlex/src/images/web.png | Bin 0 -> 691 bytes
.../TourDeFlex/src/images/web_disabled.png | Bin 0 -> 688 bytes
.../FileSystemComboBox.mxml.html | 53 +
.../FileSystemComboBox/FileSystemComboBox.png | Bin 0 -> 415 bytes
.../srcview/source/FileSystemComboBox.mxml.html | 53 +
.../FileSystemDataGrid.mxml.html | 47 +
.../FileSystemDataGrid/FileSystemDataGrid.png | Bin 0 -> 413 bytes
.../FileSystemHistoryButton.mxml.html | 44 +
.../FileSystemHistoryButton.png | Bin 0 -> 506 bytes
.../FileSystemList/FileSystemList.mxml.html | 47 +
.../FileSystemList/FileSystemList.png | Bin 0 -> 404 bytes
.../FileSystemTree/FileSystemTree.mxml.html | 47 +
.../FileSystemTree/FileSystemTree.png | Bin 0 -> 412 bytes
.../src/objects/AIR/Components/HTML/HTML.png | Bin 0 -> 522 bytes
.../objects/AIR/Components/HTML/html1.mxml.html | 49 +
.../objects/AIR/Components/HTML/html2.mxml.html | 42 +
.../objects/AIR/Components/HTML/html3.mxml.html | 41 +
.../src/objects/AIR/Components/SourceStyles.css | 146 +
.../AIR/HOWTO/AutoUpdate/AutoUpdate.mxml.html | 82 +
.../AIR/HOWTO/AutoUpdate/dialogscreenshot1.html | 22 +
.../AIR/HOWTO/AutoUpdate/dialogscreenshot1.png | Bin 0 -> 67946 bytes
.../objects/AIR/HOWTO/AutoUpdate/readme.html | 35 +
.../AIR/HOWTO/AutoUpdate/update.xml.html | 27 +
.../objects/AIR/HOWTO/CopyPaste/main.mxml.html | 121 +
.../AIR/HOWTO/DragAndDrop/DragIn.mxml.html | 77 +
.../AIR/HOWTO/DragAndDrop/DragOut.mxml.html | 66 +
.../objects/AIR/HOWTO/DragAndDrop/readme.html | 22 +
.../AIREncryptingDataSample.mxml.html | 106 +
.../objects/AIR/HOWTO/FileSystem/main.mxml.html | 68 +
.../AIR/HOWTO/InstallBadge/installbadge.png | Bin 0 -> 152731 bytes
.../AIR/HOWTO/InstallBadge/installbadge1.html | 22 +
.../AIR/HOWTO/InstallBadge/installbadge2.html | 43 +
.../objects/AIR/HOWTO/InstallBadge/readme.html | 33 +
.../HOWTO/MonitorNetwork/socketsample.mxml.html | 73 +
.../HOWTO/MonitorNetwork/urlsample.mxml.html | 65 +
.../AIR/HOWTO/NativeMenus/NativeMenus.mxml.html | 158 +
.../objects/AIR/HOWTO/NativeMenus/readme.html | 24 +
.../AIR/HOWTO/NativeMenus/screenshots.html | 22 +
.../AIR/HOWTO/NativeMenus/screenshots.png | Bin 0 -> 45438 bytes
.../AIR/HOWTO/NativeWindows/main.mxml.html | 89 +
.../objects/AIR/HOWTO/NativeWindows/readme.html | 23 +
.../AIR/HOWTO/PDFContent/PDFContent.mxml.html | 69 +
.../AIR/HOWTO/PDFContent/air_flex_datasheet.pdf | Bin 0 -> 358965 bytes
.../objects/AIR/HOWTO/PDFContent/readme.html | 21 +
.../ReadingApplicationSettings.mxml.html | 53 +
.../ReadingApplicationSettings/readme.html | 23 +
.../objects/AIR/HOWTO/SQLite/Employee.as.html | 38 +
.../src/objects/AIR/HOWTO/SQLite/readme.html | 22 +
.../objects/AIR/HOWTO/SQLite/sample.mxml.html | 157 +
.../AIR/HOWTO/Screens/DemoWindow.mxml.html | 41 +
.../AIR/HOWTO/Screens/ScreenDemo.mxml.html | 80 +
.../src/objects/AIR/HOWTO/Screens/readme.html | 24 +
.../src/objects/AIR/HOWTO/SourceStyles.css | 146 +
.../TransparentVideo/MovieWindow.mxml.html | 37 +
.../AIR/HOWTO/TransparentVideo/main.mxml.html | 58 +
.../HOWTO/UserPresence/userpresence.mxml.html | 57 +
.../objects/AIR20/Accelerometer/main.mxml.html | 58 +
.../objects/AIR20/DNS/TDFPanelSkin.mxml.html | 147 +
.../src/objects/AIR20/DNS/sample.mxml.html | 134 +
.../srcview/Sample-AIR2-DNS/src/sample-app.xml | 156 +
.../DNS/srcview/Sample-AIR2-DNS/src/sample.mxml | 126 +
.../Sample-AIR2-DNS/src/skins/TDFPanelSkin.mxml | 130 +
.../objects/AIR20/DNS/srcview/SourceIndex.xml | 37 +
.../objects/AIR20/DNS/srcview/SourceStyles.css | 155 +
.../objects/AIR20/DNS/srcview/SourceTree.html | 129 +
.../src/objects/AIR20/DNS/srcview/index.html | 32 +
.../AIR20/DNS/srcview/source/sample-app.xml.txt | 156 +
.../AIR20/DNS/srcview/source/sample.mxml.html | 134 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../TDFPanelSkin.mxml.html | 147 +
.../DownloadSecurityDialog/sample.mxml.html | 76 +
.../src/sample-app.xml | 156 +
.../src/sample.mxml | 68 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../src/up.png | Bin 0 -> 3408 bytes
.../srcview/SourceIndex.xml | 38 +
.../srcview/SourceStyles.css | 155 +
.../srcview/SourceTree.html | 129 +
.../DownloadSecurityDialog/srcview/index.html | 32 +
.../srcview/source/sample-app.xml.txt | 156 +
.../srcview/source/sample.mxml.html | 76 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../srcview/source/up.png | Bin 0 -> 3408 bytes
.../srcview/source/up.png.html | 28 +
.../EventOnShutdown/TDFPanelSkin.mxml.html | 148 +
.../AIR20/EventOnShutdown/sample.mxml.html | 73 +
.../src/sample-app.xml | 156 +
.../Sample-AIR2-EventOnShutdown/src/sample.mxml | 65 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../EventOnShutdown/srcview/SourceIndex.xml | 37 +
.../EventOnShutdown/srcview/SourceStyles.css | 155 +
.../EventOnShutdown/srcview/SourceTree.html | 129 +
.../AIR20/EventOnShutdown/srcview/index.html | 32 +
.../srcview/source/sample-app.xml.txt | 156 +
.../srcview/source/sample.mxml.html | 73 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../objects/AIR20/FilePromise/sample1.mxml.html | 108 +
.../src/adobe_air_logo.png | Bin 0 -> 15920 bytes
.../Sample-AIR2-FilePromise/src/sample1-app.xml | 156 +
.../Sample-AIR2-FilePromise/src/sample1.mxml | 100 +
.../AIR20/FilePromise/srcview/SourceIndex.xml | 35 +
.../AIR20/FilePromise/srcview/SourceStyles.css | 155 +
.../AIR20/FilePromise/srcview/SourceTree.html | 129 +
.../AIR20/FilePromise/srcview/index.html | 32 +
.../srcview/source/adobe_air_logo.png.html | 28 +
.../srcview/source/sample1-app.xml.txt | 156 +
.../srcview/source/sample1.mxml.html | 108 +
.../AIR20/Gestures/TDFPanelSkin.mxml.html | 146 +
.../src/objects/AIR20/Gestures/sample.mxml.html | 103 +
.../src/sample-app.xml | 153 +
.../Sample-AIR2-GestureSupport/src/sample.mxml | 95 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../AIR20/Gestures/srcview/SourceIndex.xml | 39 +
.../AIR20/Gestures/srcview/SourceStyles.css | 155 +
.../AIR20/Gestures/srcview/SourceTree.html | 129 +
.../objects/AIR20/Gestures/srcview/index.html | 32 +
.../Gestures/srcview/source/butterfly2.jpg.html | 28 +
.../Gestures/srcview/source/sample-app.xml.txt | 153 +
.../Gestures/srcview/source/sample.mxml.html | 103 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 146 +
.../TDFPanelSkin.mxml.html | 147 +
.../GlobalExceptionHandler/sample1.mxml.html | 72 +
.../GlobalExceptionHandler/sample2.mxml.html | 88 +
.../src/sample1-app.xml | 153 +
.../src/sample1.mxml | 64 +
.../src/sample2-app.xml | 153 +
.../src/sample2.mxml | 80 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../srcview/SourceIndex.xml | 39 +
.../srcview/SourceStyles.css | 155 +
.../srcview/SourceTree.html | 129 +
.../GlobalExceptionHandler/srcview/index.html | 32 +
.../srcview/source/sample1-app.xml.txt | 153 +
.../srcview/source/sample1.mxml.html | 72 +
.../srcview/source/sample2-app.xml.txt | 153 +
.../srcview/source/sample2.mxml.html | 88 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../CurrencyFormatterSample.mxml.html | 116 +
.../Globalization/DateFormatterSample.mxml.html | 112 +
.../NumberFormatterSample.mxml.html | 113 +
.../AIR20/Globalization/TDFPanelSkin.mxml.html | 148 +
.../src/CurrencyFormatterSample-app.xml | 156 +
.../src/CurrencyFormatterSample.mxml | 109 +
.../src/DateFormatterSample-app.xml | 156 +
.../src/DateFormatterSample.mxml | 105 +
.../src/NumberFormatterSample-app.xml | 156 +
.../src/NumberFormatterSample.mxml | 106 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../Sample-AIR2-Globalization/src/test-app.xml | 156 +
.../AIR20/Globalization/srcview/SourceIndex.xml | 44 +
.../Globalization/srcview/SourceStyles.css | 155 +
.../AIR20/Globalization/srcview/SourceTree.html | 129 +
.../AIR20/Globalization/srcview/index.html | 32 +
.../source/CurrencyFormatterSample-app.xml.txt | 156 +
.../source/CurrencyFormatterSample.mxml.html | 116 +
.../source/DateFormatterSample-app.xml.txt | 156 +
.../source/DateFormatterSample.mxml.html | 112 +
.../source/NumberFormatterSample-app.xml.txt | 156 +
.../source/NumberFormatterSample.mxml.html | 113 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../srcview/source/test-app.xml.txt | 156 +
.../TDFPanelSkin.mxml.html | 147 +
.../MassStorageDeviceDetection/sample.mxml.html | 108 +
.../src/sample-app.xml | 153 +
.../src/sample.mxml | 102 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../src/up.png | Bin 0 -> 3408 bytes
.../srcview/SourceIndex.xml | 38 +
.../srcview/SourceStyles.css | 155 +
.../srcview/SourceTree.html | 129 +
.../srcview/index.html | 32 +
.../srcview/source/sample-app.xml.txt | 153 +
.../srcview/source/sample.mxml.html | 108 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../srcview/source/up.png | Bin 0 -> 3408 bytes
.../srcview/source/up.png.html | 28 +
.../com/adobe/audio/format/WAVWriter.as.html | 16 +
.../AIR20/Microphone/source/sample-app.xml.txt | 153 +
.../AIR20/Microphone/source/sample.mxml.html | 202 +
.../source/skins/TDFPanelSkin.mxml.html | 147 +
.../src/com/adobe/audio/format/WAVWriter.as | 257 +
.../Sample-AIR2-Microphone/src/sample-app.xml | 153 +
.../Sample-AIR2-Microphone/src/sample.mxml | 198 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../AIR20/Microphone/srcview/SourceIndex.xml | 40 +
.../AIR20/Microphone/srcview/SourceStyles.css | 155 +
.../AIR20/Microphone/srcview/SourceTree.html | 129 +
.../objects/AIR20/Microphone/srcview/index.html | 32 +
.../com/adobe/audio/format/WAVWriter.as.html | 16 +
.../srcview/source/sample-app.xml.txt | 153 +
.../Microphone/srcview/source/sample.mxml.html | 202 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../AIR20/NativeProcess/TDFPanelSkin.mxml.html | 147 +
.../AIR20/NativeProcess/sample.mxml.html | 126 +
.../src/com/adobe/audio/format/WAVWriter.as | 257 +
.../Sample-AIR2-Microphone/src/sample-app.xml | 153 +
.../Sample-AIR2-Microphone/src/sample.mxml | 198 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../AIR20/NativeProcess/srcview/SourceIndex.xml | 40 +
.../NativeProcess/srcview/SourceStyles.css | 155 +
.../AIR20/NativeProcess/srcview/SourceTree.html | 129 +
.../AIR20/NativeProcess/srcview/index.html | 32 +
.../com/adobe/audio/format/WAVWriter.as.html | 16 +
.../srcview/source/sample-app.xml.txt | 153 +
.../srcview/source/sample.mxml.html | 126 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 147 +
.../AIR20/NetworkInfo/TDFPanelSkin.mxml.html | 147 +
.../objects/AIR20/NetworkInfo/sample.mxml.html | 85 +
.../Sample-AIR2-NetworkInfo/src/sample-app.xml | 153 +
.../Sample-AIR2-NetworkInfo/src/sample.mxml | 78 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../AIR20/NetworkInfo/srcview/SourceIndex.xml | 37 +
.../AIR20/NetworkInfo/srcview/SourceStyles.css | 155 +
.../AIR20/NetworkInfo/srcview/SourceTree.html | 129 +
.../AIR20/NetworkInfo/srcview/index.html | 32 +
.../srcview/source/sample-app.xml.txt | 153 +
.../NetworkInfo/srcview/source/sample.mxml.html | 85 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 158 +
.../OpenWithDefaultApp/TDFPanelSkin.mxml.html | 147 +
.../AIR20/OpenWithDefaultApp/sample1.mxml.html | 59 +
.../AIR20/OpenWithDefaultApp/sample2.mxml.html | 58 +
.../src/sample1-app.xml | 153 +
.../src/sample1.mxml | 51 +
.../src/sample2-app.xml | 153 +
.../src/sample2.mxml | 50 +
.../src/skins/TDFPanelSkin.mxml | 130 +
.../src/up.png | Bin 0 -> 3408 bytes
.../OpenWithDefaultApp/srcview/SourceIndex.xml | 40 +
.../OpenWithDefaultApp/srcview/SourceStyles.css | 155 +
.../OpenWithDefaultApp/srcview/SourceTree.html | 129 +
.../AIR20/OpenWithDefaultApp/srcview/index.html | 32 +
.../srcview/source/sample1-app.xml.txt | 153 +
.../srcview/source/sample1.mxml.html | 59 +
.../srcview/source/sample2-app.xml.txt | 153 +
.../srcview/source/sample2.mxml.html | 58 +
.../srcview/source/skins/TDFPanelSkin.mxml.html | 146 +
.../OpenWithDefaultApp/srcview/source/up.png | Bin 0 -> 3408 bytes
.../srcview/source/up.png.html | 28 +
.../AIR20/SocketServer/SocketClient.as.html | 140 +
.../SocketServer/SocketClientSample.mxml.html | 95 +
.../SocketServer/SocketServerSample.mxml.html | 116 +
.../src/SocketClient.as | 131 +
.../src/SocketClientSample-app.xml | 156 +
.../src/SocketClientSample.mxml | 90 +
.../src/SocketServerSample-app.xml | 153 +
.../src/SocketServerSample.mxml | 111 +
.../AIR20/SocketServer/srcview/SourceIndex.xml | 37 +
.../AIR20/SocketServer/srcview/SourceStyles.css | 155 +
.../AIR20/SocketServer/srcview/SourceTree.html | 129 +
.../AIR20/SocketServer/srcview/index.html | 32 +
.../srcview/source/SocketClient.as.html | 140 +
.../source/SocketClientSample-app.xml.txt | 156 +
.../srcview/source/SocketClientSample.mxml.html | 98 +
.../source/SocketServerSample-app.xml.txt | 153 +
.../srcview/source/SocketServerSample.mxml.html | 119 +
.../TourDeFlex/src/objects/DataAccess/chat.png | Bin 0 -> 622 bytes
.../src/objects/DataAccess/genericdata.png | Bin 0 -> 607 bytes
.../src/objects/DataAccess/remoting.png | Bin 0 -> 711 bytes
.../src/objects/DataAccess/webservices.png | Bin 0 -> 652 bytes
.../src/objects/HOWTO/SourceStyles.css | 146 +
.../TourDeFlex/src/objects/SourceStyles.css | 146 +
TourDeFlex/TourDeFlex/src/plugin/Component.as | 72 +
.../src/plugin/TDFPluginTransferObject.as | 66 +
TourDeFlex/TourDeFlex/src/styles.css | 420 ++
.../html-template/history/history.css | 22 +
.../html-template/history/history.js | 694 ++
.../html-template/history/historyFrame.html | 45 +
.../html-template/index.template.html | 124 +
TourDeFlex/TourDeFlex3/src/AC_OETags.js | 282 +
TourDeFlex/TourDeFlex3/src/README.html | 47 +
TourDeFlex/TourDeFlex3/src/SourceTab.mxml | 56 +
TourDeFlex/TourDeFlex3/src/build.bat | 26 +
TourDeFlex/TourDeFlex3/src/build.sh | 27 +
.../src/charts/BubbleChartExample.mxml | 58 +
.../src/charts/CandlestickChartExample.mxml | 85 +
.../src/charts/Column_BarChartExample.mxml | 120 +
.../src/charts/DateTimeAxisExample.mxml | 68 +
.../src/charts/GridLinesExample.mxml | 68 +
.../src/charts/HLOCChartExample.mxml | 75 +
.../src/charts/Line_AreaChartExample.mxml | 85 +
.../TourDeFlex3/src/charts/LogAxisExample.mxml | 61 +
.../TourDeFlex3/src/charts/PieChartExample.mxml | 84 +
.../src/charts/PlotChartExample.mxml | 78 +
.../src/charts/SeriesInterpolateExample.mxml | 94 +
.../src/charts/SeriesSlideExample.mxml | 96 +
.../src/charts/SeriesZoomExample.mxml | 96 +
TourDeFlex/TourDeFlex3/src/charts_explorer.xml | 77 +
TourDeFlex/TourDeFlex3/src/clean.bat | 23 +
.../src/containers/AccordionExample.mxml | 53 +
.../src/containers/DividedBoxExample.mxml | 39 +
.../TourDeFlex3/src/containers/FormExample.mxml | 83 +
.../src/containers/GridLayoutExample.mxml | 67 +
.../TourDeFlex3/src/containers/HBoxExample.mxml | 39 +
.../src/containers/HDividedBoxExample.mxml | 41 +
.../SimpleApplicationControlBarExample.mxml | 57 +
.../src/containers/SimpleBoxExample.mxml | 46 +
.../src/containers/SimpleCanvasExample.mxml | 45 +
.../src/containers/SimpleControlBarExample.mxml | 41 +
.../src/containers/SimplePanelExample.mxml | 45 +
.../containers/SimpleTitleWindowExample.mxml | 52 +
.../src/containers/TabNavigatorExample.mxml | 54 +
.../src/containers/TileLayoutExample.mxml | 42 +
.../src/containers/TitleWindowApp.mxml | 63 +
.../TourDeFlex3/src/containers/VBoxExample.mxml | 39 +
.../src/containers/VDividedBoxExample.mxml | 41 +
.../src/containers/ViewStackExample.mxml | 57 +
.../src/controls/AdvancedDataGridExample.mxml | 76 +
.../src/controls/ButtonBarExample.mxml | 55 +
.../TourDeFlex3/src/controls/ButtonExample.mxml | 63 +
.../src/controls/CheckBoxExample.mxml | 76 +
.../src/controls/ColorPickerExample.mxml | 32 +
.../src/controls/DateChooserExample.mxml | 65 +
.../src/controls/DateFieldExample.mxml | 55 +
.../src/controls/HScrollBarExample.mxml | 55 +
.../src/controls/HorizontalListExample.mxml | 67 +
.../TourDeFlex3/src/controls/LabelExample.mxml | 47 +
.../src/controls/LinkBarExample.mxml | 48 +
.../src/controls/LinkButtonExample.mxml | 38 +
TourDeFlex/TourDeFlex3/src/controls/Local.mxml | 25 +
.../src/controls/MenuBarExample.mxml | 77 +
.../src/controls/NumericStepperExample.mxml | 42 +
.../src/controls/OLAPDataGridExample.mxml | 214 +
.../src/controls/PopUpButtonExample.mxml | 65 +
.../src/controls/PopUpButtonMenuExample.mxml | 54 +
.../src/controls/RadioButtonExample.mxml | 41 +
.../src/controls/RadioButtonGroupExample.mxml | 61 +
.../src/controls/RichTextEditorExample.mxml | 32 +
.../TourDeFlex3/src/controls/SimpleAlert.mxml | 74 +
.../src/controls/SimpleComboBox.mxml | 53 +
.../src/controls/SimpleDataGrid.mxml | 76 +
.../TourDeFlex3/src/controls/SimpleHRule.mxml | 33 +
.../TourDeFlex3/src/controls/SimpleImage.mxml | 30 +
.../src/controls/SimpleImageHSlider.mxml | 57 +
.../src/controls/SimpleImageVSlider.mxml | 63 +
.../TourDeFlex3/src/controls/SimpleList.mxml | 57 +
.../TourDeFlex3/src/controls/SimpleLoader.mxml | 31 +
.../src/controls/SimpleMenuExample.mxml | 70 +
.../src/controls/SimpleProgressBar.mxml | 57 +
.../TourDeFlex3/src/controls/SimpleVRule.mxml | 31 +
.../TourDeFlex3/src/controls/SpacerExample.mxml | 36 +
.../TourDeFlex3/src/controls/TabBarExample.mxml | 57 +
.../src/controls/TextAreaExample.mxml | 37 +
.../TourDeFlex3/src/controls/TextExample.mxml | 39 +
.../src/controls/TextInputExample.mxml | 32 +
.../src/controls/TileListExample.mxml | 68 +
.../src/controls/ToggleButtonBarExample.mxml | 55 +
.../TourDeFlex3/src/controls/TreeExample.mxml | 65 +
.../src/controls/VScrollBarExample.mxml | 55 +
.../src/controls/VideoDisplayExample.mxml | 38 +
.../src/controls/assets/TransportButtons.fla | Bin 0 -> 96256 bytes
.../src/controls/assets/buttonDisabled.gif | Bin 0 -> 537 bytes
.../src/controls/assets/buttonDown.gif | Bin 0 -> 592 bytes
.../src/controls/assets/buttonOver.gif | Bin 0 -> 1175 bytes
.../src/controls/assets/buttonUp.gif | Bin 0 -> 626 bytes
.../TourDeFlex3/src/core/RepeaterExample.mxml | 51 +
.../src/core/SimpleApplicationExample.mxml | 61 +
.../src/effects/AddItemActionEffectExample.mxml | 98 +
.../effects/AnimatePropertyEffectExample.mxml | 37 +
.../src/effects/BlurEffectExample.mxml | 40 +
.../src/effects/CompositeEffectExample.mxml | 96 +
.../src/effects/DefaultListEffectExample.mxml | 75 +
.../effects/DefaultTileListEffectExample.mxml | 77 +
.../src/effects/DissolveEffectExample.mxml | 55 +
.../src/effects/FadeEffectExample.mxml | 54 +
.../src/effects/GlowEffectExample.mxml | 44 +
.../src/effects/IrisEffectExample.mxml | 38 +
.../src/effects/MoveEffectExample.mxml | 48 +
.../src/effects/ParallelEffectExample.mxml | 49 +
.../src/effects/PauseEffectExample.mxml | 45 +
.../src/effects/ResizeEffectExample.mxml | 40 +
.../src/effects/RotateEffectExample.mxml | 63 +
.../src/effects/SequenceEffectExample.mxml | 45 +
.../src/effects/SimpleEffectExample.mxml | 65 +
.../src/effects/SimpleTweenEffectExample.mxml | 71 +
.../src/effects/SoundEffectExample.mxml | 34 +
.../src/effects/WipeDownExample.mxml | 43 +
.../src/effects/WipeLeftExample.mxml | 43 +
.../src/effects/WipeRightExample.mxml | 43 +
.../TourDeFlex3/src/effects/WipeUpExample.mxml | 43 +
.../src/effects/ZoomEffectExample.mxml | 54 +
.../TourDeFlex3/src/effects/assets/jazz.mp3 | Bin 0 -> 7380 bytes
TourDeFlex/TourDeFlex3/src/explorer.html | 67 +
TourDeFlex/TourDeFlex3/src/explorer.mxml | 78 +
TourDeFlex/TourDeFlex3/src/explorer.xml | 158 +
.../formatters/CurrencyFormatterExample.mxml | 71 +
.../src/formatters/DateFormatterExample.mxml | 65 +
.../src/formatters/NumberFormatterExample.mxml | 68 +
.../src/formatters/PhoneFormatterExample.mxml | 67 +
.../src/formatters/SimpleFormatterExample.mxml | 65 +
.../SwitchSymbolFormatterExample.mxml | 61 +
.../src/formatters/ZipCodeFormatterExample.mxml | 66 +
TourDeFlex/TourDeFlex3/src/loaderPanel.mxml | 35 +
.../printing/AdvancedPrintDataGridExample.mxml | 105 +
.../src/printing/FormPrintFooter.mxml | 32 +
.../src/printing/FormPrintHeader.mxml | 25 +
.../TourDeFlex3/src/printing/FormPrintView.mxml | 77 +
.../src/printing/PrintDataGridExample.mxml | 142 +
.../TourDeFlex3/src/states/StatesExample.mxml | 68 +
.../src/states/TransitionExample.mxml | 95 +
.../validators/CreditCardValidatorExample.mxml | 66 +
.../validators/CurrencyValidatorExample.mxml | 43 +
.../src/validators/DateValidatorExample.mxml | 50 +
.../src/validators/EmailValidatorExample.mxml | 43 +
.../src/validators/NumberValidatorExample.mxml | 44 +
.../validators/PhoneNumberValidatorExample.mxml | 43 +
.../src/validators/RegExValidatorExample.mxml | 83 +
.../src/validators/SimpleValidatorExample.mxml | 74 +
.../SocialSecurityValidatorExample.mxml | 43 +
.../src/validators/StringValidatorExample.mxml | 46 +
.../src/validators/ZipCodeValidatorExample.mxml | 43 +
TourDeFlex/TourDeFlex3/src/viewsource.mxml | 57 +
477 files changed, 68124 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3dc107b9/TourDeFlex/TourDeFlex/build.xml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/build.xml b/TourDeFlex/TourDeFlex/build.xml
new file mode 100644
index 0000000..f1a3f7b
--- /dev/null
+++ b/TourDeFlex/TourDeFlex/build.xml
@@ -0,0 +1,65 @@
+<?xml version="1.0" ?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<project default="test" basedir=".">
+
+ <property file="${basedir}/env.properties"/>
+ <property environment="env"/>
+ <property file="${basedir}/local.properties"/>
+ <property file="${basedir}/build.properties"/>
+ <condition property="FLEX_HOME" value="${env.FLEX_HOME}">
+ <isset property="env.FLEX_HOME" />
+ </condition>
+ <condition property="AIR_HOME" value="${env.AIR_HOME}">
+ <isset property="env.AIR_HOME" />
+ </condition>
+
+ <!-- SDK properties -->
+ <property name="FLEX_HOME" value="C:/air3_beta2"/>
+ <property name="AIR_HOME" value="C:/air3_beta2"/>
+ <property name="ADL" value="${AIR_HOME}/bin/adl.exe"/>
+ <property name="ADT.JAR" value="${AIR_HOME}/lib/adt.jar"/>
+
+ <target name="init" depends="clean">
+ </target>
+
+ <!-- additional tasks - mxmlc tag -->
+ <path id="flexTasks.path">
+ <fileset dir="${FLEX_HOME}">
+ <include name="lib/flexTasks.jar" />
+ <include name="ant/lib/flexTasks.jar" />
+ </fileset>
+ </path>
+ <taskdef resource="flexTasks.tasks" classpathref="flexTasks.path"/>
+
+ <target name="compile" depends="init">
+ <mxmlc file="${basedir}/src/TourDeFlex.mxml"
+ output="${basedir}/src/TourDeFlex.swf" fork="true" failonerror="true">
+ <load-config filename="${FLEX_HOME}/frameworks/air-config.xml"/>
+ <source-path path-element="${basedir}/src"/>
+ </mxmlc>
+ </target>
+
+ <target name="test" depends="compile">
+ </target>
+
+ <target name="clean" description="clean up">
+ <delete file="${basedir}/src/TourDeFlex.swf"/>
+ </target>
+</project>
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3dc107b9/TourDeFlex/TourDeFlex/src/Config.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/Config.as b/TourDeFlex/TourDeFlex/src/Config.as
new file mode 100644
index 0000000..ba2a287
--- /dev/null
+++ b/TourDeFlex/TourDeFlex/src/Config.as
@@ -0,0 +1,157 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+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/3dc107b9/TourDeFlex/TourDeFlex/src/Preferences.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/Preferences.as b/TourDeFlex/TourDeFlex/src/Preferences.as
new file mode 100644
index 0000000..4144fd5
--- /dev/null
+++ b/TourDeFlex/TourDeFlex/src/Preferences.as
@@ -0,0 +1,68 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+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/3dc107b9/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml b/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml
new file mode 100644
index 0000000..102abff
--- /dev/null
+++ b/TourDeFlex/TourDeFlex/src/TourDeFlex-app.xml
@@ -0,0 +1,157 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You under the Apache License, Version 2.0
+(the "License"); you may not use this file except in compliance with
+the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+
+-->
+<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.
+ See http://www.adobe.com/go/air_1.0_application_descriptor for complete documentation.
+
+ xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/1.0
+ The last segment of the namespace specifies the version
+ of the AIR runtime required for this application to run.
+
+ 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 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. -->
+ <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>
+
+ <!-- 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> -->
+
+ <!-- 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>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3dc107b9/TourDeFlex/TourDeFlex/src/TourDeFlex.mxml
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/TourDeFlex.mxml b/TourDeFlex/TourDeFlex/src/TourDeFlex.mxml
new file mode 100644
index 0000000..012b79a
--- /dev/null
+++ b/TourDeFlex/TourDeFlex/src/TourDeFlex.mxml
@@ -0,0 +1,881 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-->
+<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" showFlexChrome="false"
+ showStatusBar="false" applicationComplete="init()" title="Tour de Flex" styleName="mainWindow"
+ width="1000" height="768" minWidth="1000" minHeight="700" xmlns:components="components.*"
+ visible="true" resize="window_resize(event)" horizontalScrollPolicy="off" verticalScrollPolicy="off">
+
+ <mx:Style source="styles.css" />
+
+ <mx:Script>
+ <![CDATA[
+ import mx.events.AIREvent;
+ import mx.rpc.events.FaultEvent;
+ import components.QuickStartWindow;
+ import mx.events.ResizeEvent;
+ import mx.validators.EmailValidator;
+// import TopPanels4_fla.MainTimeline;
+ import components.SplashWindow;
+ import mx.rpc.events.ResultEvent;
+ import classes.ObjectData;
+ import classes.Document;
+ import classes.ApplicationUpdaterManager;
+ import components.IllustrationTab;
+ import mx.events.CloseEvent;
+ import components.DownloadWindow;
+ import mx.controls.Alert;
+ import air.update.events.UpdateEvent;
+ import air.net.URLMonitor;
+ import mx.events.ItemClickEvent;
+ import components.WipeWindow;
+ import mx.events.FlexEvent;
+ import components.SearchWindow;
+ import mx.events.IndexChangedEvent;
+ import mx.managers.PopUpManager;
+ import components.CommentsWindow;
+ import mx.events.ListEvent;
+
+ //---- ADDED HS ------//
+ import mx.messaging.messages.IMessage;
+ import mx.rpc.events.ResultEvent;
+// import merapi.BridgeInstance;
+// import merapi.Bridge;
+// import merapi.messages.Message;
+// import merapi.messages.MerapiObjectMessage;
+ import mx.collections.ArrayCollection;
+// import plugin.TDFPluginTransferObject;
+ import flash.utils.*;
+ import components.PluginDownloadWindow;
+
+ //--------------------------------------------------------------------------
+ // Variables
+ //--------------------------------------------------------------------------
+ [Bindable]
+ public var objectData:ObjectData;
+
+ private var applicationUpdaterManager:ApplicationUpdaterManager;
+ private var urlMonitor:URLMonitor;
+ private var hasSearchOpenedWhileCommenting:Boolean = false;
+ private var selectedDownloadPath:String = "";
+ private var selectedIllustrationURL:String = "";
+ private var previousTopLevelCategoriesText:String = "";
+
+ //---- ADDED HS ------//
+ private var dockImage:BitmapData;
+// private var bridge:Bridge;
+ private var featuredSent:Boolean = false;
+ private var isPlugin:Boolean = false;
+ private var isStandAlone:Boolean = false;
+ private var comps:ArrayCollection= new ArrayCollection();
+// private var pluginTransferObject:TDFPluginTransferObject;
+ [Bindable]
+ private var splashWindow:QuickStartWindow = new QuickStartWindow();
+ private var splashPlayed:Boolean = false;
+
+ private var expandMode:int = 0;
+
+ private var illustrationAutoExpanded:Boolean = false;
+
+
+ //--------------------------------------------------------------------------
+ // Loading/initializing for main application
+ //--------------------------------------------------------------------------
+ private function init():void
+ {
+ NativeApplication.nativeApplication.addEventListener(Event.EXITING, onExiting);
+
+ //Config.loadSettings();
+ Config.setLocalization();
+ Preferences.load();
+
+ objectData = new ObjectData();
+ applicationUpdaterManager = new ApplicationUpdaterManager();
+
+ urlMonitor = new URLMonitor(new URLRequest(Config.ONLINE_STATUS_URL));
+ urlMonitor.addEventListener(StatusEvent.STATUS, urlMonitor_status);
+ urlMonitor.pollInterval = 20000; // Every 20 seconds
+ urlMonitor.start();
+
+ // Request notification whenever the app is activated or deactivated
+ //this.addEventListener(AIREvent.APPLICATION_ACTIVATE, applicationActivate);
+ //this.addEventListener(AIREvent.APPLICATION_DEACTIVATE, applicationDeactivate);
+
+ // Use the loader object to load an image, which will be used for the systray
+ // After the image has been loaded into the object, we can prepare the application for docking to the system tray
+ var iconLoad:Loader = new Loader();
+ var loader:Loader = new Loader();
+
+ iconLoad.load(new URLRequest("app:/images/icons/tdfx_128.png"));
+ iconLoad.contentLoaderInfo.addEventListener(Event.COMPLETE,prepareForSystray);
+
+ NativeApplication.nativeApplication.addEventListener(InvokeEvent.INVOKE, onInvoke);
+
+ // Center app when it starts - will add code later to remember where it was last -- GAW
+ var currentScreen:Screen = getCurrentScreen();
+ stage.nativeWindow.x = (currentScreen.bounds.right / 2) - (this.width / 2);
+ stage.nativeWindow.y = (currentScreen.bounds.height / 2) - (this.height / 2);
+ if (stage.nativeWindow.x < 0) stage.nativeWindow.x = 0;
+ if (stage.nativeWindow.y < 0) stage.nativeWindow.y = 0;
+
+ }
+
+
+ private function getCurrentScreen():Screen{
+ var current:Screen;
+ var screens:Array = Screen.getScreensForRectangle(stage.nativeWindow.bounds);
+ (screens.length > 0) ? current = screens[0] : current = Screen.mainScreen;
+ return current;
+ }
+
+ public function showQuickStart():void
+ {
+ illustrationTabs.visible = false;
+ documentTabs.visible = false;
+ quickStartWindow.visible = true;
+ if(Config.IS_ONLINE )
+ {
+ quickStartWindow.location = Config.QUICK_START_REMOTE_URL;
+ }
+ else
+ {
+ quickStartWindow.location = Config.QUICK_START_LOCAL_URL;
+ }
+ }
+
+ private function closeQuickStart(event:CloseEvent = null):void
+ {
+ illustrationTabs.visible = true;
+ documentTabs.visible = true;
+ quickStartWindow.visible = false;
+ quickStartWindow.clearContents(); // to kill any running content
+ }
+
+ /**
+ * Called when the invoke event is fired, such as when this app is called. ADDED HS
+ */
+ private function onInvoke(invokeEvt:InvokeEvent):void
+ {
+ // Here we need to figure out how the app was invoked, if from the Eclipse plug-in, then we should
+ // create the Merapi bridge. If not, then we should just set the app to visible since it starts off
+ // invisible so we can keep it in the system tray
+ /*
+ if (invokeEvt.arguments[0] == "plugin" && isPlugin == false) {
+ isPlugin = true;
+ bridge = Bridge.instance;
+ bridge.addEventListener(ResultEvent.RESULT,handleResponse);
+ } else { */
+ isStandAlone = true;
+ this.undock(invokeEvt);
+ /*}*/
+
+ // If started in stand alone mode and later invoked again as a plugin, send featured components - GAW
+ //if (isStandAlone && isPlugin) sendFeatured();
+
+
+ //if(!isPlugin && Config.USE_SPLASH && Preferences.preferencesXml.Splash.@skip != "true")
+ if(!isPlugin && Config.USE_SPLASH && !splashPlayed)
+ {
+ showQuickStart();
+ splashPlayed = true;
+ }
+ }
+
+ /*
+ private function sendFeatured():void {
+ // Never send featured components more than once
+ if (!featuredSent) {
+ var featuredComps:ArrayCollection = objectData.getFeaturedComponents();
+ var m : Message = new Message();
+ m.type = "FindFeaturedComponents";
+ m.data = featuredComps;
+ bridge.sendMessage(m);
+ featuredSent = true;
+ }
+ }
+ */
+
+ private function urlMonitor_status(event:StatusEvent):void
+ {
+ Config.IS_ONLINE = urlMonitor.available;
+
+ if(Config.IS_ONLINE )
+ {
+ quickStartWindow.location = Config.QUICK_START_REMOTE_URL;
+ if(objectList.selectedId > 0)
+ button_comments.enabled = true;
+ }
+ else
+ {
+ quickStartWindow.location = Config.QUICK_START_LOCAL_URL;
+ button_comments.enabled = false;
+ }
+
+
+ }
+
+ private function confirmExit():void {
+ Alert.yesLabel = "Close";
+ Alert.noLabel = "Minimize";
+ Alert.show("Closing will cause the plug-in search capabilities to be rendered useless. Close or minimize?", "Close?", 3, this, confirmationClickHandler);
+
+ }
+
+ private function confirmationClickHandler(event:CloseEvent):void {
+ if (event.detail==Alert.YES) {
+ isPlugin = false;
+ NativeApplication.nativeApplication.dispatchEvent(new Event(Event.EXITING,true,true));
+ } else {
+ dock();
+ }
+ }
+
+ private function closeSplash():void {
+ PopUpManager.removePopUp(splashWindow);
+ //mx.core.Application.application.removeChild(movieBackground);
+ }
+
+ private function onExiting(exitingEvent:Event):void {
+ var winClosingEvent:Event;
+
+ // Kill the movie and it's background if it exists
+ //if (this.contains(movieBackground)) closeSplash();
+
+ exitingEvent.preventDefault();
+ if (isPlugin) {
+ undock(exitingEvent);
+ confirmExit();
+ return;
+ }
+
+ NativeApplication.nativeApplication.removeEventListener(Event.EXITING, onExiting);
+
+ for each (var win:NativeWindow in NativeApplication.nativeApplication.openedWindows) {
+ winClosingEvent = new Event(Event.CLOSING,false,true);
+ win.dispatchEvent(winClosingEvent);
+ if (!winClosingEvent.isDefaultPrevented()) {
+ win.close();
+ } else {
+ exitingEvent.preventDefault();
+ }
+ }
+
+ if (!exitingEvent.isDefaultPrevented()) {
+ Preferences.save();
+ }
+ }
+
+ //--------------------------------------------------------------------------
+ // Window events
+ //--------------------------------------------------------------------------
+ private function window_resize(event:ResizeEvent):void
+ {
+ if (documentTabs != null) documentTabs.needHtmlHack = false;
+
+ //if(splashWindow.video_intro)
+ //{
+ //splashWindow.width = this.width - splashWindow.x - 40;
+ //splashWindow.height = this.height - splashWindow.y - 65;
+ //splashWindow.video_intro.width = splashWindow.width;
+ //splashWindow.video_intro.height = splashWindow.height;
+ //}
+ }
+
+ //--------------------------------------------------------------------------
+ // Object list UI coordination/management
+ //--------------------------------------------------------------------------
+ private function objectList_change(event:ListEvent):void
+ {
+ var objectXml:XML = null;
+
+ documentTabs.needHtmlHack = true;
+ // Kill the movie and it's background if it exists
+ //if (this.contains(movieBackground)) closeSplash();
+
+ /*
+ // Get the object xml differently depending on if it was clicked from AIR side or plugin ... HS
+ if (event==null && pluginTransferObject!=null) {
+ objectXml = objectData.getXMLForObjectId(pluginTransferObject.selectedComponentId);
+ }
+ else
+ { */
+ objectXml = XML(event.itemRenderer.data);
+ /*}*/
+
+ objectList.selectedId = objectXml.@id;
+ objectList.selectedObject = objectXml;
+
+ button_download.enabled = false;
+ button_comments.enabled = false;
+ button_expand.enabled = false;
+ button_browser.enabled = false;
+
+ if(objectList.selectedId > 0)
+ {
+ closeQuickStart();
+
+ label_objectName.text = objectXml.@name;
+ if(Config.IS_ONLINE)
+ {
+ //HTTP_GetCommentsTotal.send();
+ HTTP_logView.send();
+ button_comments.enabled = true;
+ }
+
+ searchWindow.visible = false;
+ commentsWindow.visible = false;
+ objectList.setDescription(objectXml.@description, objectXml.@dateAdded, objectXml.@author);
+
+ documentTabs.needHtmlHack = true;
+
+ //reset selected tab due to tab selection issue
+ documentTabs.selectedIndex = 0;
+ documentTabs.validateNow();
+
+ illustrationTabs.removeAll();
+ illustrationTabs.removeAllIllustrations();
+
+ var illustrations:XMLList = XMLList(objectXml.Illustrations.Illustration);
+ for each(var illustration:XML in illustrations)
+ {
+ var associatedDocuments:Array = new Array();
+ documentTabs.removeAllChildren();
+ var documents:XMLList = XMLList(illustration.Documents.Document);
+ for each(var document:XML in documents)
+ {
+ var documentPath:String = document.@path;
+ if(document.@localPath.toString().length > 0)
+ documentPath = document.@localPath;
+
+ associatedDocuments.push(new Document(document.@name, documentPath, document.@openLinksExternal));
+ }
+
+ if(!Config.IS_ONLINE && illustration.@localPath.toString().length == 0 && illustration.@path.toLowerCase().indexOf("http") == 0)
+ {
+ illustrationTabs.addTab(illustration.@name, Config.OFFLINE_URL, "", "", "", "", "", "", null);
+ }
+ else
+ {
+ var illustrationPath:String = illustration.@path;
+ if(illustration.@localPath.toString().length > 0)
+ illustrationPath = illustration.@localPath;
+
+ var illustrationDownloadPath:String = illustration.@downloadPath;
+ if(illustration.@localDownloadPath.toString().length > 0)
+ illustrationDownloadPath = illustration.@localDownloadPath;
+
+ illustrationTabs.addTab(illustration.@name, illustrationPath, Config.LOCAL_OBJECTS_ROOT_PATH, illustration.@isModule, illustrationDownloadPath, illustration.@autoExpand, illustration.@openLinksExternal, illustration.@scrollBars, associatedDocuments);
+ }
+ }
+
+ documentTabs.addTabs(illustrationTabs.associatedDocumentsCollection[0], Config.LOCAL_OBJECTS_ROOT_PATH);
+
+ if(illustrationTabs.numChildren > 0)
+ autoExpandIllustrationTab(IllustrationTab(illustrationTabs.getChildAt(0)).autoExpand);
+
+ if(illustrationTabs.numChildren > 0 && IllustrationTab(illustrationTabs.getChildAt(0)).downloadPath.length > 0)
+ {
+ button_download.enabled = true;
+ selectedDownloadPath = IllustrationTab(illustrationTabs.getChildAt(0)).downloadPath;
+ }
+ selectedIllustrationURL = IllustrationTab(illustrationTabs.getChildAt(0)).illustrationURL;
+ }
+ else
+ {
+ button_comments.label = "Comments";
+ }
+ }
+
+ private function illustrationTabs_change(event:IndexChangedEvent):void
+ {
+ var documents:Array = IllustrationTabs(event.currentTarget).associatedDocumentsCollection[event.newIndex];
+ documentTabs.addTabs(documents, Config.LOCAL_OBJECTS_ROOT_PATH);
+
+ var tab:IllustrationTab = IllustrationTab(IllustrationTabs(event.currentTarget).getChildAt(event.newIndex));
+ selectedDownloadPath = tab.downloadPath;
+ if(selectedDownloadPath.length == 0)
+ button_download.enabled = false;
+ else
+ button_download.enabled = true;
+
+ selectedIllustrationURL = tab.illustrationURL;
+ if(selectedIllustrationURL.length == 0)
+ button_browser.enabled = false;
+ else
+ button_browser.enabled = true;
+
+ autoExpandIllustrationTab(tab.autoExpand);
+ }
+
+ private function autoExpandIllustrationTab(autoExpand:Boolean):void
+ {
+ var documentsBox:DisplayObject = vdivider.getChildAt(1);
+ if(autoExpand)
+ {
+ //button_expand.enabled = false;
+ illustrationAutoExpanded = true;
+ documentsBox.height = 0;
+ }
+ else
+ {
+ button_expand.enabled = true;
+ illustrationAutoExpanded = false;
+
+ if(expandMode == 0) // showing split
+ documentsBox.height = vdivider.height/2;
+ else if(expandMode == 1) // showing illustrations
+ documentsBox.height = 0;
+ else if(expandMode == 2) // showing documents
+ documentsBox.height = vdivider.height;
+ }
+ }
+
+ private function toggleButtonBar_treeList_itemClick(event:ItemClickEvent):void
+ {
+ if(event.index == 0)
+ {
+ objectList.showTreeView(true);
+ comboBox_topLevelCategories.visible = false;
+ comboBox_topLevelCategories.height = 0;
+ }
+ else
+ {
+ objectData.sort(objectList.sortType);
+ objectList.showTreeView(false);
+ comboBox_topLevelCategories.visible = true;
+ comboBox_topLevelCategories.height = 22;
+ }
+ }
+
+ private function comboBox_topLevelCategories_change(event:ListEvent):void
+ {
+ searchWindow.clear();
+ objectData.filterTopLevelCategory(comboBox_topLevelCategories.selectedLabel);
+ objectData.sort(objectList.sortType);
+ }
+
+ private function objectList_sortChange(event:ListEvent):void
+ {
+ objectData.sort(objectList.sortType);
+ }
+
+ //--------------------------------------------------------------------------
+ // Comments window
+ //--------------------------------------------------------------------------
+ private function button_comments_click(event:MouseEvent):void
+ {
+ if(objectList.selectedId > 0)
+ {
+ var url:String = objectList.selectedObject.@commentsUrl;
+ if(url.length > 0)
+ navigateToURL(new URLRequest(url));
+ else
+ Alert.show("Comments are currently unavailable for this item.", "Unavailable");
+ }
+ }
+
+ /*
+ private function button_comments_click(event:MouseEvent):void
+ {
+ if(objectList.selectedId > 0)
+ {
+ commentsWindow.loadComments(objectList.selectedId, Config.IS_ONLINE);
+ commentsWindow.visible = true;
+ illustrationTabs.visible = false
+ previousTopLevelCategoriesText = comboBox_topLevelCategories.text;
+ }
+ }
+
+ private function processGetCommentsTotal(event:ResultEvent):void
+ {
+ var total:int = parseInt(event.result.toString());
+ button_comments.label = "Comments (" + total + ")";
+ }
+
+ private function processGetCommentsTotal_fault():void
+ {
+ //Alert.show('An Internet connection is required', 'Offline');
+ }
+ */
+
+ private function HTTP_logView_fault(event:FaultEvent):void
+ {
+ //Alert.show('An Internet connection is required' + event.message, 'Offline');
+ }
+
+ //--------------------------------------------------------------------------
+ // Search window
+ //--------------------------------------------------------------------------
+ private function button_search_click(event:MouseEvent):void
+ {
+ // Kill the movie and it's background if it exists
+ //if (this.contains(movieBackground)) closeSplash();
+
+ if(button_search.selected)
+ {
+ if(commentsWindow.visible)
+ hasSearchOpenedWhileCommenting = true;
+
+ closeQuickStart();
+
+ commentsWindow.visible = false;
+ searchWindow.visible = true;
+ illustrationTabs.visible = false;
+ comboBox_topLevelCategories.enabled = false;
+ previousTopLevelCategoriesText = comboBox_topLevelCategories.text;
+ comboBox_topLevelCategories.text = "All";
+ }
+ else
+ {
+ searchWindow.visible = false;
+ comboBox_topLevelCategories.enabled = true;
+ comboBox_topLevelCategories.text = previousTopLevelCategoriesText;
+ }
+ }
+
+ private function searchWindow_submit(event:Event):void
+ {
+ toggleButtonBar_treeList.selectedIndex = 1;
+ objectList.showTreeView(false);
+ }
+
+ //--------------------------------------------------------------------------
+ // Shared wipe-window functionality and coordination
+ //--------------------------------------------------------------------------
+ private function wipedWindow_hide(event:FlexEvent):void
+ {
+ if(!hasSearchOpenedWhileCommenting)
+ {
+ illustrationTabs.visible = true;
+ button_search.selected = false;
+ comboBox_topLevelCategories.enabled = true;
+ comboBox_topLevelCategories.text = previousTopLevelCategoriesText;
+ }
+
+ hasSearchOpenedWhileCommenting = false;
+ }
+
+ //--------------------------------------------------------------------------
+ // Download window
+ //--------------------------------------------------------------------------
+ private function button_download_click(event:MouseEvent):void
+ {
+ if(objectList.selectedId > 0)
+ {
+ illustrationTabs.visible = false;
+
+ /*if (this.isPlugin && pluginTransferObject!=null)
+ {
+ var pluginPopup:PluginDownloadWindow = new PluginDownloadWindow();
+ pluginPopup.addEventListener(FlexEvent.REMOVE, downloadWindow_close);
+ PopUpManager.addPopUp(pluginPopup, this, true);
+ PopUpManager.centerPopUp(pluginPopup);
+ pluginPopup.download(selectedDownloadPath, pluginTransferObject.pluginDownloadPath, Config.LOCAL_OBJECTS_ROOT_PATH);
+ }
+ else {*/
+ var popup:DownloadWindow = new DownloadWindow();
+ popup.addEventListener(FlexEvent.REMOVE, downloadWindow_close);
+ PopUpManager.addPopUp(popup, this, true);
+ PopUpManager.centerPopUp(popup);
+ popup.download(selectedDownloadPath, Config.LOCAL_OBJECTS_ROOT_PATH);
+ /*}*/
+ }
+ }
+
+ private function button_browser_click(eveng:MouseEvent):void {
+ navigateToURL(new URLRequest(selectedIllustrationURL));
+ }
+
+ private function downloadWindow_close(event:FlexEvent):void
+ {
+ illustrationTabs.visible = true;
+ }
+
+ //--------------------------------------------------------------------------
+ // Plugin related
+ //--------------------------------------------------------------------------
+ // ----- ADDED THE REST OF THE SCRIPT... HS
+ /**
+ * Handle the Merapi communication from the plug-in
+ private function handleResponse(event:Event):void
+ {
+ var ev:ResultEvent = ResultEvent(event);
+ var msg:Message = Message(ev.result);
+ if (msg.type == "FindComponents") {
+ if (msg.data != null) {
+ var msgType:String = msg.type;
+ comps = objectData.getFilteredComponents(String(msg.data));
+
+ }
+ var m : Message = new Message();
+ m.type = "FindComponents";
+ m.data = comps;
+ bridge.sendMessage(m);
+ }
+ else if (msg.type == "SendPluginTO") {
+ pluginTransferObject = TDFPluginTransferObject(msg.data);
+ }
+ else if (msg.type == "Minimize") {
+ this.minimize();
+ }
+ else if (msg.type == "Dock") {
+ this.dock();
+ }
+ else if (msg.type == "Undock") {
+ // We need to figure out what the download path is from the returned message and set it
+ if (msg.data != null) {
+ pluginTransferObject = TDFPluginTransferObject(msg.data);
+ this.objectList_change(null); // Fire the navigation to the component double-clicked from plugin
+ }
+ this.undock(event);
+ }
+ else if (msg.type == "Exit") {
+ isPlugin = false;
+ onExiting(event);
+ }
+ }
+ **/
+
+
+ /**
+ * Prepare for docking
+ */
+ public function prepareForSystray(event:Event):void {
+ // Immediately send featured component list to plugin, if plugin invoked
+ //if (isPlugin) sendFeatured();
+
+ if (event!=null)
+ // Retrieve the image being used as the systray icon
+ dockImage = event.target.content.bitmapData;
+
+ // If this is Mac...
+ if (NativeApplication.supportsDockIcon)
+ {
+ setDockProperties();
+ DockIcon(NativeApplication.nativeApplication.icon).menu = createSystrayRootMenu();
+ }
+ else
+ {
+ setSystemTrayProperties();
+ SystemTrayIcon(NativeApplication.nativeApplication.icon).menu = createSystrayRootMenu();
+ }
+ // If we are using this independent of the plug-in, we want to undock it because it was opened in
+ // docked mode and non-visible so that when the plug-in opens it, it does not flash onto the screen.
+ if (!isPlugin){
+ this.undock(null);
+ }
+ else this.dock();
+ }
+
+ /**
+ * Create a menu that can be accessed from the systray
+ */
+ private function createSystrayRootMenu():NativeMenu{
+ var menu:NativeMenu = new NativeMenu();
+ var openNativeMenuItem:NativeMenuItem = new NativeMenuItem("Open");
+ var exitNativeMenuItem:NativeMenuItem = new NativeMenuItem("Exit");
+
+ openNativeMenuItem.addEventListener(Event.SELECT, undock);
+ exitNativeMenuItem.addEventListener(Event.SELECT, onExiting);
+
+ menu.addItem(openNativeMenuItem);
+ menu.addItem(exitNativeMenuItem);
+
+ return menu;
+ }
+
+ /**
+ * Add event listeners
+ */
+ private function setDockProperties():void {
+ //Listen to the display state changing of the window, so that we can catch the minimize and dock
+ stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, processMinimized); //Catch the minimize event
+ }
+ /**
+ * To be able to dock and undock we need to set some eventlisteners
+ */
+ private function setSystemTrayProperties():void {
+ SystemTrayIcon(NativeApplication.nativeApplication.icon).tooltip = "Tour de Flex";
+
+ SystemTrayIcon(NativeApplication.nativeApplication.icon).addEventListener(MouseEvent.CLICK, undock);
+ stage.nativeWindow.addEventListener(NativeWindowDisplayStateEvent.DISPLAY_STATE_CHANGING, processMinimized); //Catch the minimize event
+ }
+
+ /**
+ * Do the appropriate actions after the windows display state has changed.
+ * E.g. dock when the user clicks on minimize
+ *
+ */
+ private function processMinimized(displayStateEvent:NativeWindowDisplayStateEvent):void {
+ // prevent the minimize
+ if(displayStateEvent.afterDisplayState == NativeWindowDisplayState.MINIMIZED) {
+ displayStateEvent.preventDefault();
+
+ //Dock instead
+ dock();
+ }
+ }
+
+ /**
+ * Do our own 'minimize' by docking the application to the systray (showing the application icon in the systray)
+ */
+ public function dock():void {
+ // Hide the applcation
+ stage.nativeWindow.visible = false;
+
+ //Setting the bitmaps array will show the application icon in the systray
+ NativeApplication.nativeApplication.icon.bitmaps = [dockImage];
+
+ }
+
+ /**
+ * Show the application again and remove the application icon from the systray
+ *
+ */
+ public function undock(evt:Event):void {
+ // After setting the window to visible, make sure that the application is ordered to the front,
+ // else we'll still need to click on the application on the taskbar to make it visible
+ stage.nativeWindow.visible = true;
+ stage.nativeWindow.restore();
+ stage.nativeWindow.orderToFront();
+ stage.nativeWindow.activate();
+
+ // Clearing the bitmaps array also clears the applcation icon from the systray
+ NativeApplication.nativeApplication .icon.bitmaps = [];
+
+ // Force the application to the front with focus, then allow user to switch to other apps
+ if (isPlugin) {
+ this.alwaysInFront = true
+ this.activate();
+ this.alwaysInFront = false;
+ }
+ }
+
+ private function expandIllustration():void {
+ documentTabs.needHtmlHack = false;
+
+ if (expandMode == 0) {
+ sideBar.setStyle("resizeEffect", expandEffect);
+ sideBar.width = 0;
+ if (illustrationAutoExpanded)
+ {
+ expandMode = 3;
+ } else {
+ expandMode = 1;
+ }
+ } else if (expandMode == 1) {
+ docBox.setStyle("resizeEffect",expandEffect);
+ illBox.setStyle("resizeEffect",null);
+ sideBar.setStyle("resizeEffect", expandEffect);
+ vdivider.moveDivider(0,vdivider.height);
+ sideBar.width = 0;
+ expandMode=2;
+ } else if (expandMode == 2) {
+ docBox.setStyle("resizeEffect",null);
+ illBox.setStyle("resizeEffect",expandEffect);
+ vdivider.moveDivider(0, - (vdivider.height));
+ expandMode=3;
+ } else if (expandMode == 3) {
+ docBox.setStyle("resizeEffect",expandEffect);
+ illBox.setStyle("resizeEffect",null);
+ sideBar.width=230;
+ vdivider.moveDivider(0, + (vdivider.height/2));
+ expandMode=0;
+ }
+ }
+
+ //--------------------------------------------------------------------------
+ //--------------------------------------------------------------------------
+
+ ]]>
+ </mx:Script>
+
+ <!--
+ <mx:HTTPService id="HTTP_GetCommentsTotal" showBusyCursor="false" result="processGetCommentsTotal(event)" resultFormat="e4x" fault="processGetCommentsTotal_fault()" url="{Config.DATA_EXCHANGE_URL}" useProxy="false" method="POST">
+ <mx:request xmlns="">
+ <Request>GetCommentsTotal</Request>
+ <ObjectId>{objectList.selectedId}</ObjectId>
+ </mx:request>
+ </mx:HTTPService>
+ -->
+
+ <mx:HTTPService id="HTTP_logView" showBusyCursor="false" resultFormat="e4x" fault="HTTP_logView_fault(event)" url="{Config.DATA_EXCHANGE_URL}" useProxy="false" method="POST">
+ <mx:request xmlns="">
+ <Request>logView</Request>
+ <ObjectId>{objectList.selectedId}</ObjectId>
+ <ObjectName>{label_objectName.text}</ObjectName>
+ </mx:request>
+ </mx:HTTPService>
+
+ <mx:Resize id="expandEffect" duration="200" />
+ <mx:VBox width="100%" height="100%" verticalGap="0" styleName="mainWindow">
+ <components:ApplicationHeader id="applicationHeader" />
+ <mx:HDividedBox styleName="mainBackground" width="100%" height="100%" paddingBottom="0" paddingLeft="12" paddingRight="0" paddingTop="7">
+
+ <mx:VBox id="sideBar" styleName="outerDividedBoxes" width="245" minWidth="0" height="100%" horizontalScrollPolicy="off" >
+ <mx:HBox width="100%" paddingRight="6">
+ <mx:ToggleButtonBar width="60" id="toggleButtonBar_treeList" itemClick="toggleButtonBar_treeList_itemClick(event)" >
+ <mx:dataProvider>
+ <mx:Object id="toggle_tree" icon="@Embed('images/toggle_tree.png')" toolTip="View Tree" />
+ <mx:Object id="toggle_list" icon="@Embed('images/toggle_list.png')" toolTip="View List" />
+ </mx:dataProvider>
+ </mx:ToggleButtonBar>
+ <mx:HBox width="100%" horizontalAlign="right">
+ <mx:Button id="button_search" label="Search ยป Filter" toggle="true" click="button_search_click(event)" labelPlacement="left" styleName="searchButton"/>
+ </mx:HBox>
+ </mx:HBox>
+ <mx:ComboBox id="comboBox_topLevelCategories" height="0" visible="false" rowCount="10" width="97%" dataProvider="{objectData.topLevelCategoriesXml}" change="comboBox_topLevelCategories_change(event)" />
+ <components:ObjectList id="objectList" treeDataProvider="{objectData.treeXml}" listDataProvider="{objectData.listXml}" change="objectList_change(event)" sortChange="objectList_sortChange(event)"/>
+ </mx:VBox>
+
+ <mx:Canvas id="box_illustrationsAndDocumentsOuterContainer" width="100%" height="100%">
+ <mx:VBox id="box_illustrationsAndDocuments" styleName="outerDividedBoxes" width="100%" height="100%" horizontalAlign="right" paddingRight="30" >
+ <mx:HBox id="box_illustrationControls" width="100%">
+ <mx:Label id="label_objectName" fontSize="10" fontWeight="bold" />
+ <mx:HBox width="100%" horizontalAlign="right" verticalAlign="middle">
+ <mx:LinkButton id="button_comments" click="button_comments_click(event)" label="Comments" fontSize="9" enabled="false" styleName="commentButton" />
+ <mx:LinkButton id="button_download" click="button_download_click(event)" label="Download" fontSize="9" enabled="false" styleName="downloadButton" />
+ <mx:LinkButton id="button_browser" click="button_browser_click(event)" label="Open in Browser" fontSize="9" enabled="false" styleName="buttonBrowser" />
+ <mx:LinkButton id="button_expand" click="expandIllustration()" label="Toggle Layout" fontSize="9" enabled="false" styleName="maximizeButton" />
+ </mx:HBox>
+ </mx:HBox>
+ <mx:VDividedBox id="vdivider" width="100%" height="100%">
+ <mx:VBox id="illBox" styleName="illustrationsBox" width="100%" height="100%" >
+ <components:IllustrationTabs id="illustrationTabs" change="illustrationTabs_change(event)" />
+ </mx:VBox>
+ <mx:VBox id="docBox" styleName="illustrationsBox" width="100%" height="100%">
+ <components:DocumentTabs id="documentTabs"/>
+ </mx:VBox>
+ </mx:VDividedBox>
+ </mx:VBox>
+ <mx:VBox width="100%" height="100%" paddingBottom="5" paddingRight="10">
+ <components:QuickStartWindow id="quickStartWindow" close="closeQuickStart(event)" width="100%" height="100%" />
+ </mx:VBox>
+ </mx:Canvas>
+ </mx:HDividedBox>
+
+ <components:ApplicationFooter />
+
+ </mx:VBox>
+
+ <!--<mx:Box id="movieBackground" backgroundColor="black" x="{splashWindow.x}" y="{splashWindow.y}" width="{splashWindow.width}" height="{splashWindow.height}"/>-->
+
+ <components:CommentsWindow id="commentsWindow" visible="false" hideComplete="wipedWindow_hide(event)" x="{box_illustrationsAndDocuments.x}" y="{box_illustrationsAndDocuments.y + applicationHeader.height}" width="{box_illustrationsAndDocuments.width}" height="{box_illustrationsAndDocuments.height}"/>
+ <components:SearchWindow id="searchWindow" visible="false" searchSubmit="searchWindow_submit(event)" objectData="{objectData}" searchTagsData="{objectData.searchTags}" hideComplete="wipedWindow_hide(event)" x="{box_illustrationsAndDocumentsOuterContainer.x}" y="{box_illustrationsAndDocumentsOuterContainer.y + applicationHeader.height}" width="{box_illustrationsAndDocumentsOuterContainer.width}" height="{box_illustrationsAndDocumentsOuterContainer.height}"/>
+</mx:WindowedApplication>
http://git-wip-us.apache.org/repos/asf/flex-utilities/blob/3dc107b9/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as b/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as
new file mode 100644
index 0000000..20a3b38
--- /dev/null
+++ b/TourDeFlex/TourDeFlex/src/classes/ApplicationUpdaterManager.as
@@ -0,0 +1,55 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+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/3dc107b9/TourDeFlex/TourDeFlex/src/classes/Document.as
----------------------------------------------------------------------
diff --git a/TourDeFlex/TourDeFlex/src/classes/Document.as b/TourDeFlex/TourDeFlex/src/classes/Document.as
new file mode 100644
index 0000000..909ae65
--- /dev/null
+++ b/TourDeFlex/TourDeFlex/src/classes/Document.as
@@ -0,0 +1,35 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+// Licensed to the Apache Software Foundation (ASF) under one or more
+// contributor license agreements. See the NOTICE file distributed with
+// this work for additional information regarding copyright ownership.
+// The ASF licenses this file to You under the Apache License, Version 2.0
+// (the "License"); you may not use this file except in compliance with
+// the License. You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+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